Imported Upstream version 69.1 upstream/69.1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Thu, 9 Dec 2021 23:43:37 +0000 (08:43 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Thu, 9 Dec 2021 23:43:37 +0000 (08:43 +0900)
945 files changed:
APIChangeReport.html
APIChangeReport.md
readme.html
source/Doxyfile.in
source/common/bytestriebuilder.cpp
source/common/charstr.cpp
source/common/charstr.h
source/common/cmemory.h
source/common/common.vcxproj
source/common/common_uwp.vcxproj
source/common/dictbe.cpp
source/common/edits.cpp
source/common/filteredbrk.cpp
source/common/hash.h
source/common/localematcher.cpp
source/common/localeprioritylist.cpp
source/common/locdispnames.cpp
source/common/locid.cpp
source/common/loclikelysubtags.cpp
source/common/norm2allmodes.h
source/common/normalizer2impl.cpp
source/common/normalizer2impl.h
source/common/pluralmap.h
source/common/putil.cpp
source/common/putilimp.h
source/common/rbbi.cpp
source/common/rbbi_cache.cpp
source/common/rbbiscan.cpp
source/common/rbbitblb.cpp
source/common/resource.h
source/common/restrace.cpp
source/common/servnotf.h
source/common/ubrk.cpp
source/common/ucase.cpp
source/common/uchar.cpp
source/common/ucnv2022.cpp
source/common/ucnv_bld.cpp
source/common/ucnv_err.cpp
source/common/ucnv_lmb.cpp
source/common/ucnv_u7.cpp
source/common/ucnvisci.cpp
source/common/ucurr.cpp
source/common/uhash.cpp
source/common/uhash.h
source/common/uloc.cpp
source/common/uloc_keytype.cpp
source/common/uloc_tag.cpp
source/common/ulocimp.h
source/common/unicode/bytestream.h
source/common/unicode/bytestrie.h
source/common/unicode/bytestriebuilder.h
source/common/unicode/docmain.h
source/common/unicode/icuplug.h
source/common/unicode/localematcher.h
source/common/unicode/locid.h
source/common/unicode/normalizer2.h
source/common/unicode/platform.h
source/common/unicode/stringpiece.h
source/common/unicode/ubrk.h
source/common/unicode/ucnv.h
source/common/unicode/ucnvsel.h
source/common/unicode/unifilt.h
source/common/unicode/uniset.h
source/common/unicode/unistr.h
source/common/unicode/urename.h
source/common/unicode/uset.h
source/common/unicode/ushape.h
source/common/unicode/utrace.h
source/common/unicode/uvernum.h
source/common/uniset.cpp
source/common/uniset_props.cpp
source/common/unisetspan.cpp
source/common/uprops.h
source/common/uresbund.cpp
source/common/uresdata.cpp
source/common/uresimp.h
source/common/uset.cpp
source/common/usprep.cpp
source/common/ustr_wcs.cpp
source/common/utext.cpp
source/common/util.h
source/common/utracimp.h
source/common/uvector.cpp
source/common/wintz.cpp
source/config/mh-mingw
source/config/mh-mingw64
source/configure
source/configure.ac
source/data/brkitr/LOCALE_DEPS.json
source/data/brkitr/root.txt
source/data/build.xml
source/data/cldr-icu-readme.txt
source/data/coll/LOCALE_DEPS.json
source/data/coll/af.txt
source/data/coll/am.txt
source/data/coll/ar.txt
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/br.txt
source/data/coll/bs.txt
source/data/coll/bs_Cyrl.txt
source/data/coll/ca.txt
source/data/coll/ceb.txt
source/data/coll/chr.txt
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/ff_Adlm.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/ku.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/nb_NO.txt
source/data/coll/ne.txt
source/data/coll/nn.txt
source/data/coll/no.txt
source/data/coll/no_NO.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/tk.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/wo.txt
source/data/coll/yi.txt
source/data/coll/yo.txt
source/data/coll/zh.txt
source/data/curr/LOCALE_DEPS.json
source/data/curr/af.txt
source/data/curr/agq.txt
source/data/curr/am.txt
source/data/curr/ar.txt
source/data/curr/as.txt
source/data/curr/asa.txt
source/data/curr/ast.txt
source/data/curr/az.txt
source/data/curr/bas.txt
source/data/curr/be.txt
source/data/curr/bez.txt
source/data/curr/bg.txt
source/data/curr/bm.txt
source/data/curr/bn.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/ca.txt
source/data/curr/ccp.txt
source/data/curr/ce.txt
source/data/curr/ceb.txt
source/data/curr/cgg.txt
source/data/curr/chr.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/dje.txt
source/data/curr/dsb.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/et.txt
source/data/curr/eu.txt
source/data/curr/ewo.txt
source/data/curr/fa.txt
source/data/curr/ff.txt
source/data/curr/fi.txt
source/data/curr/fil.txt
source/data/curr/fo.txt
source/data/curr/fr.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/ha.txt
source/data/curr/he.txt
source/data/curr/hi.txt
source/data/curr/hr.txt
source/data/curr/hsb.txt
source/data/curr/hu.txt
source/data/curr/hy.txt
source/data/curr/ia.txt
source/data/curr/id.txt
source/data/curr/ig.txt
source/data/curr/is.txt
source/data/curr/it.txt
source/data/curr/ja.txt
source/data/curr/jmc.txt
source/data/curr/jv.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/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/ky.txt
source/data/curr/lag.txt
source/data/curr/lb.txt
source/data/curr/lg.txt
source/data/curr/ln.txt
source/data/curr/lo.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/mer.txt
source/data/curr/mfe.txt
source/data/curr/mg.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/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/nb_NO.txt [deleted file]
source/data/curr/nd.txt
source/data/curr/ne.txt
source/data/curr/nl.txt
source/data/curr/nmg.txt
source/data/curr/nn.txt
source/data/curr/no.txt
source/data/curr/no_NO.txt
source/data/curr/nyn.txt
source/data/curr/or.txt
source/data/curr/pa.txt
source/data/curr/pcm.txt
source/data/curr/pl.txt
source/data/curr/ps.txt
source/data/curr/pt.txt
source/data/curr/pt_PT.txt
source/data/curr/qu.txt
source/data/curr/rm.txt
source/data/curr/ro.txt
source/data/curr/rof.txt
source/data/curr/root.txt
source/data/curr/ru.txt
source/data/curr/rwk.txt
source/data/curr/saq.txt
source/data/curr/sbp.txt
source/data/curr/sd.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/sk.txt
source/data/curr/sl.txt
source/data/curr/sn.txt
source/data/curr/so.txt
source/data/curr/sq.txt
source/data/curr/sr.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_KE.txt
source/data/curr/ta.txt
source/data/curr/te.txt
source/data/curr/teo.txt
source/data/curr/th.txt
source/data/curr/tk.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/uz.txt
source/data/curr/uz_Cyrl.txt
source/data/curr/vai_Latn.txt
source/data/curr/vi.txt
source/data/curr/vun.txt
source/data/curr/wo.txt
source/data/curr/xog.txt
source/data/curr/yo.txt
source/data/curr/yo_BJ.txt
source/data/curr/yue.txt
source/data/curr/yue_Hans.txt
source/data/curr/zgh.txt
source/data/curr/zh.txt
source/data/curr/zh_Hant.txt
source/data/curr/zh_Hant_HK.txt
source/data/curr/zu.txt
source/data/lang/LOCALE_DEPS.json
source/data/lang/af.txt
source/data/lang/am.txt
source/data/lang/ar.txt
source/data/lang/as.txt
source/data/lang/az.txt
source/data/lang/az_Cyrl.txt
source/data/lang/be.txt
source/data/lang/bg.txt
source/data/lang/bn.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/ca.txt
source/data/lang/ccp.txt
source/data/lang/ce.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/de.txt
source/data/lang/el.txt
source/data/lang/en.txt
source/data/lang/es.txt
source/data/lang/eu.txt
source/data/lang/fa.txt
source/data/lang/fi.txt
source/data/lang/fil.txt
source/data/lang/fr.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/he.txt
source/data/lang/hi.txt
source/data/lang/hr.txt
source/data/lang/hu.txt
source/data/lang/hy.txt
source/data/lang/ia.txt
source/data/lang/id.txt
source/data/lang/is.txt
source/data/lang/ja.txt
source/data/lang/ka.txt
source/data/lang/kk.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/ky.txt
source/data/lang/lb.txt
source/data/lang/lo.txt
source/data/lang/lt.txt
source/data/lang/lv.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/my.txt
source/data/lang/nb.txt
source/data/lang/nb_NO.txt [deleted file]
source/data/lang/ne.txt
source/data/lang/nl.txt
source/data/lang/nn.txt
source/data/lang/no.txt
source/data/lang/no_NO.txt
source/data/lang/or.txt
source/data/lang/pa.txt
source/data/lang/pl.txt
source/data/lang/ps.txt
source/data/lang/pt.txt
source/data/lang/ro.txt
source/data/lang/root.txt
source/data/lang/ru.txt
source/data/lang/sd.txt
source/data/lang/si.txt
source/data/lang/sk.txt
source/data/lang/sl.txt
source/data/lang/smn.txt
source/data/lang/so.txt
source/data/lang/sq.txt
source/data/lang/sr.txt
source/data/lang/sr_Latn.txt
source/data/lang/sv.txt
source/data/lang/sw.txt
source/data/lang/ta.txt
source/data/lang/te.txt
source/data/lang/th.txt
source/data/lang/tk.txt
source/data/lang/to.txt
source/data/lang/tr.txt
source/data/lang/ug.txt
source/data/lang/uk.txt
source/data/lang/ur.txt
source/data/lang/uz.txt
source/data/lang/vi.txt
source/data/lang/yo.txt
source/data/lang/yo_BJ.txt
source/data/lang/yue.txt
source/data/lang/yue_Hans.txt
source/data/lang/zh.txt
source/data/lang/zh_Hant.txt
source/data/lang/zu.txt
source/data/locales/LOCALE_DEPS.json
source/data/locales/be.txt
source/data/locales/da.txt
source/data/locales/de.txt
source/data/locales/dz.txt
source/data/locales/en_IN.txt
source/data/locales/es.txt
source/data/locales/es_419.txt
source/data/locales/es_GT.txt
source/data/locales/es_US.txt
source/data/locales/fr.txt
source/data/locales/gd.txt
source/data/locales/it.txt
source/data/locales/ja.txt
source/data/locales/ko.txt
source/data/locales/mk.txt
source/data/locales/my.txt
source/data/locales/nb.txt
source/data/locales/nl.txt
source/data/locales/nn.txt
source/data/locales/no.txt
source/data/locales/no_NO.txt
source/data/locales/pl.txt
source/data/locales/pt.txt
source/data/locales/pt_PT.txt
source/data/locales/root.txt
source/data/locales/ru.txt
source/data/locales/sd_Deva.txt
source/data/locales/sk.txt
source/data/locales/sv.txt
source/data/locales/ug.txt
source/data/locales/yo.txt
source/data/locales/zh.txt
source/data/locales/zh_Hans_HK.txt
source/data/locales/zh_Hans_MO.txt
source/data/locales/zh_Hans_SG.txt
source/data/makedata.mak
source/data/misc/dayPeriods.txt
source/data/misc/grammaticalFeatures.txt [new file with mode: 0644]
source/data/misc/icuver.txt
source/data/misc/langInfo.txt
source/data/misc/likelySubtags.txt
source/data/misc/metaZones.txt
source/data/misc/metadata.txt
source/data/misc/pluralRanges.txt
source/data/misc/plurals.txt
source/data/misc/supplementalData.txt
source/data/misc/units.txt
source/data/misc/windowsZones.txt
source/data/misc/zoneinfo64.txt
source/data/rbnf/LOCALE_DEPS.json
source/data/rbnf/de.txt
source/data/rbnf/de_CH.txt
source/data/rbnf/fi.txt
source/data/rbnf/fr.txt
source/data/rbnf/fr_BE.txt
source/data/rbnf/fr_CH.txt
source/data/rbnf/it.txt
source/data/rbnf/nb.txt
source/data/rbnf/ne.txt [new file with mode: 0644]
source/data/rbnf/nn.txt
source/data/rbnf/no.txt
source/data/rbnf/pt.txt
source/data/rbnf/pt_PT.txt
source/data/rbnf/root.txt
source/data/region/LOCALE_DEPS.json
source/data/region/en.txt
source/data/region/en_AU.txt
source/data/region/nb.txt
source/data/region/nb_NO.txt [deleted file]
source/data/region/nn.txt
source/data/region/no.txt
source/data/region/no_NO.txt
source/data/region/root.txt
source/data/translit/Latin_ASCII.txt
source/data/unidata/ppucd.txt
source/data/unit/LOCALE_DEPS.json
source/data/unit/af.txt
source/data/unit/am.txt
source/data/unit/ar.txt
source/data/unit/as.txt
source/data/unit/ast.txt
source/data/unit/az.txt
source/data/unit/be.txt
source/data/unit/bg.txt
source/data/unit/bn.txt
source/data/unit/br.txt
source/data/unit/bs.txt
source/data/unit/ca.txt
source/data/unit/ccp.txt
source/data/unit/ceb.txt
source/data/unit/chr.txt
source/data/unit/cs.txt
source/data/unit/cy.txt
source/data/unit/da.txt
source/data/unit/de.txt
source/data/unit/de_CH.txt
source/data/unit/dsb.txt
source/data/unit/el.txt
source/data/unit/en.txt
source/data/unit/en_001.txt
source/data/unit/en_AU.txt
source/data/unit/en_CA.txt
source/data/unit/es.txt
source/data/unit/es_419.txt
source/data/unit/es_MX.txt
source/data/unit/es_US.txt
source/data/unit/et.txt
source/data/unit/eu.txt
source/data/unit/fa.txt
source/data/unit/ff_Adlm.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/ga.txt
source/data/unit/gd.txt
source/data/unit/gl.txt
source/data/unit/gu.txt
source/data/unit/ha.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/ia.txt
source/data/unit/id.txt
source/data/unit/is.txt
source/data/unit/it.txt
source/data/unit/ja.txt
source/data/unit/jv.txt
source/data/unit/ka.txt
source/data/unit/kea.txt
source/data/unit/kk.txt
source/data/unit/km.txt
source/data/unit/kn.txt
source/data/unit/ko.txt
source/data/unit/kok.txt
source/data/unit/ky.txt
source/data/unit/lb.txt
source/data/unit/lo.txt
source/data/unit/lt.txt
source/data/unit/lv.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/my.txt
source/data/unit/mzn.txt
source/data/unit/nb.txt
source/data/unit/nb_NO.txt [deleted file]
source/data/unit/ne.txt
source/data/unit/nl.txt
source/data/unit/nn.txt
source/data/unit/no.txt
source/data/unit/no_NO.txt
source/data/unit/or.txt
source/data/unit/pa.txt
source/data/unit/pcm.txt
source/data/unit/pl.txt
source/data/unit/ps.txt
source/data/unit/pt.txt
source/data/unit/pt_PT.txt
source/data/unit/qu.txt
source/data/unit/ro.txt
source/data/unit/root.txt
source/data/unit/ru.txt
source/data/unit/sd.txt
source/data/unit/si.txt
source/data/unit/sk.txt
source/data/unit/sl.txt
source/data/unit/so.txt
source/data/unit/sq.txt
source/data/unit/sr.txt
source/data/unit/sr_Cyrl_BA.txt
source/data/unit/sr_Latn.txt
source/data/unit/sr_Latn_BA.txt
source/data/unit/sv.txt
source/data/unit/sw.txt
source/data/unit/ta.txt
source/data/unit/te.txt
source/data/unit/th.txt
source/data/unit/tk.txt
source/data/unit/to.txt
source/data/unit/tr.txt
source/data/unit/uk.txt
source/data/unit/ur.txt
source/data/unit/uz.txt
source/data/unit/vi.txt
source/data/unit/yo.txt
source/data/unit/yo_BJ.txt
source/data/unit/yue.txt
source/data/unit/yue_Hans.txt
source/data/unit/zh.txt
source/data/unit/zh_Hant.txt
source/data/unit/zh_Hant_HK.txt
source/data/unit/zu.txt
source/data/xml/rbnf/nn.xml [deleted file]
source/data/xml/rbnf/no.xml [moved from source/data/xml/rbnf/nb.xml with 93% similarity]
source/data/zone/LOCALE_DEPS.json
source/data/zone/hi.txt
source/data/zone/nb.txt
source/data/zone/nb_NO.txt [deleted file]
source/data/zone/nn.txt
source/data/zone/no.txt
source/data/zone/no_NO.txt
source/data/zone/root.txt
source/data/zone/zh.txt
source/data/zone/zh_Hant.txt
source/data/zone/zh_Hant_HK.txt
source/extra/uconv/resources/root.txt
source/i18n/basictz.cpp
source/i18n/calendar.cpp
source/i18n/collationbuilder.cpp
source/i18n/collationdatabuilder.cpp
source/i18n/cpdtrans.cpp
source/i18n/csrmbcs.cpp
source/i18n/csrucode.cpp
source/i18n/csrutf8.cpp
source/i18n/decContext.cpp
source/i18n/decNumber.cpp
source/i18n/decNumberLocal.h
source/i18n/double-conversion-bignum-dtoa.cpp
source/i18n/double-conversion-double-to-string.cpp
source/i18n/double-conversion-double-to-string.h
source/i18n/double-conversion-string-to-double.cpp
source/i18n/double-conversion-strtod.cpp
source/i18n/double-conversion-strtod.h
source/i18n/double-conversion-utils.h
source/i18n/dtfmtsym.cpp
source/i18n/dtitvfmt.cpp
source/i18n/formattedval_impl.h
source/i18n/formattedval_sbimpl.cpp
source/i18n/gregocal.cpp
source/i18n/i18n.vcxproj
source/i18n/i18n_uwp.vcxproj
source/i18n/indiancal.h
source/i18n/islamcal.h
source/i18n/listformatter.cpp
source/i18n/measfmt.cpp
source/i18n/measunit.cpp
source/i18n/measunit_extra.cpp
source/i18n/measunit_impl.h
source/i18n/msgfmt.cpp
source/i18n/name2uni.cpp
source/i18n/nfrs.cpp
source/i18n/number_compact.cpp
source/i18n/number_compact.h
source/i18n/number_decimalquantity.cpp
source/i18n/number_decimfmtprops.h
source/i18n/number_fluent.cpp
source/i18n/number_formatimpl.cpp
source/i18n/number_longnames.cpp
source/i18n/number_longnames.h
source/i18n/number_microprops.h
source/i18n/number_multiplier.cpp
source/i18n/number_output.cpp
source/i18n/number_patternstring.cpp
source/i18n/number_rounding.cpp
source/i18n/number_roundingutils.h
source/i18n/number_skeletons.cpp
source/i18n/number_skeletons.h
source/i18n/number_usageprefs.cpp
source/i18n/number_usageprefs.h
source/i18n/number_utypes.h
source/i18n/numfmt.cpp
source/i18n/numrange_fluent.cpp
source/i18n/numrange_impl.cpp
source/i18n/olsontz.cpp
source/i18n/olsontz.h
source/i18n/plurrule.cpp
source/i18n/plurrule_impl.h
source/i18n/rbt.cpp
source/i18n/rbt.h
source/i18n/rbt_pars.cpp
source/i18n/rbt_pars.h
source/i18n/rbtz.cpp
source/i18n/regexcmp.cpp
source/i18n/reldatefmt.cpp
source/i18n/reldtfmt.cpp
source/i18n/rematch.cpp
source/i18n/scriptset.h
source/i18n/simpletz.cpp
source/i18n/smpdtfmt.cpp
source/i18n/sortkey.cpp
source/i18n/standardplural.cpp
source/i18n/standardplural.h
source/i18n/stsearch.cpp
source/i18n/timezone.cpp
source/i18n/translit.cpp
source/i18n/transreg.h
source/i18n/tzfmt.cpp
source/i18n/ucal.cpp
source/i18n/uni2name.cpp
source/i18n/unicode/basictz.h
source/i18n/unicode/calendar.h
source/i18n/unicode/datefmt.h
source/i18n/unicode/dcfmtsym.h
source/i18n/unicode/dtptngen.h
source/i18n/unicode/listformatter.h
source/i18n/unicode/measfmt.h
source/i18n/unicode/measunit.h
source/i18n/unicode/msgfmt.h
source/i18n/unicode/numberformatter.h
source/i18n/unicode/numberrangeformatter.h
source/i18n/unicode/rbnf.h
source/i18n/unicode/rbtz.h
source/i18n/unicode/simpletz.h
source/i18n/unicode/tblcoll.h
source/i18n/unicode/translit.h
source/i18n/unicode/tznames.h
source/i18n/unicode/tzrule.h
source/i18n/unicode/ucal.h
source/i18n/unicode/ucol.h
source/i18n/unicode/udat.h
source/i18n/unicode/udateintervalformat.h
source/i18n/unicode/udatpg.h
source/i18n/unicode/uformattedvalue.h
source/i18n/unicode/unum.h
source/i18n/unicode/unumberformatter.h
source/i18n/unicode/unumberrangeformatter.h
source/i18n/unicode/uspoof.h
source/i18n/unicode/vtzone.h
source/i18n/units_complexconverter.cpp
source/i18n/units_complexconverter.h
source/i18n/units_converter.cpp
source/i18n/units_converter.h
source/i18n/units_data.cpp
source/i18n/units_data.h
source/i18n/units_router.cpp
source/i18n/units_router.h
source/i18n/usearch.cpp
source/i18n/uspoof_conf.cpp
source/i18n/uspoof_impl.h
source/i18n/vtzone.cpp
source/i18n/vzone.h
source/i18n/windtfmt.cpp
source/i18n/winnmfmt.cpp
source/i18n/wintzimpl.cpp
source/i18n/zonemeta.h
source/io/io.vcxproj
source/io/unicode/ustdio.h
source/layoutex/layout/RunArrays.h
source/layoutex/layout/playout.h
source/layoutex/layout/plruns.h
source/layoutex/layoutex.vcxproj
source/layoutex/plruns.cpp
source/stubdata/stubdata.vcxproj
source/test/cintltst/capitst.c
source/test/cintltst/cbiapts.c
source/test/cintltst/ccaltst.c
source/test/cintltst/cformtst.h
source/test/cintltst/chashtst.c
source/test/cintltst/cintltst.c
source/test/cintltst/cloctst.c
source/test/cintltst/cloctst.h
source/test/cintltst/cmsccoll.c
source/test/cintltst/cnmdptst.c
source/test/cintltst/cnumtst.c
source/test/cintltst/creststn.c
source/test/cintltst/nucnvtst.c
source/test/cintltst/unumberrangeformattertst.c
source/test/cintltst/usettest.c
source/test/depstest/dependencies.txt
source/test/fuzzer/collator_rulebased_ICU-21041.fuzz [new file with mode: 0644]
source/test/hdrtst/Makefile.in
source/test/intltest/apicoll.cpp
source/test/intltest/bytestrietest.cpp
source/test/intltest/collationtest.cpp
source/test/intltest/dcfmapts.cpp
source/test/intltest/dtifmtts.cpp
source/test/intltest/dtifmtts.h
source/test/intltest/formattedvaluetest.cpp
source/test/intltest/intltest.cpp
source/test/intltest/itrbnf.cpp
source/test/intltest/itrbnf.h
source/test/intltest/listformattertest.cpp
source/test/intltest/listformattertest.h
source/test/intltest/localebuildertest.cpp
source/test/intltest/localematchertest.cpp
source/test/intltest/locnmtst.cpp
source/test/intltest/loctest.cpp
source/test/intltest/measfmttest.cpp
source/test/intltest/normconf.cpp
source/test/intltest/numbertest.h
source/test/intltest/numbertest_api.cpp
source/test/intltest/numbertest_decimalquantity.cpp
source/test/intltest/numbertest_range.cpp
source/test/intltest/numbertest_skeletons.cpp
source/test/intltest/numfmtst.cpp
source/test/intltest/numfmtst.h
source/test/intltest/plurults.cpp
source/test/intltest/plurults.h
source/test/intltest/rbbiapts.cpp
source/test/intltest/rbbiapts.h
source/test/intltest/rbbitst.cpp
source/test/intltest/rbbitst.h
source/test/intltest/regcoll.cpp
source/test/intltest/regcoll.h
source/test/intltest/strtest.cpp
source/test/intltest/strtest.h
source/test/intltest/tfsmalls.cpp
source/test/intltest/tmsgfmt.cpp
source/test/intltest/tmsgfmt.h
source/test/intltest/tsdtfmsy.cpp
source/test/intltest/tstnorm.cpp
source/test/intltest/tstnorm.h
source/test/intltest/tzfmttst.cpp
source/test/intltest/tzfmttst.h
source/test/intltest/tzoffloc.cpp
source/test/intltest/tztest.cpp
source/test/intltest/units_data_test.cpp
source/test/intltest/units_test.cpp
source/test/intltest/usettest.cpp
source/test/intltest/usettest.h
source/test/letest/PortableFontInstance.cpp
source/test/letest/SimpleFontInstance.cpp
source/test/letest/cletest.c
source/test/letest/cletest.sln
source/test/letest/cmaps.cpp
source/test/letest/gendata.cpp
source/test/letest/gendata.sln
source/test/letest/letest.cpp
source/test/letest/letest.sln
source/test/letest/xmlreader.cpp
source/test/perf/normperf/NormPerf.pl
source/test/perf/normperf/NormPerf_r.pl
source/test/perf/perldriver/Output.pm
source/test/perf/ubrkperf/UBrkPerf_r.pl
source/test/perf/ustrperf/StringPerf.pl
source/test/perf/ustrperf/StringPerf_r.pl
source/test/testdata/cldr/units/unitPreferencesTest.txt
source/test/testdata/cldr/units/unitsTest.txt
source/test/testdata/localeCanonicalization.txt
source/test/testdata/localeMatcherTest.txt
source/test/testdata/numberpermutationtest.txt
source/test/testdata/rbbitst.txt
source/test/testdata/regextst.txt
source/test/testdata/root.txt
source/test/testdata/structLocale.txt
source/tools/ctestfw/ctestfw.vcxproj
source/tools/ctestfw/uperf.cpp
source/tools/gencnval/gencnval.c
source/tools/gennorm2/extradata.cpp
source/tools/genrb/parse.cpp
source/tools/genrb/prscmnts.cpp
source/tools/genrb/reslist.cpp
source/tools/genrb/reslist.h
source/tools/genren/README
source/tools/toolutil/toolutil.vcxproj
source/tools/toolutil/ucbuf.cpp
source/tools/toolutil/ucbuf.h
source/tools/toolutil/xmlparser.cpp
source/tools/tzcode/tz2icu.h
source/tools/tzcode/zic.c

index dd8b2ad..dfba070 100644 (file)
@@ -5,31 +5,31 @@
        -->\r
 <head>\r
 <META http-equiv="Content-Type" content="text/html; charset=utf-8">\r
-<title>ICU4C API Comparison: ICU 67 with ICU 68</title>\r
+<title>ICU4C API Comparison: ICU 68 (update #1: 68.2) with ICU 69</title>\r
 <link type="text/css" href="icu4c.css" rel="stylesheet">\r
 </head>\r
 <body>\r
 <a name="#_top"></a>\r
-<h1>ICU4C API Comparison: ICU 67 with ICU 68</h1>\r
+<h1>ICU4C API Comparison: ICU 68 (update #1: 68.2) with ICU 69</h1>\r
 <div id="toc">\r
 <ul>\r
 <li>\r
-<a href="#removed">Removed from ICU 67</a>\r
+<a href="#removed">Removed from ICU 68</a>\r
 </li>\r
 <li>\r
-<a href="#deprecated">Deprecated or Obsoleted in ICU 68</a>\r
+<a href="#deprecated">Deprecated or Obsoleted in ICU 69</a>\r
 </li>\r
 <li>\r
-<a href="#changed">Changed in  ICU 68</a>\r
+<a href="#changed">Changed in  ICU 69</a>\r
 </li>\r
 <li>\r
-<a href="#promoted">Promoted to stable in ICU 68</a>\r
+<a href="#promoted">Promoted to stable in ICU 69</a>\r
 </li>\r
 <li>\r
-<a href="#added">Added in ICU 68</a>\r
+<a href="#added">Added in ICU 69</a>\r
 </li>\r
 <li>\r
-<a href="#other">Other existing drafts in ICU 68</a>\r
+<a href="#other">Other existing drafts in ICU 69</a>\r
 </li>\r
 <li>\r
 <a href="#simplifications">Signature Simplifications</a>\r
 <hr>\r
 </div>\r
 <a name="removed"></a>\r
-<h2>Removed from ICU 67</h2>\r
+<h2>Removed from ICU 68</h2>\r
 <table BORDER="1" class="genTable">\r
 <THEAD>\r
 <tr>\r
-<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>\r
+<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>\r
 </tr>\r
 </THEAD>\r
 <tr class="row1">\r
-<td class="file">fmtable.h</td><td class="proto">const UFormattable* icu::Formattable::toUFormattable()</td><td class="stabchange">Stable<br>ICU 52</td><td>(missing)<br>\r
+<td class="file">listformatter.h</td><td class="proto"><tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, const char*, UErrorCode&amp;)</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto">LocalArray&lt;MeasureUnit&gt; icu::MeasureUnit::splitToSingleUnits(int32_t&amp;, UErrorCode&amp;) const</td><td class="">Internal<br>ICU 67</td><td>(missing)<br>\r
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&amp;) const</td><td class="">Draft<br>ICU 67</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getIndex() const</td><td class="">Internal</td><td>(missing)<br>\r
+<td class="file">measunit.h</td><td class="proto">UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 67</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::resolveUnitPerUnit(const MeasureUnit&amp;, const MeasureUnit&amp;, bool*)</td><td class="">Internal</td><td>(missing)<br>\r
+<td class="file">numberformatter.h</td><td class="proto">Usage&amp; icu::number::impl::Usage::operator=(Usage&amp;&amp;)</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> int32_t icu::MeasureUnit::getIndexCount()</td><td class="">Internal</td><td>(missing)<br>\r
+<td class="file">numberformatter.h</td><td class="proto">Usage&amp; icu::number::impl::Usage::operator=(const Usage&amp;)</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> int32_t icu::MeasureUnit::internalGetIndexForTypeAndSubtype(const char*, const char*)</td><td class="">Internal</td><td>(missing)<br>\r
+<td class="file">numberformatter.h</td><td class="proto">bool icu::number::impl::Usage::isSet() const</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">nounit.h</td><td class="proto">UClassID icu::NoUnit::getDynamicClassID() const</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>\r
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::Usage(Usage&amp;&amp;)</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">nounit.h</td><td class="proto">icu::NoUnit::NoUnit(const NoUnit&amp;)</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>\r
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::Usage(const Usage&amp;)</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">nounit.h</td><td class="proto">icu::NoUnit::~NoUnit()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>\r
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::~Usage()</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::base()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>\r
+<td class="file">numberformatter.h</td><td class="proto">int16_t icu::number::impl::Usage::length() const</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::percent()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>\r
+<td class="file">numberformatter.h</td><td class="proto">void icu::number::impl::Usage::set(StringPiece)</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::permille()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>\r
+<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const</td><td class="">Deprecated<br>ICU 68</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> UClassID icu::NoUnit::getStaticClassID()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>\r
+<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const</td><td class="">Deprecated<br>ICU 68</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">nounit.h</td><td class="proto">void* icu::NoUnit::clone() const</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>\r
+<td class="file">rbtz.h</td><td class="proto">void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, int32_t, int32_t, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">uniset.h</td><td class="proto">const USet* icu::UnicodeSet::toUSet()</td><td class="stabchange">Stable<br>ICU 4.2</td><td>(missing)<br>\r
+<td class="file">simpletz.h</td><td class="proto">void icu::SimpleTimeZone::getOffsetFromLocal(UDate, int32_t, int32_t, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">Internal</td><td>(missing)<br>\r
 <span class=""><span></span></span></td>\r
 </tr>\r
 </table>\r
 <a href="#_top">(jump back to top)</a>\r
 <hr>\r
 <a name="deprecated"></a>\r
-<h2>Deprecated or Obsoleted in ICU 68</h2>\r
+<h2>Deprecated or Obsoleted in ICU 69</h2>\r
 <table BORDER="1" class="genTable">\r
 <THEAD>\r
 <tr>\r
-<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>\r
+<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>\r
 </tr>\r
 </THEAD>\r
 <tr class="row1">\r
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>\r
-<span class="verchange"><span>ICU 68</span></span></td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>\r
-<span class="verchange"><span>ICU 68</span></span></td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> FALSE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>\r
-<span class="verchange"><span>ICU 68</span></span></td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> TRUE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>\r
-<span class="verchange"><span>ICU 68</span></span></td>\r
+<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_safeClone(const UBreakIterator*, void*, int32_t*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>\r
+<span class="verchange"><span>ICU 69</span></span></td>\r
 </tr>\r
 </table>\r
 <P></P>\r
 <a href="#_top">(jump back to top)</a>\r
 <hr>\r
 <a name="changed"></a>\r
-<h2>Changed in  ICU 68 (old, new)</h2>\r
+<h2>Changed in  ICU 69 (old, new)</h2>\r
 <table BORDER="1" class="genTable">\r
 <THEAD>\r
 <tr>\r
-<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>\r
+<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>\r
 </tr>\r
 </THEAD>\r
 <tr class="row1">\r
-<td class="file">bytestrie.h</td><td class="proto">BytesTrie&amp; icu::BytesTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">bytestrie.h</td><td class="proto">uint64_t icu::BytesTrie::getState64() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">listformatter.h</td><td class="proto"><tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, UListFormatterType, UListFormatterWidth, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localebuilder.h</td><td class="proto">UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::operator=(Builder&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">LocaleMatcher&amp; icu::LocaleMatcher::operator=(LocaleMatcher&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Result&amp; icu::LocaleMatcher::Result::operator=(Result&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder(Builder&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::~Builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::Result(Result&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::~Result()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::~LocaleMatcher()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getDesiredIndex() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getSupportedIndex() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::hasNext() const override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">dtptngen.h</td><td class="proto">UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::Iterator::hasNext() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::RangeIterator&lt; Iter &gt;::hasNext() const override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::next() override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::Iterator::next()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">locid.h</td><td class="proto">void icu::Locale::canonicalize(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::RangeIterator&lt; Iter &gt;::next() override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">locid.h</td><td class="proto">icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::ConvertingIterator(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">locid.h</td><td class="proto">icu::Locale::Iterator::~Iterator()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">locid.h</td><td class="proto">icu::Locale::RangeIterator&lt; Iter &gt;::RangeIterator(Iter, Iter)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBar()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">const char* icu::MeasureUnit::getIdentifier() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEm()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const std::u8string&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(std::nullptr_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::compare(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::find(StringPiece, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">translit.h</td><td class="proto">UnicodeSet&amp; icu::Transliterator::getSourceSet(UnicodeSet&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>\r
+<span class=""><span>ICU 2.4</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">translit.h</td><td class="proto"><tt>static</tt> UnicodeString&amp; icu::Transliterator::getDisplayName(const UnicodeString&amp;, UnicodeString&amp;)</td><td class=""><i>(untagged)</i></td><td>Stable<br>\r
+<span class=""><span>ICU 2.0</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">translit.h</td><td class="proto">void icu::Transliterator::finishTransliteration(Replaceable&amp;, UTransPosition&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>\r
+<span class=""><span>ICU 2.0</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">translit.h</td><td class="proto">void icu::Transliterator::transliterate(Replaceable&amp;, UTransPosition&amp;, UErrorCode&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>\r
+<span class=""><span>ICU 2.0</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_safeClone(const UBreakIterator*, void*, int32_t*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>\r
+<span class="verchange"><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">numberformatter.h</td><td class="proto">StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>\r
-<span class="verchange"><span>ICU 68</span></span></td>\r
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>\r
-<span class="verchange"><span>ICU 68</span></span></td>\r
+<td class="file">udatpg.h</td><td class="proto">UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(T)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">ucal.h</td><td class="proto">int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">ucharstrie.h</td><td class="proto">UCharsTrie&amp; icu::UCharsTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">ucharstrie.h</td><td class="proto">uint64_t icu::UCharsTrie::getState64() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">ulistformatter.h</td><td class="proto">UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">uloc.h</td><td class="proto">UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> FALSE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>\r
-<span class="verchange"><span>ICU 68</span></span></td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> TRUE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>\r
-<span class="verchange"><span>ICU 68</span></span></td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 </table>\r
 <P></P>\r
 <a href="#_top">(jump back to top)</a>\r
 <hr>\r
 <a name="promoted"></a>\r
-<h2>Promoted to stable in ICU 68</h2>\r
+<h2>Promoted to stable in ICU 69</h2>\r
 <table BORDER="1" class="genTable">\r
 <THEAD>\r
 <tr>\r
-<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>\r
+<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>\r
 </tr>\r
 </THEAD>\r
 <tr class="row1">\r
-<td class="file">bytestrie.h</td><td class="proto">BytesTrie&amp; icu::BytesTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">bytestrie.h</td><td class="proto">uint64_t icu::BytesTrie::getState64() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">fmtable.h</td><td class="proto">UFormattable* icu::Formattable::toUFormattable()</td><td class="">(missing)</td><td>Stable<br>\r
-<span class=""><span>ICU 52</span></span></td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">listformatter.h</td><td class="proto"><tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, UListFormatterType, UListFormatterWidth, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localebuilder.h</td><td class="proto">UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::operator=(Builder&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">LocaleMatcher&amp; icu::LocaleMatcher::operator=(LocaleMatcher&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">dtptngen.h</td><td class="proto">UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Result&amp; icu::LocaleMatcher::Result::operator=(Result&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">locid.h</td><td class="proto">void icu::Locale::canonicalize(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">const char* icu::MeasureUnit::getIdentifier() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder(Builder&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::~Builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const std::u8string&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(std::nullptr_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::Result(Result&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::compare(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::~Result()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::find(StringPiece, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::~LocaleMatcher()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getDesiredIndex() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getSupportedIndex() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">translit.h</td><td class="proto">UnicodeSet&amp; icu::Transliterator::getSourceSet(UnicodeSet&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>\r
+<span class=""><span>ICU 2.4</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::hasNext() const override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">translit.h</td><td class="proto"><tt>static</tt> UnicodeString&amp; icu::Transliterator::getDisplayName(const UnicodeString&amp;, UnicodeString&amp;)</td><td class=""><i>(untagged)</i></td><td>Stable<br>\r
+<span class=""><span>ICU 2.0</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::Iterator::hasNext() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">translit.h</td><td class="proto">void icu::Transliterator::finishTransliteration(Replaceable&amp;, UTransPosition&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>\r
+<span class=""><span>ICU 2.0</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::RangeIterator&lt; Iter &gt;::hasNext() const override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">translit.h</td><td class="proto">void icu::Transliterator::transliterate(Replaceable&amp;, UTransPosition&amp;, UErrorCode&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>\r
+<span class=""><span>ICU 2.0</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::next() override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::Iterator::next()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::RangeIterator&lt; Iter &gt;::next() override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">locid.h</td><td class="proto">icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::ConvertingIterator(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">locid.h</td><td class="proto">icu::Locale::Iterator::~Iterator()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">locid.h</td><td class="proto">icu::Locale::RangeIterator&lt; Iter &gt;::RangeIterator(Iter, Iter)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBar()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">udatpg.h</td><td class="proto">UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEm()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">numberformatter.h</td><td class="proto">StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(T)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">ucal.h</td><td class="proto">int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">ucharstrie.h</td><td class="proto">UCharsTrie&amp; icu::UCharsTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">ucharstrie.h</td><td class="proto">uint64_t icu::UCharsTrie::getState64() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">ulistformatter.h</td><td class="proto">UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">uloc.h</td><td class="proto">UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">uniset.h</td><td class="proto">USet* icu::UnicodeSet::toUSet()</td><td class="">(missing)</td><td>Stable<br>\r
-<span class=""><span>ICU 4.2</span></span></td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>\r
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>\r
 </tr>\r
 </table>\r
 <P></P>\r
 <a href="#_top">(jump back to top)</a>\r
 <hr>\r
 <a name="added"></a>\r
-<h2>Added in ICU 68</h2>\r
+<h2>Added in ICU 69</h2>\r
 <table BORDER="1" class="genTable">\r
 <THEAD>\r
 <tr>\r
-<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>\r
+<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>\r
 </tr>\r
 </THEAD>\r
 <tr class="row1">\r
-<td class="file">dtitvfmt.h</td><td class="proto">UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">basictz.h</td><td class="proto">void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">dtitvfmt.h</td><td class="proto">void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> DateTimePatternGenerator* icu::DateTimePatternGenerator::createInstanceNoStdPat(const Locale&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">measunit.h</td><td class="proto">UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">fmtable.h</td><td class="proto">UFormattable* icu::Formattable::toUFormattable()</td><td class="">(missing)</td><td>Stable<br>\r
-<span class=""><span>ICU 52</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter()</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece) const&amp;</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece)&amp;&amp;</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getOffset() const</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">StringProp&amp; icu::number::impl::StringProp::operator=(StringProp&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">StringProp&amp; icu::number::impl::StringProp::operator=(const StringProp&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDot()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">bool icu::number::impl::StringProp::isSet() const</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDram()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">const char* icu::number::FormattedNumber::getGender(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::StringProp::StringProp(StringProp&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::StringProp::StringProp(const StringProp&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::StringProp::~StringProp()</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">int16_t icu::number::impl::StringProp::length() const</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">numberformatter.h</td><td class="proto">void icu::number::impl::StringProp::set(StringPiece)</td><td class="">(missing)</td><td>Internal<br>\r
+<span class=""><span></span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">rbtz.h</td><td class="proto">void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial()</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">simpletz.h</td><td class="proto">void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">ucal.h</td><td class="proto">void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">uniset.h</td><td class="proto">UnicodeSet&amp; icu::UnicodeSet::retain(const UnicodeString&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto">std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp;</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp;</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">numberformatter.h</td><td class="proto">MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">numberformatter.h</td><td class="proto">Usage&amp; icu::number::impl::Usage::operator=(Usage&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">numberformatter.h</td><td class="proto">Usage&amp; icu::number::impl::Usage::operator=(const Usage&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">numberformatter.h</td><td class="proto">bool icu::number::impl::Usage::isSet() const</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::Usage(Usage&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">uset.h</td><td class="proto">void uset_complementAllCodePoints(USet*, const UChar*, int32_t)</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::Usage(const Usage&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">uset.h</td><td class="proto">void uset_complementRange(USet*, UChar32, UChar32)</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::~Usage()</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">uset.h</td><td class="proto">void uset_complementString(USet*, const UChar*, int32_t)</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">numberformatter.h</td><td class="proto">int16_t icu::number::impl::Usage::length() const</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">uset.h</td><td class="proto">void uset_removeAllCodePoints(USet*, const UChar*, int32_t)</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">numberformatter.h</td><td class="proto">void icu::number::impl::Usage::set(StringPiece)</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">uset.h</td><td class="proto">void uset_retainAllCodePoints(USet*, const UChar*, int32_t)</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">numberrangeformatter.h</td><td class="proto">std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">uset.h</td><td class="proto">void uset_retainString(USet*, const UChar*, int32_t)</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::impl::UFormattedNumberRangeData*, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">vtzone.h</td><td class="proto">void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>\r
+<span class=""><span>ICU 69</span></span></td>\r
 </tr>\r
-<tr class="row0">\r
-<td class="file">plurrule.h</td><td class="proto">int32_t icu::PluralRules::getSamples(const UnicodeString&amp;, FixedDecimal*, int32_t, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+</table>\r
+<P></P>\r
+<a href="#_top">(jump back to top)</a>\r
+<hr>\r
+<a name="other"></a>\r
+<h2>Other existing drafts in ICU 69</h2>\r
+<div class="other">\r
+<table BORDER="1" class="genTable">\r
+<THEAD>\r
+<tr>\r
+<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>\r
 </tr>\r
+</THEAD>\r
 <tr class="row1">\r
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> TimeZone* icu::TimeZone::forLocaleOrDefault(const Locale&amp;)</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span></span></span></td>\r
+<td class="file">dtitvfmt.h</td><td class="proto">UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">dtitvfmt.h</td><td class="proto">void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">udateintervalformat.h</td><td class="proto">UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> U_DEFINE_FALSE_AND_TRUE</td><td class="">(missing)</td><td>Internal<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">uniset.h</td><td class="proto">USet* icu::UnicodeSet::toUSet()</td><td class="">(missing)</td><td>Stable<br>\r
-<span class=""><span>ICU 4.2</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDot()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDram()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">unumberformatter.h</td><td class="proto">int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">unumberrangeformatter.h</td><td class="proto">UFormattedNumberRange* unumrf_openResult(UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">unumberrangeformatter.h</td><td class="proto">const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_close(UNumberRangeFormatter*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_closeResult(UFormattedNumberRange*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>\r
-<span class=""><span>ICU 68</span></span></td>\r
-</tr>\r
-</table>\r
-<P></P>\r
-<a href="#_top">(jump back to top)</a>\r
-<hr>\r
-<a name="other"></a>\r
-<h2>Other existing drafts in ICU 68</h2>\r
-<div class="other">\r
-<table BORDER="1" class="genTable">\r
-<THEAD>\r
-<tr>\r
-<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
-</THEAD>\r
 <tr class="row1">\r
-<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">dtptngen.h</td><td class="proto">UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">locid.h</td><td class="proto">void icu::Locale::canonicalize(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>\r
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">measunit.h</td><td class="proto">std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">numberformatter.h</td><td class="proto">MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto">MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">numberrangeformatter.h</td><td class="proto">std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto">UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto">UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto">const char* icu::MeasureUnit::getIdentifier() const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto">icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">udateintervalformat.h</td><td class="proto">UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const std::u8string&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(std::nullptr_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberformatter.h</td><td class="proto">int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::compare(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberrangeformatter.h</td><td class="proto">UFormattedNumberRange* unumrf_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::find(StringPiece, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberrangeformatter.h</td><td class="proto">const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_close(UNumberRangeFormatter*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_closeResult(UFormattedNumberRange*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row0">\r
-<td class="file">udatpg.h</td><td class="proto">UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
+<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>\r
 </tr>\r
 <tr class="row1">\r
 <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>\r
 </tr>\r
-<tr class="row0">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
-</tr>\r
-<tr class="row1">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
-</tr>\r
-<tr class="row0">\r
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>\r
-</tr>\r
 </table>\r
 </div>\r
 <P></P>\r
 <a href="#_top">(jump back to top)</a>\r
 <hr>\r
 <p>\r
-<i><font size="-1">Contents generated by StableAPI tool on Fri Oct 23 11:35:16 PDT 2020<br>\r
+<i><font size="-1">Contents generated by StableAPI tool on Thu Mar 11 15:54:11 PST 2021<br>\r
         Copyright &copy; 2017 and later: Unicode, Inc. and others.<br>\r
         License &amp; terms of use: http://www.unicode.org/copyright.html\r
     </font></i>\r
index 81f7391..2e3ab45 100644 (file)
  License & terms of use: http://www.unicode.org/copyright.html\r
 -->\r
 \r
-# ICU4C API Comparison: ICU 67 with ICU 68\r
+# ICU4C API Comparison: ICU 68 (update #1: 68.2) with ICU 69\r
 \r
 > _Note_ Markdown format of this document is new for ICU 65.\r
 \r
-- [Removed from ICU 67](#removed)\r
-- [Deprecated or Obsoleted in ICU 68](#deprecated)\r
-- [Changed in  ICU 68](#changed)\r
-- [Promoted to stable in ICU 68](#promoted)\r
-- [Added in ICU 68](#added)\r
-- [Other existing drafts in ICU 68](#other)\r
+- [Removed from ICU 68](#removed)\r
+- [Deprecated or Obsoleted in ICU 69](#deprecated)\r
+- [Changed in  ICU 69](#changed)\r
+- [Promoted to stable in ICU 69](#promoted)\r
+- [Added in ICU 69](#added)\r
+- [Other existing drafts in ICU 69](#other)\r
 - [Signature Simplifications](#simplifications)\r
 \r
 ## Removed\r
 \r
-Removed from ICU 67\r
+Removed from ICU 68\r
   \r
-| File | API | ICU 67 | ICU 68 |\r
+| File | API | ICU 68 | ICU 69 |\r
 |---|---|---|---|\r
-| fmtable.h | const UFormattable* icu::Formattable::toUFormattable() |  StableICU 52 | (missing)\r
-| measunit.h | LocalArray&lt;MeasureUnit&gt; icu::MeasureUnit::splitToSingleUnits(int32_t&amp;, UErrorCode&amp;) const |  InternalICU 67 | (missing)\r
-| measunit.h | int32_t icu::MeasureUnit::getIndex() const |  Internal | (missing)\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::resolveUnitPerUnit(const MeasureUnit&amp;, const MeasureUnit&amp;, bool*) |  Internal | (missing)\r
-| measunit.h | <tt>static</tt> int32_t icu::MeasureUnit::getIndexCount() |  Internal | (missing)\r
-| measunit.h | <tt>static</tt> int32_t icu::MeasureUnit::internalGetIndexForTypeAndSubtype(const char*, const char*) |  Internal | (missing)\r
-| nounit.h | UClassID icu::NoUnit::getDynamicClassID() const |  DraftICU 60 | (missing)\r
-| nounit.h | icu::NoUnit::NoUnit(const NoUnit&amp;) |  DraftICU 60 | (missing)\r
-| nounit.h | icu::NoUnit::~NoUnit() |  DraftICU 60 | (missing)\r
-| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::base() |  DraftICU 60 | (missing)\r
-| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::percent() |  DraftICU 60 | (missing)\r
-| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::permille() |  DraftICU 60 | (missing)\r
-| nounit.h | <tt>static</tt> UClassID icu::NoUnit::getStaticClassID() |  DraftICU 60 | (missing)\r
-| nounit.h | void* icu::NoUnit::clone() const |  DraftICU 60 | (missing)\r
-| uniset.h | const USet* icu::UnicodeSet::toUSet() |  StableICU 4.2 | (missing)\r
+| listformatter.h | <tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, const char*, UErrorCode&amp;) |  Internal | (missing)\r
+| measunit.h | MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&amp;) const |  DraftICU 67 | (missing)\r
+| measunit.h | UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&amp;) const |  DraftICU 67 | (missing)\r
+| numberformatter.h | Usage&amp; icu::number::impl::Usage::operator=(Usage&amp;&amp;) |  Internal | (missing)\r
+| numberformatter.h | Usage&amp; icu::number::impl::Usage::operator=(const Usage&amp;) |  Internal | (missing)\r
+| numberformatter.h | bool icu::number::impl::Usage::isSet() const |  Internal | (missing)\r
+| numberformatter.h | icu::number::impl::Usage::Usage(Usage&amp;&amp;) |  Internal | (missing)\r
+| numberformatter.h | icu::number::impl::Usage::Usage(const Usage&amp;) |  Internal | (missing)\r
+| numberformatter.h | icu::number::impl::Usage::~Usage() |  Internal | (missing)\r
+| numberformatter.h | int16_t icu::number::impl::Usage::length() const |  Internal | (missing)\r
+| numberformatter.h | void icu::number::impl::Usage::set(StringPiece) |  Internal | (missing)\r
+| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const |  DeprecatedICU 68 | (missing)\r
+| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const |  DeprecatedICU 68 | (missing)\r
+| rbtz.h | void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, int32_t, int32_t, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  Internal | (missing)\r
+| simpletz.h | void icu::SimpleTimeZone::getOffsetFromLocal(UDate, int32_t, int32_t, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  Internal | (missing)\r
 \r
 ## Deprecated\r
 \r
-Deprecated or Obsoleted in ICU 68\r
+Deprecated or Obsoleted in ICU 69\r
   \r
-| File | API | ICU 67 | ICU 68 |\r
+| File | API | ICU 68 | ICU 69 |\r
 |---|---|---|---|\r
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const |  DraftICU 63 | DeprecatedICU 68\r
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const |  DraftICU 63 | DeprecatedICU 68\r
-| umachine.h | <tt>#define</tt> FALSE |  StableICU 2.0 | DeprecatedICU 68\r
-| umachine.h | <tt>#define</tt> TRUE |  StableICU 2.0 | DeprecatedICU 68\r
+| ubrk.h | UBreakIterator* ubrk_safeClone(const UBreakIterator*, void*, int32_t*, UErrorCode*) |  StableICU 2.0 | DeprecatedICU 69\r
 \r
 ## Changed\r
 \r
-Changed in  ICU 68 (old, new)\r
+Changed in  ICU 69 (old, new)\r
 \r
 \r
   \r
-| File | API | ICU 67 | ICU 68 |\r
+| File | API | ICU 68 | ICU 69 |\r
 |---|---|---|---|\r
-| bytestrie.h | BytesTrie&amp; icu::BytesTrie::resetToState64(uint64_t) |  Draft→StableICU 65\r
-| bytestrie.h | uint64_t icu::BytesTrie::getState64() const |  Draft→StableICU 65\r
-| listformatter.h | <tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, UListFormatterType, UListFormatterWidth, UErrorCode&amp;) |  Draft→StableICU 67\r
-| localebuilder.h | UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&amp;) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::operator=(Builder&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&amp;) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv) |  Draft→StableICU 65\r
-| localematcher.h | Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | LocaleMatcher&amp; icu::LocaleMatcher::operator=(LocaleMatcher&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&amp;, UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(const Locale&amp;, UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | Result&amp; icu::LocaleMatcher::Result::operator=(Result&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const |  Draft→StableICU 65\r
-| localematcher.h | const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const |  Draft→StableICU 65\r
-| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&amp;, UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(const Locale&amp;, UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE |  Draft→StableICU 65\r
-| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION |  Draft→StableICU 65\r
-| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE |  Draft→StableICU 65\r
-| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::Builder::Builder() |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::Builder::Builder(Builder&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::Builder::~Builder() |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::Result::Result(Result&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::Result::~Result() |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::~LocaleMatcher() |  Draft→StableICU 65\r
-| localematcher.h | int32_t icu::LocaleMatcher::Result::getDesiredIndex() const |  Draft→StableICU 65\r
-| localematcher.h | int32_t icu::LocaleMatcher::Result::getSupportedIndex() const |  Draft→StableICU 65\r
-| locid.h | UBool icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::hasNext() const override |  Draft→StableICU 65\r
-| locid.h | UBool icu::Locale::Iterator::hasNext() const |  Draft→StableICU 65\r
-| locid.h | UBool icu::Locale::RangeIterator&lt; Iter &gt;::hasNext() const override |  Draft→StableICU 65\r
-| locid.h | const Locale&amp; icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::next() override |  Draft→StableICU 65\r
-| locid.h | const Locale&amp; icu::Locale::Iterator::next() |  Draft→StableICU 65\r
-| locid.h | const Locale&amp; icu::Locale::RangeIterator&lt; Iter &gt;::next() override |  Draft→StableICU 65\r
-| locid.h | icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::ConvertingIterator(Iter, Iter, Conv) |  Draft→StableICU 65\r
-| locid.h | icu::Locale::Iterator::~Iterator() |  Draft→StableICU 65\r
-| locid.h | icu::Locale::RangeIterator&lt; Iter &gt;::RangeIterator(Iter, Iter) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBar() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEm() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&amp;) |  Draft→StableICU 65\r
-| numberformatter.h | StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&amp;) const |  Draft→StableICU 65\r
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const |  DraftICU 63 | DeprecatedICU 68\r
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const |  DraftICU 63 | DeprecatedICU 68\r
-| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR |  Draft→StableICU 65\r
-| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE |  Draft→StableICU 65\r
-| stringpiece.h | icu::StringPiece::StringPiece(T) |  Draft→StableICU 65\r
-| ucal.h | int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*) |  Draft→StableICU 65\r
-| ucharstrie.h | UCharsTrie&amp; icu::UCharsTrie::resetToState64(uint64_t) |  Draft→StableICU 65\r
-| ucharstrie.h | uint64_t icu::UCharsTrie::getState64() const |  Draft→StableICU 65\r
-| ulistformatter.h | UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*) |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE |  Draft→StableICU 67\r
-| uloc.h | UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*) |  Draft→StableICU 65\r
-| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT |  Draft→StableICU 65\r
-| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES |  Draft→StableICU 65\r
-| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES |  Draft→StableICU 65\r
-| umachine.h | <tt>#define</tt> FALSE |  StableICU 2.0 | DeprecatedICU 68\r
-| umachine.h | <tt>#define</tt> TRUE |  StableICU 2.0 | DeprecatedICU 68\r
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE |  Draft→StableICU 65\r
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE |  Draft→StableICU 65\r
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE |  Draft→StableICU 65\r
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START |  Draft→StableICU 65\r
+| bytestream.h | void icu::ByteSink::AppendU8(const char*, int32_t) |  Draft→StableICU 67\r
+| bytestream.h | void icu::ByteSink::AppendU8(const char8_t*, int32_t) |  Draft→StableICU 67\r
+| dtptngen.h | UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const |  Draft→StableICU 67\r
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection) |  Draft→StableICU 67\r
+| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY |  Draft→StableICU 67\r
+| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY |  Draft→StableICU 67\r
+| locid.h | void icu::Locale::canonicalize(UErrorCode&amp;) |  Draft→StableICU 67\r
+| measunit.h | MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const |  Draft→StableICU 67\r
+| measunit.h | MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const |  Draft→StableICU 67\r
+| measunit.h | MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const |  Draft→StableICU 67\r
+| measunit.h | MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept |  Draft→StableICU 67\r
+| measunit.h | UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const |  Draft→StableICU 67\r
+| measunit.h | const char* icu::MeasureUnit::getIdentifier() const |  Draft→StableICU 67\r
+| measunit.h | icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept |  Draft→StableICU 67\r
+| measunit.h | int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const |  Draft→StableICU 67\r
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;) |  Draft→StableICU 67\r
+| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*) |  Draft→StableICU 67\r
+| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*, int32_t) |  Draft→StableICU 67\r
+| stringpiece.h | icu::StringPiece::StringPiece(const std::u8string&amp;) |  Draft→StableICU 67\r
+| stringpiece.h | icu::StringPiece::StringPiece(std::nullptr_t) |  Draft→StableICU 67\r
+| stringpiece.h | int32_t icu::StringPiece::compare(StringPiece) |  Draft→StableICU 67\r
+| stringpiece.h | int32_t icu::StringPiece::find(StringPiece, int32_t) |  Draft→StableICU 67\r
+| stringpiece.h | void icu::StringPiece::set(const char8_t*) |  Draft→StableICU 67\r
+| stringpiece.h | void icu::StringPiece::set(const char8_t*, int32_t) |  Draft→StableICU 67\r
+| translit.h | UnicodeSet&amp; icu::Transliterator::getSourceSet(UnicodeSet&amp;) const |   _untagged _  | StableICU 2.4\r
+| translit.h | <tt>static</tt> UnicodeString&amp; icu::Transliterator::getDisplayName(const UnicodeString&amp;, UnicodeString&amp;) |   _untagged _  | StableICU 2.0\r
+| translit.h | void icu::Transliterator::finishTransliteration(Replaceable&amp;, UTransPosition&amp;) const |   _untagged _  | StableICU 2.0\r
+| translit.h | void icu::Transliterator::transliterate(Replaceable&amp;, UTransPosition&amp;, UErrorCode&amp;) const |   _untagged _  | StableICU 2.0\r
+| ubrk.h | UBreakIterator* ubrk_safeClone(const UBreakIterator*, void*, int32_t*, UErrorCode*) |  StableICU 2.0 | DeprecatedICU 69\r
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11 |  Draft→StableICU 67\r
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12 |  Draft→StableICU 67\r
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23 |  Draft→StableICU 67\r
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24 |  Draft→StableICU 67\r
+| udateintervalformat.h | void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*) |  Draft→StableICU 67\r
+| udateintervalformat.h | void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*) |  Draft→StableICU 67\r
+| udatpg.h | UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*) |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START |  Draft→StableICU 67\r
 \r
 ## Promoted\r
 \r
-Promoted to stable in ICU 68\r
+Promoted to stable in ICU 69\r
   \r
-| File | API | ICU 67 | ICU 68 |\r
+| File | API | ICU 68 | ICU 69 |\r
 |---|---|---|---|\r
-| bytestrie.h | BytesTrie&amp; icu::BytesTrie::resetToState64(uint64_t) |  Draft→StableICU 65\r
-| bytestrie.h | uint64_t icu::BytesTrie::getState64() const |  Draft→StableICU 65\r
-| fmtable.h | UFormattable* icu::Formattable::toUFormattable() |  (missing) | StableICU 52\r
-| listformatter.h | <tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, UListFormatterType, UListFormatterWidth, UErrorCode&amp;) |  Draft→StableICU 67\r
-| localebuilder.h | UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&amp;) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::operator=(Builder&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&amp;) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece) |  Draft→StableICU 65\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv) |  Draft→StableICU 65\r
-| localematcher.h | Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | LocaleMatcher&amp; icu::LocaleMatcher::operator=(LocaleMatcher&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&amp;, UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(const Locale&amp;, UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | Result&amp; icu::LocaleMatcher::Result::operator=(Result&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const |  Draft→StableICU 65\r
-| localematcher.h | const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const |  Draft→StableICU 65\r
-| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&amp;, UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(const Locale&amp;, UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&amp;) const |  Draft→StableICU 65\r
-| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE |  Draft→StableICU 65\r
-| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION |  Draft→StableICU 65\r
-| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE |  Draft→StableICU 65\r
-| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::Builder::Builder() |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::Builder::Builder(Builder&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::Builder::~Builder() |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::Result::Result(Result&amp;&amp;) |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::Result::~Result() |  Draft→StableICU 65\r
-| localematcher.h | icu::LocaleMatcher::~LocaleMatcher() |  Draft→StableICU 65\r
-| localematcher.h | int32_t icu::LocaleMatcher::Result::getDesiredIndex() const |  Draft→StableICU 65\r
-| localematcher.h | int32_t icu::LocaleMatcher::Result::getSupportedIndex() const |  Draft→StableICU 65\r
-| locid.h | UBool icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::hasNext() const override |  Draft→StableICU 65\r
-| locid.h | UBool icu::Locale::Iterator::hasNext() const |  Draft→StableICU 65\r
-| locid.h | UBool icu::Locale::RangeIterator&lt; Iter &gt;::hasNext() const override |  Draft→StableICU 65\r
-| locid.h | const Locale&amp; icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::next() override |  Draft→StableICU 65\r
-| locid.h | const Locale&amp; icu::Locale::Iterator::next() |  Draft→StableICU 65\r
-| locid.h | const Locale&amp; icu::Locale::RangeIterator&lt; Iter &gt;::next() override |  Draft→StableICU 65\r
-| locid.h | icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::ConvertingIterator(Iter, Iter, Conv) |  Draft→StableICU 65\r
-| locid.h | icu::Locale::Iterator::~Iterator() |  Draft→StableICU 65\r
-| locid.h | icu::Locale::RangeIterator&lt; Iter &gt;::RangeIterator(Iter, Iter) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBar() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEm() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs() |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&amp;) |  Draft→StableICU 65\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&amp;) |  Draft→StableICU 65\r
-| numberformatter.h | StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&amp;) const |  Draft→StableICU 65\r
-| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR |  Draft→StableICU 65\r
-| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE |  Draft→StableICU 65\r
-| stringpiece.h | icu::StringPiece::StringPiece(T) |  Draft→StableICU 65\r
-| ucal.h | int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*) |  Draft→StableICU 65\r
-| ucharstrie.h | UCharsTrie&amp; icu::UCharsTrie::resetToState64(uint64_t) |  Draft→StableICU 65\r
-| ucharstrie.h | uint64_t icu::UCharsTrie::getState64() const |  Draft→StableICU 65\r
-| ulistformatter.h | UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*) |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT |  Draft→StableICU 67\r
-| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE |  Draft→StableICU 67\r
-| uloc.h | UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*) |  Draft→StableICU 65\r
-| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT |  Draft→StableICU 65\r
-| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES |  Draft→StableICU 65\r
-| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES |  Draft→StableICU 65\r
-| uniset.h | USet* icu::UnicodeSet::toUSet() |  (missing) | StableICU 4.2\r
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE |  Draft→StableICU 65\r
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE |  Draft→StableICU 65\r
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE |  Draft→StableICU 65\r
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START |  Draft→StableICU 65\r
+| bytestream.h | void icu::ByteSink::AppendU8(const char*, int32_t) |  Draft→StableICU 67\r
+| bytestream.h | void icu::ByteSink::AppendU8(const char8_t*, int32_t) |  Draft→StableICU 67\r
+| dtptngen.h | UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const |  Draft→StableICU 67\r
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection) |  Draft→StableICU 67\r
+| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY |  Draft→StableICU 67\r
+| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY |  Draft→StableICU 67\r
+| locid.h | void icu::Locale::canonicalize(UErrorCode&amp;) |  Draft→StableICU 67\r
+| measunit.h | MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const |  Draft→StableICU 67\r
+| measunit.h | MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const |  Draft→StableICU 67\r
+| measunit.h | MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const |  Draft→StableICU 67\r
+| measunit.h | MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept |  Draft→StableICU 67\r
+| measunit.h | UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const |  Draft→StableICU 67\r
+| measunit.h | const char* icu::MeasureUnit::getIdentifier() const |  Draft→StableICU 67\r
+| measunit.h | icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept |  Draft→StableICU 67\r
+| measunit.h | int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const |  Draft→StableICU 67\r
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;) |  Draft→StableICU 67\r
+| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*) |  Draft→StableICU 67\r
+| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*, int32_t) |  Draft→StableICU 67\r
+| stringpiece.h | icu::StringPiece::StringPiece(const std::u8string&amp;) |  Draft→StableICU 67\r
+| stringpiece.h | icu::StringPiece::StringPiece(std::nullptr_t) |  Draft→StableICU 67\r
+| stringpiece.h | int32_t icu::StringPiece::compare(StringPiece) |  Draft→StableICU 67\r
+| stringpiece.h | int32_t icu::StringPiece::find(StringPiece, int32_t) |  Draft→StableICU 67\r
+| stringpiece.h | void icu::StringPiece::set(const char8_t*) |  Draft→StableICU 67\r
+| stringpiece.h | void icu::StringPiece::set(const char8_t*, int32_t) |  Draft→StableICU 67\r
+| translit.h | UnicodeSet&amp; icu::Transliterator::getSourceSet(UnicodeSet&amp;) const |   _untagged _  | StableICU 2.4\r
+| translit.h | <tt>static</tt> UnicodeString&amp; icu::Transliterator::getDisplayName(const UnicodeString&amp;, UnicodeString&amp;) |   _untagged _  | StableICU 2.0\r
+| translit.h | void icu::Transliterator::finishTransliteration(Replaceable&amp;, UTransPosition&amp;) const |   _untagged _  | StableICU 2.0\r
+| translit.h | void icu::Transliterator::transliterate(Replaceable&amp;, UTransPosition&amp;, UErrorCode&amp;) const |   _untagged _  | StableICU 2.0\r
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11 |  Draft→StableICU 67\r
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12 |  Draft→StableICU 67\r
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23 |  Draft→StableICU 67\r
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24 |  Draft→StableICU 67\r
+| udateintervalformat.h | void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*) |  Draft→StableICU 67\r
+| udateintervalformat.h | void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*) |  Draft→StableICU 67\r
+| udatpg.h | UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*) |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD |  Draft→StableICU 67\r
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START |  Draft→StableICU 67\r
 \r
 ## Added\r
 \r
-Added in ICU 68\r
+Added in ICU 69\r
   \r
-| File | API | ICU 67 | ICU 68 |\r
+| File | API | ICU 68 | ICU 69 |\r
 |---|---|---|---|\r
-| dtitvfmt.h | UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const |  (missing) | DraftICU 68\r
-| dtitvfmt.h | void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| dtptngen.h | <tt>static</tt> DateTimePatternGenerator* icu::DateTimePatternGenerator::createInstanceNoStdPat(const Locale&amp;, UErrorCode&amp;) |  (missing) | Internal\r
-| fmtable.h | UFormattable* icu::Formattable::toUFormattable() |  (missing) | StableICU 52\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;) |  (missing) | DraftICU 68\r
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale() |  (missing) | DraftICU 68\r
-| localematcher.h | UBool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 68\r
-| measunit.h | int32_t icu::MeasureUnit::getOffset() const |  (missing) | Internal\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDot() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDram() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial() |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;) |  (missing) | DraftICU 68\r
-| measunit.h | std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const |  (missing) | DraftICU 68\r
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp; |  (missing) | DraftICU 68\r
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp; |  (missing) | DraftICU 68\r
-| numberformatter.h | MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const |  (missing) | DraftICU 68\r
-| numberformatter.h | Usage&amp; icu::number::impl::Usage::operator=(Usage&amp;&amp;) |  (missing) | Internal\r
-| numberformatter.h | Usage&amp; icu::number::impl::Usage::operator=(const Usage&amp;) |  (missing) | Internal\r
-| numberformatter.h | bool icu::number::impl::Usage::isSet() const |  (missing) | Internal\r
-| numberformatter.h | icu::number::impl::Usage::Usage(Usage&amp;&amp;) |  (missing) | Internal\r
-| numberformatter.h | icu::number::impl::Usage::Usage(const Usage&amp;) |  (missing) | Internal\r
-| numberformatter.h | icu::number::impl::Usage::~Usage() |  (missing) | Internal\r
-| numberformatter.h | int16_t icu::number::impl::Usage::length() const |  (missing) | Internal\r
-| numberformatter.h | void icu::number::impl::Usage::set(StringPiece) |  (missing) | Internal\r
-| numberrangeformatter.h | std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const |  (missing) | DraftICU 68\r
-| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 68\r
-| plurrule.h | UnicodeString icu::PluralRules::select(const number::impl::UFormattedNumberRangeData*, UErrorCode&amp;) const |  (missing) | Internal\r
-| plurrule.h | int32_t icu::PluralRules::getSamples(const UnicodeString&amp;, FixedDecimal*, int32_t, UErrorCode&amp;) |  (missing) | Internal\r
-| timezone.h | <tt>static</tt> TimeZone* icu::TimeZone::forLocaleOrDefault(const Locale&amp;) |  (missing) | Internal\r
-| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME |  (missing) | DraftICU 68\r
-| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME |  (missing) | DraftICU 68\r
-| udateintervalformat.h | UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*) |  (missing) | DraftICU 68\r
-| udateintervalformat.h | void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*) |  (missing) | DraftICU 68\r
-| umachine.h | <tt>#define</tt> U_DEFINE_FALSE_AND_TRUE |  (missing) | InternalICU 68\r
-| uniset.h | USet* icu::UnicodeSet::toUSet() |  (missing) | StableICU 4.2\r
-| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO |  (missing) | DraftICU 68\r
-| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2 |  (missing) | DraftICU 68\r
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL |  (missing) | DraftICU 68\r
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT |  (missing) | DraftICU 68\r
-| unumberformatter.h | int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*) |  (missing) | DraftICU 68\r
-| unumberrangeformatter.h | UFormattedNumberRange* unumrf_openResult(UErrorCode*) |  (missing) | DraftICU 68\r
-| unumberrangeformatter.h | UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*) |  (missing) | DraftICU 68\r
-| unumberrangeformatter.h | UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*) |  (missing) | DraftICU 68\r
-| unumberrangeformatter.h | const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*) |  (missing) | DraftICU 68\r
-| unumberrangeformatter.h | int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) |  (missing) | DraftICU 68\r
-| unumberrangeformatter.h | int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) |  (missing) | DraftICU 68\r
-| unumberrangeformatter.h | void unumrf_close(UNumberRangeFormatter*) |  (missing) | DraftICU 68\r
-| unumberrangeformatter.h | void unumrf_closeResult(UFormattedNumberRange*) |  (missing) | DraftICU 68\r
-| unumberrangeformatter.h | void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*) |  (missing) | DraftICU 68\r
-| unumberrangeformatter.h | void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*) |  (missing) | DraftICU 68\r
-| upluralrules.h | int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*) |  (missing) | DraftICU 68\r
+| basictz.h | void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 69\r
+| measunit.h | MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&amp;) const |  (missing) | DraftICU 69\r
+| measunit.h | UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&amp;) const |  (missing) | DraftICU 69\r
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter() |  (missing) | DraftICU 69\r
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&amp;) |  (missing) | DraftICU 69\r
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece) const&amp; |  (missing) | InternalICU 69\r
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece)&amp;&amp; |  (missing) | InternalICU 69\r
+| numberformatter.h | Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const |  (missing) | DraftICU 69\r
+| numberformatter.h | Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const |  (missing) | DraftICU 69\r
+| numberformatter.h | StringProp&amp; icu::number::impl::StringProp::operator=(StringProp&amp;&amp;) |  (missing) | Internal\r
+| numberformatter.h | StringProp&amp; icu::number::impl::StringProp::operator=(const StringProp&amp;) |  (missing) | Internal\r
+| numberformatter.h | bool icu::number::impl::StringProp::isSet() const |  (missing) | Internal\r
+| numberformatter.h | const char* icu::number::FormattedNumber::getGender(UErrorCode&amp;) const |  (missing) | InternalICU 69\r
+| numberformatter.h | icu::number::impl::StringProp::StringProp(StringProp&amp;&amp;) |  (missing) | Internal\r
+| numberformatter.h | icu::number::impl::StringProp::StringProp(const StringProp&amp;) |  (missing) | Internal\r
+| numberformatter.h | icu::number::impl::StringProp::~StringProp() |  (missing) | Internal\r
+| numberformatter.h | int16_t icu::number::impl::StringProp::length() const |  (missing) | Internal\r
+| numberformatter.h | void icu::number::impl::StringProp::set(StringPiece) |  (missing) | Internal\r
+| rbtz.h | void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 69\r
+| simpletz.h | void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 69\r
+| ubrk.h | UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*) |  (missing) | DraftICU 69\r
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER |  (missing) | DraftICU 69\r
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER |  (missing) | DraftICU 69\r
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER |  (missing) | DraftICU 69\r
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER |  (missing) | DraftICU 69\r
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER |  (missing) | DraftICU 69\r
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER |  (missing) | DraftICU 69\r
+| ucal.h | void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*) |  (missing) | DraftICU 69\r
+| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN |  (missing) | DraftICU 69\r
+| uniset.h | UnicodeSet&amp; icu::UnicodeSet::retain(const UnicodeString&amp;) |  (missing) | DraftICU 69\r
+| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING |  (missing) | DraftICU 69\r
+| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR |  (missing) | DraftICU 69\r
+| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD |  (missing) | DraftICU 69\r
+| unumberformatter.h | <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED |  (missing) | DraftICU 69\r
+| unumberformatter.h | <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT |  (missing) | DraftICU 69\r
+| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE |  (missing) | DraftICU 69\r
+| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE |  (missing) | DraftICU 69\r
+| unumberformatter.h | <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO |  (missing) | DraftICU 69\r
+| unumberformatter.h | <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE |  (missing) | DraftICU 69\r
+| uset.h | void uset_complementAllCodePoints(USet*, const UChar*, int32_t) |  (missing) | DraftICU 69\r
+| uset.h | void uset_complementRange(USet*, UChar32, UChar32) |  (missing) | DraftICU 69\r
+| uset.h | void uset_complementString(USet*, const UChar*, int32_t) |  (missing) | DraftICU 69\r
+| uset.h | void uset_removeAllCodePoints(USet*, const UChar*, int32_t) |  (missing) | DraftICU 69\r
+| uset.h | void uset_retainAllCodePoints(USet*, const UChar*, int32_t) |  (missing) | DraftICU 69\r
+| uset.h | void uset_retainString(USet*, const UChar*, int32_t) |  (missing) | DraftICU 69\r
+| vtzone.h | void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 69\r
 \r
 ## Other\r
 \r
-Other existing drafts in ICU 68\r
+Other existing drafts in ICU 69\r
 \r
-| File | API | ICU 67 | ICU 68 |\r
+| File | API | ICU 68 | ICU 69 |\r
 |---|---|---|---|\r
-| bytestream.h |  void icu::ByteSink::AppendU8(const char*, int32_t) | DraftICU 67 | \r
-| bytestream.h |  void icu::ByteSink::AppendU8(const char8_t*, int32_t) | DraftICU 67 | \r
-| dtptngen.h |  UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const | DraftICU 67 | \r
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection) | DraftICU 67 | \r
-| localematcher.h |  <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY | DraftICU 67 | \r
-| localematcher.h |  <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY | DraftICU 67 | \r
-| locid.h |  void icu::Locale::canonicalize(UErrorCode&amp;) | DraftICU 67 | \r
+| dtitvfmt.h |  UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const | DraftICU 68 | \r
+| dtitvfmt.h |  void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;) | DraftICU 68 | \r
+| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;) | DraftICU 68 | \r
+| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale() | DraftICU 68 | \r
+| localematcher.h |  UBool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const | DraftICU 68 | \r
 | measfmt.h |  void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;) const | DraftICU 53 | \r
-| measunit.h |  MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const | DraftICU 67 | \r
-| measunit.h |  MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const | DraftICU 67 | \r
-| measunit.h |  MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const | DraftICU 67 | \r
-| measunit.h |  MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&amp;) const | DraftICU 67 | \r
-| measunit.h |  MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept | DraftICU 67 | \r
-| measunit.h |  UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&amp;) const | DraftICU 67 | \r
-| measunit.h |  UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const | DraftICU 67 | \r
-| measunit.h |  const char* icu::MeasureUnit::getIdentifier() const | DraftICU 67 | \r
-| measunit.h |  icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept | DraftICU 67 | \r
-| measunit.h |  int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const | DraftICU 67 | \r
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;) | DraftICU 67 | \r
-| stringpiece.h |  icu::StringPiece::StringPiece(const char8_t*) | DraftICU 67 | \r
-| stringpiece.h |  icu::StringPiece::StringPiece(const char8_t*, int32_t) | DraftICU 67 | \r
-| stringpiece.h |  icu::StringPiece::StringPiece(const std::u8string&amp;) | DraftICU 67 | \r
-| stringpiece.h |  icu::StringPiece::StringPiece(std::nullptr_t) | DraftICU 67 | \r
-| stringpiece.h |  int32_t icu::StringPiece::compare(StringPiece) | DraftICU 67 | \r
-| stringpiece.h |  int32_t icu::StringPiece::find(StringPiece, int32_t) | DraftICU 67 | \r
-| stringpiece.h |  void icu::StringPiece::set(const char8_t*) | DraftICU 67 | \r
-| stringpiece.h |  void icu::StringPiece::set(const char8_t*, int32_t) | DraftICU 67 | \r
-| udat.h |  <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11 | DraftICU 67 | \r
-| udat.h |  <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12 | DraftICU 67 | \r
-| udat.h |  <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23 | DraftICU 67 | \r
-| udat.h |  <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24 | DraftICU 67 | \r
-| udateintervalformat.h |  void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*) | DraftICU 67 | \r
-| udateintervalformat.h |  void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*) | DraftICU 67 | \r
-| udatpg.h |  UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*) | DraftICU 67 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDot() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDram() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial() | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;) | DraftICU 68 | \r
+| measunit.h |  std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const | DraftICU 68 | \r
+| numberformatter.h |  Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp; | DraftICU 68 | \r
+| numberformatter.h |  Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp; | DraftICU 68 | \r
+| numberformatter.h |  MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const | DraftICU 68 | \r
+| numberrangeformatter.h |  std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const | DraftICU 68 | \r
+| plurrule.h |  UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const | DraftICU 68 | \r
+| ucurr.h |  <tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME | DraftICU 68 | \r
+| ucurr.h |  <tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME | DraftICU 68 | \r
+| udateintervalformat.h |  UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*) | DraftICU 68 | \r
+| udateintervalformat.h |  void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*) | DraftICU 68 | \r
+| unum.h |  <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO | DraftICU 68 | \r
+| unum.h |  <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2 | DraftICU 68 | \r
+| unumberformatter.h |  <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL | DraftICU 68 | \r
+| unumberformatter.h |  <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT | DraftICU 68 | \r
+| unumberformatter.h |  int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*) | DraftICU 68 | \r
+| unumberrangeformatter.h |  UFormattedNumberRange* unumrf_openResult(UErrorCode*) | DraftICU 68 | \r
+| unumberrangeformatter.h |  UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*) | DraftICU 68 | \r
+| unumberrangeformatter.h |  UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*) | DraftICU 68 | \r
+| unumberrangeformatter.h |  const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*) | DraftICU 68 | \r
+| unumberrangeformatter.h |  int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) | DraftICU 68 | \r
+| unumberrangeformatter.h |  int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) | DraftICU 68 | \r
+| unumberrangeformatter.h |  void unumrf_close(UNumberRangeFormatter*) | DraftICU 68 | \r
+| unumberrangeformatter.h |  void unumrf_closeResult(UFormattedNumberRange*) | DraftICU 68 | \r
+| unumberrangeformatter.h |  void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*) | DraftICU 68 | \r
+| unumberrangeformatter.h |  void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*) | DraftICU 68 | \r
+| upluralrules.h |  int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*) | DraftICU 68 | \r
 | uregex.h |  <tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ | DraftICU 2.4 | \r
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE | DraftICU 67 | \r
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER | DraftICU 67 | \r
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE | DraftICU 67 | \r
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE | DraftICU 67 | \r
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE | DraftICU 67 | \r
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD | DraftICU 67 | \r
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START | DraftICU 67 | \r
 \r
 ## Simplifications\r
 \r
@@ -389,7 +273,7 @@ This section shows cases where the signature was "simplified" for the sake of co
 \r
 ## Colophon\r
 \r
-Contents generated by StableAPI tool on Fri Oct 23 11:32:42 PDT 2020\r
+Contents generated by StableAPI tool on Thu Mar 11 16:09:31 PST 2021\r
 \r
 Copyright © 2019 and later: Unicode, Inc. and others.\r
 License & terms of use: http://www.unicode.org/copyright.html\r
index b48ef0a..0978c4e 100644 (file)
@@ -3,7 +3,7 @@
 \r
 <html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">\r
   <head>\r
-    <title>ReadMe for ICU 68.2</title>\r
+    <title>ReadMe for ICU 69.1</title>\r
     <meta name="COPYRIGHT" content=\r
     "Copyright (C) 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html"/>\r
     <!-- meta name="COPYRIGHT" content=\r
@@ -23,8 +23,8 @@
         milestone - if the release note is a milestone release\r
 -->\r
 \r
-  <body>\r
-  <!-- <body class="rc"> -->\r
+  <!-- <body> -->\r
+  <body class="rc">\r
     <p class="only-draft"><b>Note:</b> This is a draft readme.</p>\r
 \r
     <h1>\r
@@ -33,7 +33,7 @@
       <span class="only-rc">Release Candidate</span>\r
       <!-- <span class="only-milestone">(Milestone Release)</span> -->\r
       <span class="only-milestone">(Preview Release)</span>\r
-      <abbr title="International Components for Unicode">ICU</abbr> 68.2 ReadMe\r
+      <abbr title="International Components for Unicode">ICU</abbr> 69.1 ReadMe\r
     </h1>\r
 \r
     <!-- Most of the time we shouldn't need to comment/uncomment this paragraph, just change the body class -->\r
@@ -47,7 +47,7 @@
     <p class="note only-rc">This is a release candidate version of ICU4C.\r
       It is not recommended for production use.</p>\r
 \r
-    <p>Last updated: 2020-Dec-02<br/>\r
+    <p>Last updated: 2021-Mar-16<br/>\r
       Copyright &copy; 2016 and later: Unicode, Inc. and others. License &amp; terms of use:\r
       <a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a><br/>\r
       Copyright &copy; 1997-2016 International Business Machines Corporation and others.\r
 \r
     <h2><a name="News" href="#News" id="News">What Is New In This Release?</a></h2>\r
 \r
-    <p>See the <a href="http://site.icu-project.org/download/68">ICU 68 download page</a>\r
+    <p>See the <a href="http://site.icu-project.org/download/69">ICU 69 download page</a>\r
     for more information on this release, including any other changes, bug fixes, known issues,\r
     changes to supported platforms and build environments,\r
     and migration issues for existing applications migrating from previous ICU releases.</p>\r
index dfab9ae..1bc6bf5 100644 (file)
@@ -1677,7 +1677,7 @@ COMPACT_LATEX          = NO
 # The default value is: a4.\r
 # This tag requires that the tag GENERATE_LATEX is set to YES.\r
 \r
-PAPER_TYPE             = a4wide\r
+PAPER_TYPE             = a4\r
 \r
 # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names\r
 # that should be included in the LaTeX output. The package can be specified just\r
index 8fff43d..5ceacba 100644 (file)
@@ -474,31 +474,39 @@ BytesTrieBuilder::writeDeltaTo(int32_t jumpTarget) {
     U_ASSERT(i>=0);\r
     if(i<=BytesTrie::kMaxOneByteDelta) {\r
         return write(i);\r
+    } else {\r
+        char intBytes[5];\r
+        return write(intBytes, internalEncodeDelta(i, intBytes));\r
     }\r
-    char intBytes[5];\r
-    int32_t length;\r
+}\r
+\r
+int32_t\r
+BytesTrieBuilder::internalEncodeDelta(int32_t i, char intBytes[]) {\r
+    U_ASSERT(i>=0);\r
+    if(i<=BytesTrie::kMaxOneByteDelta) {\r
+        intBytes[0]=(char)i;\r
+        return 1;\r
+    }\r
+    int32_t length=1;\r
     if(i<=BytesTrie::kMaxTwoByteDelta) {\r
         intBytes[0]=(char)(BytesTrie::kMinTwoByteDeltaLead+(i>>8));\r
-        length=1;\r
     } else {\r
         if(i<=BytesTrie::kMaxThreeByteDelta) {\r
             intBytes[0]=(char)(BytesTrie::kMinThreeByteDeltaLead+(i>>16));\r
-            length=2;\r
         } else {\r
             if(i<=0xffffff) {\r
                 intBytes[0]=(char)BytesTrie::kFourByteDeltaLead;\r
-                length=3;\r
             } else {\r
                 intBytes[0]=(char)BytesTrie::kFiveByteDeltaLead;\r
                 intBytes[1]=(char)(i>>24);\r
-                length=4;\r
+                length=2;\r
             }\r
-            intBytes[1]=(char)(i>>16);\r
+            intBytes[length++]=(char)(i>>16);\r
         }\r
-        intBytes[1]=(char)(i>>8);\r
+        intBytes[length++]=(char)(i>>8);\r
     }\r
     intBytes[length++]=(char)i;\r
-    return write(intBytes, length);\r
+    return length;\r
 }\r
 \r
 U_NAMESPACE_END\r
index 63716fd..22da6a3 100644 (file)
@@ -14,6 +14,8 @@
 *   created by: Markus W. Scherer\r
 */\r
 \r
+#include <cstdlib>\r
+\r
 #include "unicode/utypes.h"\r
 #include "unicode/putil.h"\r
 #include "charstr.h"\r
@@ -141,6 +143,38 @@ CharString &CharString::append(const char *s, int32_t sLength, UErrorCode &error
     return *this;\r
 }\r
 \r
+CharString &CharString::appendNumber(int32_t number, UErrorCode &status) {\r
+    if (number < 0) {\r
+        this->append('-', status);\r
+        if (U_FAILURE(status)) {\r
+            return *this;\r
+        }\r
+    }\r
+\r
+    if (number == 0) {\r
+        this->append('0', status);\r
+        return *this;\r
+    }\r
+\r
+    int32_t numLen = 0;\r
+    while (number != 0) {\r
+        int32_t residue = number % 10;\r
+        number /= 10;\r
+        this->append(std::abs(residue) + '0', status);\r
+        numLen++;\r
+        if (U_FAILURE(status)) {\r
+            return *this;\r
+        }\r
+    }\r
+\r
+    int32_t start = this->length() - numLen, end = this->length() - 1;\r
+    while(start < end) {\r
+        std::swap(this->data()[start++], this->data()[end--]);\r
+    }\r
+\r
+    return *this;\r
+}\r
+\r
 char *CharString::getAppendBuffer(int32_t minCapacity,\r
                                   int32_t desiredCapacityHint,\r
                                   int32_t &resultCapacity,\r
index 23fabde..217cfb3 100644 (file)
@@ -127,6 +127,9 @@ public:
         return append(s.data(), s.length(), errorCode);\r
     }\r
     CharString &append(const char *s, int32_t sLength, UErrorCode &status);\r
+\r
+    CharString &appendNumber(int32_t number, UErrorCode &status);\r
+\r
     /**\r
      * Returns a writable buffer for appending and writes the buffer's capacity to\r
      * resultCapacity. Guarantees resultCapacity>=minCapacity if U_SUCCESS().\r
index f749d40..8d6bfcb 100644 (file)
 #include <stddef.h>\r
 #include <string.h>\r
 #include "unicode/localpointer.h"\r
+#include "uassert.h"\r
 \r
 #if U_DEBUG && defined(UPRV_MALLOC_COUNT)\r
 #include <stdio.h>\r
 #endif\r
 \r
-\r
-#define uprv_memcpy(dst, src, size) U_STANDARD_CPP_NAMESPACE memcpy(dst, src, size)\r
-#define uprv_memmove(dst, src, size) U_STANDARD_CPP_NAMESPACE memmove(dst, src, size)\r
+// uprv_memcpy and uprv_memmove\r
+#if defined(__clang__)\r
+#define uprv_memcpy(dst, src, size) UPRV_BLOCK_MACRO_BEGIN { \\r
+    /* Suppress warnings about addresses that will never be NULL */ \\r
+    _Pragma("clang diagnostic push") \\r
+    _Pragma("clang diagnostic ignored \"-Waddress\"") \\r
+    U_ASSERT(dst != NULL); \\r
+    U_ASSERT(src != NULL); \\r
+    _Pragma("clang diagnostic pop") \\r
+    U_STANDARD_CPP_NAMESPACE memcpy(dst, src, size); \\r
+} UPRV_BLOCK_MACRO_END\r
+#define uprv_memmove(dst, src, size) UPRV_BLOCK_MACRO_BEGIN { \\r
+    /* Suppress warnings about addresses that will never be NULL */ \\r
+    _Pragma("clang diagnostic push") \\r
+    _Pragma("clang diagnostic ignored \"-Waddress\"") \\r
+    U_ASSERT(dst != NULL); \\r
+    U_ASSERT(src != NULL); \\r
+    _Pragma("clang diagnostic pop") \\r
+    U_STANDARD_CPP_NAMESPACE memmove(dst, src, size); \\r
+} UPRV_BLOCK_MACRO_END\r
+#elif defined(__GNUC__)\r
+#define uprv_memcpy(dst, src, size) UPRV_BLOCK_MACRO_BEGIN { \\r
+    /* Suppress warnings about addresses that will never be NULL */ \\r
+    _Pragma("GCC diagnostic push") \\r
+    _Pragma("GCC diagnostic ignored \"-Waddress\"") \\r
+    U_ASSERT(dst != NULL); \\r
+    U_ASSERT(src != NULL); \\r
+    _Pragma("GCC diagnostic pop") \\r
+    U_STANDARD_CPP_NAMESPACE memcpy(dst, src, size); \\r
+} UPRV_BLOCK_MACRO_END\r
+#define uprv_memmove(dst, src, size) UPRV_BLOCK_MACRO_BEGIN { \\r
+    /* Suppress warnings about addresses that will never be NULL */ \\r
+    _Pragma("GCC diagnostic push") \\r
+    _Pragma("GCC diagnostic ignored \"-Waddress\"") \\r
+    U_ASSERT(dst != NULL); \\r
+    U_ASSERT(src != NULL); \\r
+    _Pragma("GCC diagnostic pop") \\r
+    U_STANDARD_CPP_NAMESPACE memmove(dst, src, size); \\r
+} UPRV_BLOCK_MACRO_END\r
+#else\r
+#define uprv_memcpy(dst, src, size) UPRV_BLOCK_MACRO_BEGIN { \\r
+    U_ASSERT(dst != NULL); \\r
+    U_ASSERT(src != NULL); \\r
+    U_STANDARD_CPP_NAMESPACE memcpy(dst, src, size); \\r
+} UPRV_BLOCK_MACRO_END\r
+#define uprv_memmove(dst, src, size) UPRV_BLOCK_MACRO_BEGIN { \\r
+    U_ASSERT(dst != NULL); \\r
+    U_ASSERT(src != NULL); \\r
+    U_STANDARD_CPP_NAMESPACE memmove(dst, src, size); \\r
+} UPRV_BLOCK_MACRO_END\r
+#endif\r
 \r
 /**\r
  * \def UPRV_LENGTHOF\r
index d6b6e38..4cd07a7 100644 (file)
@@ -58,7 +58,7 @@
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc68d.dll</OutputFile>\r
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuucd.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuucd.lib</ImportLibrary>\r
     </Link>\r
@@ -70,7 +70,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc68.dll</OutputFile>\r
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuuc.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuuc.lib</ImportLibrary>\r
     </Link>\r
index 3a7fcbe..c606675 100644 (file)
     <Link>\r
       <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
       <AdditionalDependencies>vccorlib.lib;msvcrt.lib;vcruntime.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc68.dll</OutputFile>\r
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuuc.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuuc.lib</ImportLibrary>\r
     </Link>\r
     <Link>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <AdditionalDependencies>vccorlibd.lib;msvcrtd.lib;vcruntimed.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc68d.dll</OutputFile>\r
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuucd.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuucd.lib</ImportLibrary>\r
     </Link>\r
index 79d2e06..dc68168 100644 (file)
@@ -265,13 +265,9 @@ ThaiBreakEngine::divideUpDictionaryRange( UText *text,
                 goto foundBest;\r
             }\r
             do {\r
-                int32_t wordsMatched = 1;\r
                 if (words[(wordsFound + 1) % THAI_LOOKAHEAD].candidates(text, fDictionary, rangeEnd) > 0) {\r
-                    if (wordsMatched < 2) {\r
-                        // Followed by another dictionary word; mark first word as a good candidate\r
-                        words[wordsFound%THAI_LOOKAHEAD].markCurrent();\r
-                        wordsMatched = 2;\r
-                    }\r
+                    // Followed by another dictionary word; mark first word as a good candidate\r
+                    words[wordsFound%THAI_LOOKAHEAD].markCurrent();\r
                     \r
                     // If we're already at the end of the range, we're done\r
                     if ((int32_t)utext_getNativeIndex(text) >= rangeEnd) {\r
@@ -503,13 +499,9 @@ LaoBreakEngine::divideUpDictionaryRange( UText *text,
                 goto foundBest;\r
             }\r
             do {\r
-                int32_t wordsMatched = 1;\r
                 if (words[(wordsFound + 1) % LAO_LOOKAHEAD].candidates(text, fDictionary, rangeEnd) > 0) {\r
-                    if (wordsMatched < 2) {\r
-                        // Followed by another dictionary word; mark first word as a good candidate\r
-                        words[wordsFound%LAO_LOOKAHEAD].markCurrent();\r
-                        wordsMatched = 2;\r
-                    }\r
+                    // Followed by another dictionary word; mark first word as a good candidate\r
+                    words[wordsFound%LAO_LOOKAHEAD].markCurrent();\r
                     \r
                     // If we're already at the end of the range, we're done\r
                     if ((int32_t)utext_getNativeIndex(text) >= rangeEnd) {\r
@@ -699,13 +691,9 @@ BurmeseBreakEngine::divideUpDictionaryRange( UText *text,
                 goto foundBest;\r
             }\r
             do {\r
-                int32_t wordsMatched = 1;\r
                 if (words[(wordsFound + 1) % BURMESE_LOOKAHEAD].candidates(text, fDictionary, rangeEnd) > 0) {\r
-                    if (wordsMatched < 2) {\r
-                        // Followed by another dictionary word; mark first word as a good candidate\r
-                        words[wordsFound%BURMESE_LOOKAHEAD].markCurrent();\r
-                        wordsMatched = 2;\r
-                    }\r
+                    // Followed by another dictionary word; mark first word as a good candidate\r
+                    words[wordsFound%BURMESE_LOOKAHEAD].markCurrent();\r
                     \r
                     // If we're already at the end of the range, we're done\r
                     if ((int32_t)utext_getNativeIndex(text) >= rangeEnd) {\r
@@ -908,13 +896,9 @@ KhmerBreakEngine::divideUpDictionaryRange( UText *text,
                 goto foundBest;\r
             }\r
             do {\r
-                int32_t wordsMatched = 1;\r
                 if (words[(wordsFound + 1) % KHMER_LOOKAHEAD].candidates(text, fDictionary, rangeEnd) > 0) {\r
-                    if (wordsMatched < 2) {\r
-                        // Followed by another dictionary word; mark first word as a good candidate\r
-                        words[wordsFound % KHMER_LOOKAHEAD].markCurrent();\r
-                        wordsMatched = 2;\r
-                    }\r
+                    // Followed by another dictionary word; mark first word as a good candidate\r
+                    words[wordsFound % KHMER_LOOKAHEAD].markCurrent();\r
 \r
                     // If we're already at the end of the range, we're done\r
                     if ((int32_t)utext_getNativeIndex(text) >= rangeEnd) {\r
index 2b6a707..5b43417 100644 (file)
@@ -86,6 +86,7 @@ Edits &Edits::moveArray(Edits &src) U_NOEXCEPT {
 }\r
 \r
 Edits &Edits::operator=(const Edits &other) {\r
+    if (this == &other) { return *this; }  // self-assignment: no-op\r
     length = other.length;\r
     delta = other.delta;\r
     numChanges = other.numChanges;\r
index 6ef56a1..83e1a43 100644 (file)
@@ -20,6 +20,7 @@
 #include "ubrkimpl.h" // U_ICUDATA_BRKITR\r
 #include "uvector.h"\r
 #include "cmemory.h"\r
+#include "umutex.h"\r
 \r
 U_NAMESPACE_BEGIN\r
 \r
@@ -139,13 +140,30 @@ class SimpleFilteredSentenceBreakData : public UMemory {
 public:\r
   SimpleFilteredSentenceBreakData(UCharsTrie *forwards, UCharsTrie *backwards ) \r
       : fForwardsPartialTrie(forwards), fBackwardsTrie(backwards), refcount(1) { }\r
-  SimpleFilteredSentenceBreakData *incr() { refcount++;  return this; }\r
-  SimpleFilteredSentenceBreakData *decr() { if((--refcount) <= 0) delete this; return 0; }\r
-  virtual ~SimpleFilteredSentenceBreakData();\r
+    SimpleFilteredSentenceBreakData *incr() {\r
+        umtx_atomic_inc(&refcount);\r
+        return this;\r
+    }\r
+    SimpleFilteredSentenceBreakData *decr() {\r
+        if(umtx_atomic_dec(&refcount) <= 0) {\r
+            delete this;\r
+        }\r
+        return 0;\r
+    }\r
+    virtual ~SimpleFilteredSentenceBreakData();\r
+\r
+    bool hasForwardsPartialTrie() const { return fForwardsPartialTrie.isValid(); }\r
+    bool hasBackwardsTrie() const { return fBackwardsTrie.isValid(); }\r
 \r
-  LocalPointer<UCharsTrie>    fForwardsPartialTrie; //  Has ".a" for "a.M."\r
-  LocalPointer<UCharsTrie>    fBackwardsTrie; //  i.e. ".srM" for Mrs.\r
-  int32_t                     refcount;\r
+    const UCharsTrie &getForwardsPartialTrie() const { return *fForwardsPartialTrie; }\r
+    const UCharsTrie &getBackwardsTrie() const { return *fBackwardsTrie; }\r
+\r
+private:\r
+    // These tries own their data arrays.\r
+    // They are shared and must therefore not be modified.\r
+    LocalPointer<UCharsTrie>    fForwardsPartialTrie; //  Has ".a" for "a.M."\r
+    LocalPointer<UCharsTrie>    fBackwardsTrie; //  i.e. ".srM" for Mrs.\r
+    u_atomic_int32_t            refcount;\r
 };\r
 \r
 SimpleFilteredSentenceBreakData::~SimpleFilteredSentenceBreakData() {}\r
@@ -244,7 +262,13 @@ SimpleFilteredSentenceBreakIterator::SimpleFilteredSentenceBreakIterator(BreakIt
   fData(new SimpleFilteredSentenceBreakData(forwards, backwards)),\r
   fDelegate(adopt)\r
 {\r
-  // all set..\r
+    if (fData == nullptr) {\r
+        delete forwards;\r
+        delete backwards;\r
+        if (U_SUCCESS(status)) {\r
+            status = U_MEMORY_ALLOCATION_ERROR;\r
+        }\r
+    }\r
 }\r
 \r
 SimpleFilteredSentenceBreakIterator::~SimpleFilteredSentenceBreakIterator() {\r
@@ -261,59 +285,62 @@ SimpleFilteredSentenceBreakIterator::breakExceptionAt(int32_t n) {
     int32_t bestValue = -1;\r
     // loops while 'n' points to an exception.\r
     utext_setNativeIndex(fText.getAlias(), n); // from n..\r
-    fData->fBackwardsTrie->reset();\r
-    UChar32 uch;\r
 \r
     //if(debug2) u_printf(" n@ %d\n", n);\r
     // Assume a space is following the '.'  (so we handle the case:  "Mr. /Brown")\r
-    if((uch=utext_previous32(fText.getAlias()))==(UChar32)0x0020) {  // TODO: skip a class of chars here??\r
+    if(utext_previous32(fText.getAlias())==u' ') {  // TODO: skip a class of chars here??\r
       // TODO only do this the 1st time?\r
       //if(debug2) u_printf("skipping prev: |%C| \n", (UChar)uch);\r
     } else {\r
       //if(debug2) u_printf("not skipping prev: |%C| \n", (UChar)uch);\r
-      uch = utext_next32(fText.getAlias());\r
+      utext_next32(fText.getAlias());\r
       //if(debug2) u_printf(" -> : |%C| \n", (UChar)uch);\r
     }\r
 \r
-    UStringTrieResult r = USTRINGTRIE_INTERMEDIATE_VALUE;\r
-\r
-    while((uch=utext_previous32(fText.getAlias()))!=U_SENTINEL  &&   // more to consume backwards and..\r
-          USTRINGTRIE_HAS_NEXT(r=fData->fBackwardsTrie->nextForCodePoint(uch))) {// more in the trie\r
-      if(USTRINGTRIE_HAS_VALUE(r)) { // remember the best match so far\r
-        bestPosn = utext_getNativeIndex(fText.getAlias());\r
-        bestValue = fData->fBackwardsTrie->getValue();\r
-      }\r
-      //if(debug2) u_printf("rev< /%C/ cont?%d @%d\n", (UChar)uch, r, utext_getNativeIndex(fText.getAlias()));\r
+    {\r
+        // Do not modify the shared trie!\r
+        UCharsTrie iter(fData->getBackwardsTrie());\r
+        UChar32 uch;\r
+        while((uch=utext_previous32(fText.getAlias()))!=U_SENTINEL) {  // more to consume backwards\r
+            UStringTrieResult r = iter.nextForCodePoint(uch);\r
+            if(USTRINGTRIE_HAS_VALUE(r)) { // remember the best match so far\r
+                bestPosn = utext_getNativeIndex(fText.getAlias());\r
+                bestValue = iter.getValue();\r
+            }\r
+            if(!USTRINGTRIE_HAS_NEXT(r)) {\r
+                break;\r
+            }\r
+            //if(debug2) u_printf("rev< /%C/ cont?%d @%d\n", (UChar)uch, r, utext_getNativeIndex(fText.getAlias()));\r
+        }\r
     }\r
 \r
-    if(USTRINGTRIE_MATCHES(r)) { // exact match?\r
-      //if(debug2) u_printf("rev<?/%C/?end of seq.. r=%d, bestPosn=%d, bestValue=%d\n", (UChar)uch, r, bestPosn, bestValue);\r
-      bestValue = fData->fBackwardsTrie->getValue();\r
-      bestPosn = utext_getNativeIndex(fText.getAlias());\r
-      //if(debug2) u_printf("rev<+/%C/+end of seq.. r=%d, bestPosn=%d, bestValue=%d\n", (UChar)uch, r, bestPosn, bestValue);\r
-    }\r
+    //if(bestValue >= 0) {\r
+        //if(debug2) u_printf("rev<+/%C/+end of seq.. r=%d, bestPosn=%d, bestValue=%d\n", (UChar)uch, r, bestPosn, bestValue);\r
+    //}\r
 \r
     if(bestPosn>=0) {\r
       //if(debug2) u_printf("rev< /%C/ end of seq.. r=%d, bestPosn=%d, bestValue=%d\n", (UChar)uch, r, bestPosn, bestValue);\r
 \r
       //if(USTRINGTRIE_MATCHES(r)) {  // matched - so, now what?\r
-      //int32_t bestValue = fBackwardsTrie->getValue();\r
+      //int32_t bestValue = iter.getValue();\r
       ////if(debug2) u_printf("rev< /%C/ matched, skip..%d  bestValue=%d\n", (UChar)uch, r, bestValue);\r
 \r
       if(bestValue == kMATCH) { // exact match!\r
         //if(debug2) u_printf(" exact backward match\n");\r
         return kExceptionHere; // See if the next is another exception.\r
       } else if(bestValue == kPARTIAL\r
-                && fData->fForwardsPartialTrie.isValid()) { // make sure there's a forward trie\r
+                && fData->hasForwardsPartialTrie()) { // make sure there's a forward trie\r
         //if(debug2) u_printf(" partial backward match\n");\r
         // We matched the "Ph." in "Ph.D." - now we need to run everything through the forwards trie\r
         // to see if it matches something going forward.\r
-        fData->fForwardsPartialTrie->reset();\r
         UStringTrieResult rfwd = USTRINGTRIE_INTERMEDIATE_VALUE;\r
         utext_setNativeIndex(fText.getAlias(), bestPosn); // hope that's close ..\r
         //if(debug2) u_printf("Retrying at %d\n", bestPosn);\r
+        // Do not modify the shared trie!\r
+        UCharsTrie iter(fData->getForwardsPartialTrie());\r
+        UChar32 uch;\r
         while((uch=utext_next32(fText.getAlias()))!=U_SENTINEL &&\r
-              USTRINGTRIE_HAS_NEXT(rfwd=fData->fForwardsPartialTrie->nextForCodePoint(uch))) {\r
+              USTRINGTRIE_HAS_NEXT(rfwd=iter.nextForCodePoint(uch))) {\r
           //if(debug2) u_printf("fwd> /%C/ cont?%d @%d\n", (UChar)uch, rfwd, utext_getNativeIndex(fText.getAlias()));\r
         }\r
         if(USTRINGTRIE_MATCHES(rfwd)) {\r
@@ -339,7 +366,7 @@ SimpleFilteredSentenceBreakIterator::breakExceptionAt(int32_t n) {
 int32_t\r
 SimpleFilteredSentenceBreakIterator::internalNext(int32_t n) {\r
   if(n == UBRK_DONE || // at end  or\r
-    fData->fBackwardsTrie.isNull()) { // .. no backwards table loaded == no exceptions\r
+    !fData->hasBackwardsTrie()) { // .. no backwards table loaded == no exceptions\r
       return n;\r
   }\r
   // OK, do we need to break here?\r
@@ -369,7 +396,7 @@ SimpleFilteredSentenceBreakIterator::internalNext(int32_t n) {
 int32_t\r
 SimpleFilteredSentenceBreakIterator::internalPrev(int32_t n) {\r
   if(n == 0 || n == UBRK_DONE || // at end  or\r
-    fData->fBackwardsTrie.isNull()) { // .. no backwards table loaded == no exceptions\r
+    !fData->hasBackwardsTrie()) { // .. no backwards table loaded == no exceptions\r
       return n;\r
   }\r
   // OK, do we need to break here?\r
@@ -420,7 +447,7 @@ SimpleFilteredSentenceBreakIterator::previous(void) {
 UBool SimpleFilteredSentenceBreakIterator::isBoundary(int32_t offset) {\r
   if (!fDelegate->isBoundary(offset)) return false; // no break to suppress\r
 \r
-  if (fData->fBackwardsTrie.isNull()) return true; // no data = no suppressions\r
+  if (!fData->hasBackwardsTrie()) return true; // no data = no suppressions\r
 \r
   UErrorCode status = U_ZERO_ERROR;\r
   resetState(status);\r
index 97fd16e..6cfcbcb 100644 (file)
@@ -85,16 +85,22 @@ public:
 \r
     inline int32_t puti(const UnicodeString& key, int32_t value, UErrorCode& status);\r
 \r
+    inline int32_t putiAllowZero(const UnicodeString& key, int32_t value, UErrorCode& status);\r
+\r
     inline void* get(const UnicodeString& key) const;\r
 \r
     inline int32_t geti(const UnicodeString& key) const;\r
 \r
+    inline int32_t getiAndFound(const UnicodeString& key, UBool &found) const;\r
+\r
     inline void* remove(const UnicodeString& key);\r
 \r
     inline int32_t removei(const UnicodeString& key);\r
 \r
     inline void removeAll(void);\r
 \r
+    inline UBool containsKey(const UnicodeString& key) const;\r
+\r
     inline const UHashElement* find(const UnicodeString& key) const;\r
 \r
     /**\r
@@ -203,6 +209,11 @@ inline int32_t Hashtable::puti(const UnicodeString& key, int32_t value, UErrorCo
     return uhash_puti(hash, new UnicodeString(key), value, &status);\r
 }\r
 \r
+inline int32_t Hashtable::putiAllowZero(const UnicodeString& key, int32_t value,\r
+                                        UErrorCode& status) {\r
+    return uhash_putiAllowZero(hash, new UnicodeString(key), value, &status);\r
+}\r
+\r
 inline void* Hashtable::get(const UnicodeString& key) const {\r
     return uhash_get(hash, &key);\r
 }\r
@@ -211,6 +222,10 @@ inline int32_t Hashtable::geti(const UnicodeString& key) const {
     return uhash_geti(hash, &key);\r
 }\r
 \r
+inline int32_t Hashtable::getiAndFound(const UnicodeString& key, UBool &found) const {\r
+    return uhash_getiAndFound(hash, &key, &found);\r
+}\r
+\r
 inline void* Hashtable::remove(const UnicodeString& key) {\r
     return uhash_remove(hash, &key);\r
 }\r
@@ -219,6 +234,10 @@ inline int32_t Hashtable::removei(const UnicodeString& key) {
     return uhash_removei(hash, &key);\r
 }\r
 \r
+inline UBool Hashtable::containsKey(const UnicodeString& key) const {\r
+    return uhash_containsKey(hash, &key);\r
+}\r
+\r
 inline const UHashElement* Hashtable::find(const UnicodeString& key) const {\r
     return uhash_find(hash, &key);\r
 }\r
index d52cea9..7c139cf 100644 (file)
@@ -345,9 +345,8 @@ UBool compareLSRs(const UHashTok t1, const UHashTok t2) {
 int32_t LocaleMatcher::putIfAbsent(const LSR &lsr, int32_t i, int32_t suppLength,\r
                                    UErrorCode &errorCode) {\r
     if (U_FAILURE(errorCode)) { return suppLength; }\r
-    int32_t index = uhash_geti(supportedLsrToIndex, &lsr);\r
-    if (index == 0) {\r
-        uhash_puti(supportedLsrToIndex, const_cast<LSR *>(&lsr), i + 1, &errorCode);\r
+    if (!uhash_containsKey(supportedLsrToIndex, &lsr)) {\r
+        uhash_putiAllowZero(supportedLsrToIndex, const_cast<LSR *>(&lsr), i, &errorCode);\r
         if (U_SUCCESS(errorCode)) {\r
             supportedLSRs[suppLength] = &lsr;\r
             supportedIndexes[suppLength++] = i;\r
@@ -685,12 +684,11 @@ int32_t LocaleMatcher::getBestSuppIndex(LSR desiredLSR, LocaleLsrIterator *remai
     int32_t bestSupportedLsrIndex = -1;\r
     for (int32_t bestShiftedDistance = LocaleDistance::shiftDistance(thresholdDistance);;) {\r
         // Quick check for exact maximized LSR.\r
-        // Returns suppIndex+1 where 0 means not found.\r
         if (supportedLsrToIndex != nullptr) {\r
             desiredLSR.setHashCode();\r
-            int32_t index = uhash_geti(supportedLsrToIndex, &desiredLSR);\r
-            if (index != 0) {\r
-                int32_t suppIndex = index - 1;\r
+            UBool found = false;\r
+            int32_t suppIndex = uhash_getiAndFound(supportedLsrToIndex, &desiredLSR, &found);\r
+            if (found) {\r
                 if (remainingIter != nullptr) {\r
                     remainingIter->rememberCurrent(desiredIndex, errorCode);\r
                 }\r
index d7c479c..cec4da6 100644 (file)
@@ -187,17 +187,18 @@ bool LocalePriorityList::add(const Locale &locale, int32_t weight, UErrorCode &e
         if (U_FAILURE(errorCode)) { return false; }\r
     }\r
     LocalPointer<Locale> clone;\r
-    int32_t index = uhash_geti(map, &locale);\r
-    if (index != 0) {\r
+    UBool found = false;\r
+    int32_t index = uhash_getiAndFound(map, &locale, &found);\r
+    if (found) {\r
         // Duplicate: Remove the old item and append it anew.\r
-        LocaleAndWeight &lw = list->array[index - 1];\r
+        LocaleAndWeight &lw = list->array[index];\r
         clone.adoptInstead(lw.locale);\r
         lw.locale = nullptr;\r
         lw.weight = 0;\r
         ++numRemoved;\r
     }\r
     if (weight <= 0) {  // do not add q=0\r
-        if (index != 0) {\r
+        if (found) {\r
             // Not strictly necessary but cleaner.\r
             uhash_removei(map, &locale);\r
         }\r
@@ -217,7 +218,7 @@ bool LocalePriorityList::add(const Locale &locale, int32_t weight, UErrorCode &e
             return false;\r
         }\r
     }\r
-    uhash_puti(map, clone.getAlias(), listLength + 1, &errorCode);\r
+    uhash_putiAllowZero(map, clone.getAlias(), listLength, &errorCode);\r
     if (U_FAILURE(errorCode)) { return false; }\r
     LocaleAndWeight &lw = list->array[listLength];\r
     lw.locale = clone.orphan();\r
index 7fcede6..e0dd278 100644 (file)
@@ -698,7 +698,7 @@ uloc_getDisplayName(const char *locale,
                     } /* end switch */\r
 \r
                     if (len>0) {\r
-                        /* we addeed a component, so add separator and write it if there's room. */\r
+                        /* we added a component, so add separator and write it if there's room. */\r
                         if(len+sepLen<=cap) {\r
                             const UChar * plimit = p + len;\r
                             for (; p < plimit; p++) {\r
index f74a056..5105e0b 100644 (file)
@@ -254,7 +254,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Locale)
 \r
 Locale::~Locale()\r
 {\r
-    if (baseName != fullName) {\r
+    if ((baseName != fullName) && (baseName != fullNameBuffer)) {\r
         uprv_free(baseName);\r
     }\r
     baseName = NULL;\r
@@ -466,7 +466,7 @@ Locale& Locale::operator=(const Locale& other) {
 }\r
 \r
 Locale& Locale::operator=(Locale&& other) U_NOEXCEPT {\r
-    if (baseName != fullName) uprv_free(baseName);\r
+    if ((baseName != fullName) && (baseName != fullNameBuffer)) uprv_free(baseName);\r
     if (fullName != fullNameBuffer) uprv_free(fullName);\r
 \r
     if (other.fullName == other.fullNameBuffer) {\r
@@ -524,7 +524,7 @@ static const char* const KNOWN_CANONICALIZED[] = {
     "km", "km_KH", "kn", "kn_IN", "ko", "ko_KR", "ky", "ky_KG", "lo", "lo_LA",\r
     "lt", "lt_LT", "lv", "lv_LV", "mk", "mk_MK", "ml", "ml_IN", "mn", "mn_MN",\r
     "mr", "mr_IN", "ms", "ms_MY", "my", "my_MM", "nb", "nb_NO", "ne", "ne_NP",\r
-    "nl", "nl_NL", "or", "or_IN", "pa", "pa_IN", "pl", "pl_PL", "ps", "ps_AF",\r
+    "nl", "nl_NL", "no", "or", "or_IN", "pa", "pa_IN", "pl", "pl_PL", "ps", "ps_AF",\r
     "pt", "pt_BR", "pt_PT", "ro", "ro_RO", "ru", "ru_RU", "sd", "sd_IN", "si",\r
     "si_LK", "sk", "sk_SK", "sl", "sl_SI", "so", "so_SO", "sq", "sq_AL", "sr",\r
     "sr_Cyrl_RS", "sr_Latn", "sr_RS", "sv", "sv_SE", "sw", "sw_TZ", "ta",\r
@@ -627,6 +627,17 @@ private:
                           LocalMemory<const char*>& types,\r
                           LocalMemory<int32_t>& replacementIndexes,\r
                           int32_t &length, UErrorCode &status);\r
+\r
+    // Read the subdivisionAlias data from alias to\r
+    // strings+types+replacementIndexes\r
+    // Allocate length items for types, to store the type field.\r
+    // Allocate length items for replacementIndexes,\r
+    // to store the index in the strings for the replacement variant.\r
+    void readSubdivisionAlias(UResourceBundle* alias,\r
+                          UniqueCharStrings* strings,\r
+                          LocalMemory<const char*>& types,\r
+                          LocalMemory<int32_t>& replacementIndexes,\r
+                          int32_t &length, UErrorCode &status);\r
 };\r
 \r
 /**\r
@@ -647,6 +658,7 @@ public:
     const CharStringMap& scriptMap() const { return script; }\r
     const CharStringMap& territoryMap() const { return territory; }\r
     const CharStringMap& variantMap() const { return variant; }\r
+    const CharStringMap& subdivisionMap() const { return subdivision; }\r
 \r
     static void U_CALLCONV loadData(UErrorCode &status);\r
     static UBool U_CALLCONV cleanup();\r
@@ -658,11 +670,13 @@ private:
               CharStringMap scriptMap,\r
               CharStringMap territoryMap,\r
               CharStringMap variantMap,\r
+              CharStringMap subdivisionMap,\r
               CharString* strings)\r
         : language(std::move(languageMap)),\r
           script(std::move(scriptMap)),\r
           territory(std::move(territoryMap)),\r
           variant(std::move(variantMap)),\r
+          subdivision(std::move(subdivisionMap)),\r
           strings(strings) {\r
     }\r
 \r
@@ -676,6 +690,7 @@ private:
     CharStringMap script;\r
     CharStringMap territory;\r
     CharStringMap variant;\r
+    CharStringMap subdivision;\r
     CharString* strings;\r
 \r
     friend class AliasDataBuilder;\r
@@ -867,6 +882,34 @@ AliasDataBuilder::readVariantAlias(
 }\r
 \r
 /**\r
+ * Read the subdivisionAlias data from alias to strings+types+replacementIndexes.\r
+ * Allocate length items for types, to store the type field. Allocate length\r
+ * items for replacementIndexes, to store the index in the strings for the\r
+ * replacement regions.\r
+ */\r
+void\r
+AliasDataBuilder::readSubdivisionAlias(\r
+        UResourceBundle* alias,\r
+        UniqueCharStrings* strings,\r
+        LocalMemory<const char*>& types,\r
+        LocalMemory<int32_t>& replacementIndexes,\r
+        int32_t &length,\r
+        UErrorCode &status)\r
+{\r
+    return readAlias(\r
+        alias, strings, types, replacementIndexes, length,\r
+#if U_DEBUG\r
+        [](const char* type) {\r
+            U_ASSERT(uprv_strlen(type) >= 3 && uprv_strlen(type) <= 8);\r
+        },\r
+#else\r
+        [](const char*) {},\r
+#endif\r
+        [](const UnicodeString&) { },\r
+        status);\r
+}\r
+\r
+/**\r
  * Initializes the alias data from the ICU resource bundles. The alias data\r
  * contains alias of language, country, script and variants.\r
  *\r
@@ -905,12 +948,14 @@ AliasDataBuilder::build(UErrorCode &status) {
         ures_getByKey(metadataAlias.getAlias(), "territory", nullptr, &status));\r
     LocalUResourceBundlePointer variantAlias(\r
         ures_getByKey(metadataAlias.getAlias(), "variant", nullptr, &status));\r
+    LocalUResourceBundlePointer subdivisionAlias(\r
+        ures_getByKey(metadataAlias.getAlias(), "subdivision", nullptr, &status));\r
 \r
     if (U_FAILURE(status)) {\r
         return nullptr;\r
     }\r
     int32_t languagesLength = 0, scriptLength = 0, territoryLength = 0,\r
-            variantLength = 0;\r
+            variantLength = 0, subdivisionLength = 0;\r
 \r
     // Read the languageAlias into languageTypes, languageReplacementIndexes\r
     // and strings\r
@@ -955,6 +1000,16 @@ AliasDataBuilder::build(UErrorCode &status) {
                      variantReplacementIndexes,\r
                      variantLength, status);\r
 \r
+    // Read the subdivisionAlias into subdivisionTypes, subdivisionReplacementIndexes\r
+    // and strings\r
+    LocalMemory<const char*> subdivisionTypes;\r
+    LocalMemory<int32_t> subdivisionReplacementIndexes;\r
+    readSubdivisionAlias(subdivisionAlias.getAlias(),\r
+                         &strings,\r
+                         subdivisionTypes,\r
+                         subdivisionReplacementIndexes,\r
+                         subdivisionLength, status);\r
+\r
     if (U_FAILURE(status)) {\r
         return nullptr;\r
     }\r
@@ -994,6 +1049,14 @@ AliasDataBuilder::build(UErrorCode &status) {
                        status);\r
     }\r
 \r
+    // Build the subdivisionMap from subdivisionTypes & subdivisionReplacementIndexes.\r
+    CharStringMap subdivisionMap(2, status);\r
+    for (int32_t i = 0; U_SUCCESS(status) && i < subdivisionLength; i++) {\r
+        subdivisionMap.put(subdivisionTypes[i],\r
+                       strings.get(subdivisionReplacementIndexes[i]),\r
+                       status);\r
+    }\r
+\r
     if (U_FAILURE(status)) {\r
         return nullptr;\r
     }\r
@@ -1004,6 +1067,7 @@ AliasDataBuilder::build(UErrorCode &status) {
         std::move(scriptMap),\r
         std::move(territoryMap),\r
         std::move(variantMap),\r
+        std::move(subdivisionMap),\r
         strings.orphanCharStrings());\r
 \r
     if (data == nullptr) {\r
@@ -1105,6 +1169,14 @@ private:
 \r
     // Replace by using variantAlias.\r
     bool replaceVariant(UErrorCode& status);\r
+\r
+    // Replace by using subdivisionAlias.\r
+    bool replaceSubdivision(StringPiece subdivision,\r
+                            CharString& output, UErrorCode& status);\r
+\r
+    // Replace transformed extensions.\r
+    bool replaceTransformedExtensions(\r
+        CharString& transformedExtensions, CharString& output, UErrorCode& status);\r
 };\r
 \r
 CharString&\r
@@ -1294,7 +1366,6 @@ AliasReplacer::replaceLanguage(
             }\r
         }\r
         if (replacedExtensions != nullptr) {\r
-            // TODO(ICU-21292)\r
             // DO NOTHING\r
             // UTS35 does not specifiy what should we do if we have extensions in the\r
             // replacement. Currently we know only the following 4 "BCP47 LegacyRules" have\r
@@ -1435,6 +1506,106 @@ AliasReplacer::replaceVariant(UErrorCode& status)
     return false;\r
 }\r
 \r
+bool\r
+AliasReplacer::replaceSubdivision(\r
+    StringPiece subdivision, CharString& output, UErrorCode& status)\r
+{\r
+    if (U_FAILURE(status)) {\r
+        return false;\r
+    }\r
+    const char *replacement = data->subdivisionMap().get(subdivision.data());\r
+    if (replacement != nullptr) {\r
+        const char* firstSpace = uprv_strchr(replacement, ' ');\r
+        // Found replacement data for this subdivision.\r
+        size_t len = (firstSpace != nullptr) ?\r
+            (firstSpace - replacement) : uprv_strlen(replacement);\r
+        if (2 <= len && len <= 8) {\r
+            output.append(replacement, (int32_t)len, status);\r
+            if (2 == len) {\r
+                // Add 'zzzz' based on changes to UTS #35 for CLDR-14312.\r
+                output.append("zzzz", 4, status);\r
+            }\r
+        }\r
+        return true;\r
+    }\r
+    return false;\r
+}\r
+\r
+bool\r
+AliasReplacer::replaceTransformedExtensions(\r
+    CharString& transformedExtensions, CharString& output, UErrorCode& status)\r
+{\r
+    // The content of the transformedExtensions will be modified in this\r
+    // function to NULL-terminating (tkey-tvalue) pairs.\r
+    if (U_FAILURE(status)) {\r
+        return false;\r
+    }\r
+    int32_t len = transformedExtensions.length();\r
+    const char* str = transformedExtensions.data();\r
+    const char* tkey = ultag_getTKeyStart(str);\r
+    int32_t tlangLen = (tkey == str) ? 0 :\r
+        ((tkey == nullptr) ? len : static_cast<int32_t>((tkey - str - 1)));\r
+    CharStringByteSink sink(&output);\r
+    if (tlangLen > 0) {\r
+        Locale tlang = LocaleBuilder()\r
+            .setLanguageTag(StringPiece(str, tlangLen))\r
+            .build(status);\r
+        tlang.canonicalize(status);\r
+        tlang.toLanguageTag(sink, status);\r
+        if (U_FAILURE(status)) {\r
+            return false;\r
+        }\r
+        T_CString_toLowerCase(output.data());\r
+    }\r
+    if (tkey != nullptr) {\r
+        // We need to sort the tfields by tkey\r
+        UVector tfields(status);\r
+        if (U_FAILURE(status)) {\r
+            return false;\r
+        }\r
+        do {\r
+            const char* tvalue = uprv_strchr(tkey, '-');\r
+            if (tvalue == nullptr) {\r
+                status = U_ILLEGAL_ARGUMENT_ERROR;\r
+            }\r
+            const char* nextTKey = ultag_getTKeyStart(tvalue);\r
+            if (nextTKey != nullptr) {\r
+                *((char*)(nextTKey-1)) = '\0';  // NULL terminate tvalue\r
+            }\r
+            tfields.insertElementAt((void*)tkey, tfields.size(), status);\r
+            if (U_FAILURE(status)) {\r
+                return false;\r
+            }\r
+            tkey = nextTKey;\r
+        } while (tkey != nullptr);\r
+        tfields.sort([](UElement e1, UElement e2) -> int8_t {\r
+            // uprv_strcmp return int and in some platform, such as arm64-v8a,\r
+            // it may return positive values > 127 which cause the casted value\r
+            // of int8_t negative.\r
+            int res = uprv_strcmp(\r
+                (const char*)e1.pointer, (const char*)e2.pointer);\r
+            return (res == 0) ? 0 : ((res > 0) ? 1 : -1);\r
+        }, status);\r
+        for (int32_t i = 0; i < tfields.size(); i++) {\r
+             if (output.length() > 0) {\r
+                 output.append('-', status);\r
+             }\r
+             const char* tfield = (const char*) tfields.elementAt(i);\r
+             const char* tvalue = uprv_strchr(tfield, '-');\r
+             // Split the "tkey-tvalue" pair string so that we can canonicalize the tvalue.\r
+             U_ASSERT(tvalue != nullptr);\r
+             *((char*)tvalue++) = '\0'; // NULL terminate tkey\r
+             output.append(tfield, status).append('-', status);\r
+             const char* bcpTValue = ulocimp_toBcpType(tfield, tvalue, nullptr, nullptr);\r
+             output.append((bcpTValue == nullptr) ? tvalue : bcpTValue, status);\r
+        }\r
+    }\r
+    if (U_FAILURE(status)) {\r
+        return false;\r
+    }\r
+    return true;\r
+}\r
+\r
 CharString&\r
 AliasReplacer::outputToString(\r
     CharString& out, UErrorCode status)\r
@@ -1453,8 +1624,12 @@ AliasReplacer::outputToString(
           out.append(SEP_CHAR, status);\r
         }\r
         variants.sort([](UElement e1, UElement e2) -> int8_t {\r
-            return uprv_strcmp(\r
+            // uprv_strcmp return int and in some platform, such as arm64-v8a,\r
+            // it may return positive values > 127 which cause the casted value\r
+            // of int8_t negative.\r
+            int res = uprv_strcmp(\r
                 (const char*)e1.pointer, (const char*)e2.pointer);\r
+            return (res == 0) ? 0 : ((res > 0) ? 1 : -1);\r
         }, status);\r
         int32_t variantsStart = out.length();\r
         for (int32_t i = 0; i < variants.size(); i++) {\r
@@ -1497,7 +1672,6 @@ AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status
         region = nullptr;\r
     }\r
     const char* variantsStr = locale.getVariant();\r
-    const char* extensionsStr = locale_getKeywordsStart(locale.getName());\r
     CharString variantsBuff(variantsStr, -1, status);\r
     if (!variantsBuff.isEmpty()) {\r
         if (U_FAILURE(status)) { return false; }\r
@@ -1516,8 +1690,12 @@ AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status
 \r
     // Sort the variants\r
     variants.sort([](UElement e1, UElement e2) -> int8_t {\r
-        return uprv_strcmp(\r
+        // uprv_strcmp return int and in some platform, such as arm64-v8a,\r
+        // it may return positive values > 127 which cause the casted value\r
+        // of int8_t negative.\r
+        int res = uprv_strcmp(\r
             (const char*)e1.pointer, (const char*)e2.pointer);\r
+        return (res == 0) ? 0 : ((res > 0) ? 1 : -1);\r
     }, status);\r
 \r
     // A changed count to assert when loop too many times.\r
@@ -1561,11 +1739,52 @@ AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status
     if (U_FAILURE(status)) { return false; }\r
     // Nothing changed and we know the order of the vaiants are not change\r
     // because we have no variant or only one.\r
-    if (changed == 0 && variants.size() <= 1) {\r
+    const char* extensionsStr = locale_getKeywordsStart(locale.getName());\r
+    if (changed == 0 && variants.size() <= 1 && extensionsStr == nullptr) {\r
         return false;\r
     }\r
     outputToString(out, status);\r
+    if (U_FAILURE(status)) {\r
+        return false;\r
+    }\r
     if (extensionsStr != nullptr) {\r
+        changed = 0;\r
+        Locale temp(locale);\r
+        LocalPointer<icu::StringEnumeration> iter(locale.createKeywords(status));\r
+        if (U_SUCCESS(status) && !iter.isNull()) {\r
+            const char* key;\r
+            while ((key = iter->next(nullptr, status)) != nullptr) {\r
+                if (uprv_strcmp("sd", key) == 0 || uprv_strcmp("rg", key) == 0 ||\r
+                        uprv_strcmp("t", key) == 0) {\r
+                    CharString value;\r
+                    CharStringByteSink valueSink(&value);\r
+                    locale.getKeywordValue(key, valueSink, status);\r
+                    if (U_FAILURE(status)) {\r
+                        status = U_ZERO_ERROR;\r
+                        continue;\r
+                    }\r
+                    CharString replacement;\r
+                    if (uprv_strlen(key) == 2) {\r
+                        if (replaceSubdivision(value.toStringPiece(), replacement, status)) {\r
+                            changed++;\r
+                            temp.setKeywordValue(key, replacement.data(), status);\r
+                        }\r
+                    } else {\r
+                        U_ASSERT(uprv_strcmp(key, "t") == 0);\r
+                        if (replaceTransformedExtensions(value, replacement, status)) {\r
+                            changed++;\r
+                            temp.setKeywordValue(key, replacement.data(), status);\r
+                        }\r
+                    }\r
+                    if (U_FAILURE(status)) {\r
+                        return false;\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        if (changed != 0) {\r
+            extensionsStr = locale_getKeywordsStart(temp.getName());\r
+        }\r
         out.append(extensionsStr, status);\r
     }\r
     if (U_FAILURE(status)) {\r
@@ -1573,8 +1792,6 @@ AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status
     }\r
     // If the tag is not changed, return.\r
     if (uprv_strcmp(out.data(), locale.getName()) == 0) {\r
-        U_ASSERT(changed == 0);\r
-        U_ASSERT(variants.size() > 1);\r
         out.clear();\r
         return false;\r
     }\r
@@ -1636,7 +1853,7 @@ Locale& Locale::init(const char* localeID, UBool canonicalize)
 {\r
     fIsBogus = FALSE;\r
     /* Free our current storage */\r
-    if (baseName != fullName) {\r
+    if ((baseName != fullName) && (baseName != fullNameBuffer)) {\r
         uprv_free(baseName);\r
     }\r
     baseName = NULL;\r
@@ -1672,6 +1889,7 @@ Locale& Locale::init(const char* localeID, UBool canonicalize)
             uloc_getName(localeID, fullName, sizeof(fullNameBuffer), &err);\r
 \r
         if(err == U_BUFFER_OVERFLOW_ERROR || length >= (int32_t)sizeof(fullNameBuffer)) {\r
+            U_ASSERT(baseName == nullptr);\r
             /*Go to heap for the fullName if necessary*/\r
             fullName = (char *)uprv_malloc(sizeof(char)*(length + 1));\r
             if(fullName == 0) {\r
@@ -1825,7 +2043,7 @@ Locale::hashCode() const
 void\r
 Locale::setToBogus() {\r
     /* Free our current storage */\r
-    if(baseName != fullName) {\r
+    if((baseName != fullName) && (baseName != fullNameBuffer)) {\r
         uprv_free(baseName);\r
     }\r
     baseName = NULL;\r
index 9b5f590..4442f7a 100644 (file)
@@ -320,7 +320,8 @@ XLikelySubtags::~XLikelySubtags() {
 LSR XLikelySubtags::makeMaximizedLsrFrom(const Locale &locale, UErrorCode &errorCode) const {\r
     const char *name = locale.getName();\r
     if (uprv_isAtSign(name[0]) && name[1] == 'x' && name[2] == '=') {  // name.startsWith("@x=")\r
-        // Private use language tag x-subtag-subtag...\r
+        // Private use language tag x-subtag-subtag... which CLDR changes to\r
+        // und-x-subtag-subtag...\r
         return LSR(name, "", "", LSR::EXPLICIT_LSR);\r
     }\r
     return makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),\r
index ea6d529..7c09846 100644 (file)
@@ -38,7 +38,7 @@ public:
     virtual UnicodeString &\r
     normalize(const UnicodeString &src,\r
               UnicodeString &dest,\r
-              UErrorCode &errorCode) const {\r
+              UErrorCode &errorCode) const U_OVERRIDE {\r
         if(U_FAILURE(errorCode)) {\r
             dest.setToBogus();\r
             return dest;\r
@@ -64,13 +64,13 @@ public:
     virtual UnicodeString &\r
     normalizeSecondAndAppend(UnicodeString &first,\r
                              const UnicodeString &second,\r
-                             UErrorCode &errorCode) const {\r
+                             UErrorCode &errorCode) const U_OVERRIDE {\r
         return normalizeSecondAndAppend(first, second, true, errorCode);\r
     }\r
     virtual UnicodeString &\r
     append(UnicodeString &first,\r
            const UnicodeString &second,\r
-           UErrorCode &errorCode) const {\r
+           UErrorCode &errorCode) const U_OVERRIDE {\r
         return normalizeSecondAndAppend(first, second, false, errorCode);\r
     }\r
     UnicodeString &\r
@@ -107,7 +107,7 @@ public:
                        UnicodeString &safeMiddle,\r
                        ReorderingBuffer &buffer, UErrorCode &errorCode) const = 0;\r
     virtual UBool\r
-    getDecomposition(UChar32 c, UnicodeString &decomposition) const {\r
+    getDecomposition(UChar32 c, UnicodeString &decomposition) const U_OVERRIDE {\r
         UChar buffer[4];\r
         int32_t length;\r
         const UChar *d=impl.getDecomposition(c, buffer, length);\r
@@ -122,7 +122,7 @@ public:
         return true;\r
     }\r
     virtual UBool\r
-    getRawDecomposition(UChar32 c, UnicodeString &decomposition) const {\r
+    getRawDecomposition(UChar32 c, UnicodeString &decomposition) const U_OVERRIDE {\r
         UChar buffer[30];\r
         int32_t length;\r
         const UChar *d=impl.getRawDecomposition(c, buffer, length);\r
@@ -137,18 +137,18 @@ public:
         return true;\r
     }\r
     virtual UChar32\r
-    composePair(UChar32 a, UChar32 b) const {\r
+    composePair(UChar32 a, UChar32 b) const U_OVERRIDE {\r
         return impl.composePair(a, b);\r
     }\r
 \r
     virtual uint8_t\r
-    getCombiningClass(UChar32 c) const {\r
+    getCombiningClass(UChar32 c) const U_OVERRIDE {\r
         return impl.getCC(impl.getNorm16(c));\r
     }\r
 \r
     // quick checks\r
     virtual UBool\r
-    isNormalized(const UnicodeString &s, UErrorCode &errorCode) const {\r
+    isNormalized(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {\r
         if(U_FAILURE(errorCode)) {\r
             return false;\r
         }\r
@@ -161,11 +161,11 @@ public:
         return sLimit==spanQuickCheckYes(sArray, sLimit, errorCode);\r
     }\r
     virtual UNormalizationCheckResult\r
-    quickCheck(const UnicodeString &s, UErrorCode &errorCode) const {\r
+    quickCheck(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {\r
         return Normalizer2WithImpl::isNormalized(s, errorCode) ? UNORM_YES : UNORM_NO;\r
     }\r
     virtual int32_t\r
-    spanQuickCheckYes(const UnicodeString &s, UErrorCode &errorCode) const {\r
+    spanQuickCheckYes(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {\r
         if(U_FAILURE(errorCode)) {\r
             return 0;\r
         }\r
@@ -194,27 +194,57 @@ public:
 private:\r
     virtual void\r
     normalize(const UChar *src, const UChar *limit,\r
-              ReorderingBuffer &buffer, UErrorCode &errorCode) const {\r
+              ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {\r
         impl.decompose(src, limit, &buffer, errorCode);\r
     }\r
     using Normalizer2WithImpl::normalize;  // Avoid warning about hiding base class function.\r
     virtual void\r
     normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,\r
                        UnicodeString &safeMiddle,\r
-                       ReorderingBuffer &buffer, UErrorCode &errorCode) const {\r
+                       ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {\r
         impl.decomposeAndAppend(src, limit, doNormalize, safeMiddle, buffer, errorCode);\r
     }\r
+\r
+    void\r
+    normalizeUTF8(uint32_t options, StringPiece src, ByteSink &sink,\r
+                  Edits *edits, UErrorCode &errorCode) const U_OVERRIDE {\r
+        if (U_FAILURE(errorCode)) {\r
+            return;\r
+        }\r
+        if (edits != nullptr && (options & U_EDITS_NO_RESET) == 0) {\r
+            edits->reset();\r
+        }\r
+        const uint8_t *s = reinterpret_cast<const uint8_t *>(src.data());\r
+        impl.decomposeUTF8(options, s, s + src.length(), &sink, edits, errorCode);\r
+        sink.Flush();\r
+    }\r
+    virtual UBool\r
+    isNormalizedUTF8(StringPiece sp, UErrorCode &errorCode) const U_OVERRIDE {\r
+        if(U_FAILURE(errorCode)) {\r
+            return false;\r
+        }\r
+        const uint8_t *s = reinterpret_cast<const uint8_t *>(sp.data());\r
+        const uint8_t *sLimit = s + sp.length();\r
+        return sLimit == impl.decomposeUTF8(0, s, sLimit, nullptr, nullptr, errorCode);\r
+    }\r
+\r
     virtual const UChar *\r
-    spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const {\r
+    spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const U_OVERRIDE {\r
         return impl.decompose(src, limit, NULL, errorCode);\r
     }\r
     using Normalizer2WithImpl::spanQuickCheckYes;  // Avoid warning about hiding base class function.\r
-    virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const {\r
+    virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const U_OVERRIDE {\r
         return impl.isDecompYes(impl.getNorm16(c)) ? UNORM_YES : UNORM_NO;\r
     }\r
-    virtual UBool hasBoundaryBefore(UChar32 c) const { return impl.hasDecompBoundaryBefore(c); }\r
-    virtual UBool hasBoundaryAfter(UChar32 c) const { return impl.hasDecompBoundaryAfter(c); }\r
-    virtual UBool isInert(UChar32 c) const { return impl.isDecompInert(c); }\r
+    virtual UBool hasBoundaryBefore(UChar32 c) const U_OVERRIDE {\r
+        return impl.hasDecompBoundaryBefore(c);\r
+    }\r
+    virtual UBool hasBoundaryAfter(UChar32 c) const U_OVERRIDE {\r
+        return impl.hasDecompBoundaryAfter(c);\r
+    }\r
+    virtual UBool isInert(UChar32 c) const U_OVERRIDE {\r
+        return impl.isDecompInert(c);\r
+    }\r
 };\r
 \r
 class ComposeNormalizer2 : public Normalizer2WithImpl {\r
@@ -321,24 +351,30 @@ public:
 private:\r
     virtual void\r
     normalize(const UChar *src, const UChar *limit,\r
-              ReorderingBuffer &buffer, UErrorCode &errorCode) const {\r
+              ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {\r
         impl.makeFCD(src, limit, &buffer, errorCode);\r
     }\r
     using Normalizer2WithImpl::normalize;  // Avoid warning about hiding base class function.\r
     virtual void\r
     normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,\r
                        UnicodeString &safeMiddle,\r
-                       ReorderingBuffer &buffer, UErrorCode &errorCode) const {\r
+                       ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {\r
         impl.makeFCDAndAppend(src, limit, doNormalize, safeMiddle, buffer, errorCode);\r
     }\r
     virtual const UChar *\r
-    spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const {\r
+    spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const U_OVERRIDE {\r
         return impl.makeFCD(src, limit, NULL, errorCode);\r
     }\r
     using Normalizer2WithImpl::spanQuickCheckYes;  // Avoid warning about hiding base class function.\r
-    virtual UBool hasBoundaryBefore(UChar32 c) const { return impl.hasFCDBoundaryBefore(c); }\r
-    virtual UBool hasBoundaryAfter(UChar32 c) const { return impl.hasFCDBoundaryAfter(c); }\r
-    virtual UBool isInert(UChar32 c) const { return impl.isFCDInert(c); }\r
+    virtual UBool hasBoundaryBefore(UChar32 c) const U_OVERRIDE {\r
+        return impl.hasFCDBoundaryBefore(c);\r
+    }\r
+    virtual UBool hasBoundaryAfter(UChar32 c) const U_OVERRIDE {\r
+        return impl.hasFCDBoundaryAfter(c);\r
+    }\r
+    virtual UBool isInert(UChar32 c) const U_OVERRIDE {\r
+        return impl.isFCDInert(c);\r
+    }\r
 };\r
 \r
 struct Norm2AllModes : public UMemory {\r
index 897ff13..1e5c6e4 100644 (file)
@@ -731,9 +731,131 @@ UBool Normalizer2Impl::decompose(UChar32 c, uint16_t norm16,
     return buffer.append((const UChar *)mapping+1, length, TRUE, leadCC, trailCC, errorCode);\r
 }\r
 \r
+// Dual functionality:\r
+// sink != nullptr: normalize\r
+// sink == nullptr: isNormalized/spanQuickCheckYes\r
+const uint8_t *\r
+Normalizer2Impl::decomposeUTF8(uint32_t options,\r
+                               const uint8_t *src, const uint8_t *limit,\r
+                               ByteSink *sink, Edits *edits, UErrorCode &errorCode) const {\r
+    U_ASSERT(limit != nullptr);\r
+    UnicodeString s16;\r
+    uint8_t minNoLead = leadByteForCP(minDecompNoCP);\r
+\r
+    const uint8_t *prevBoundary = src;\r
+    // only for quick check\r
+    uint8_t prevCC = 0;\r
+\r
+    for (;;) {\r
+        // Fast path: Scan over a sequence of characters below the minimum "no" code point,\r
+        // or with (decompYes && ccc==0) properties.\r
+        const uint8_t *fastStart = src;\r
+        const uint8_t *prevSrc;\r
+        uint16_t norm16 = 0;\r
+\r
+        for (;;) {\r
+            if (src == limit) {\r
+                if (prevBoundary != limit && sink != nullptr) {\r
+                    ByteSinkUtil::appendUnchanged(prevBoundary, limit,\r
+                                                  *sink, options, edits, errorCode);\r
+                }\r
+                return src;\r
+            }\r
+            if (*src < minNoLead) {\r
+                ++src;\r
+            } else {\r
+                prevSrc = src;\r
+                UCPTRIE_FAST_U8_NEXT(normTrie, UCPTRIE_16, src, limit, norm16);\r
+                if (!isMostDecompYesAndZeroCC(norm16)) {\r
+                    break;\r
+                }\r
+            }\r
+        }\r
+        // isMostDecompYesAndZeroCC(norm16) is false, that is, norm16>=minYesNo,\r
+        // and the current character at [prevSrc..src[ is not a common case with cc=0\r
+        // (MIN_NORMAL_MAYBE_YES or JAMO_VT).\r
+        // It could still be a maybeYes with cc=0.\r
+        if (prevSrc != fastStart) {\r
+            // The fast path looped over yes/0 characters before the current one.\r
+            if (sink != nullptr &&\r
+                    !ByteSinkUtil::appendUnchanged(prevBoundary, prevSrc,\r
+                                                   *sink, options, edits, errorCode)) {\r
+                break;\r
+            }\r
+            prevBoundary = prevSrc;\r
+            prevCC = 0;\r
+        }\r
+\r
+        // Medium-fast path: Quick check.\r
+        if (isMaybeOrNonZeroCC(norm16)) {\r
+            // Does not decompose.\r
+            uint8_t cc = getCCFromYesOrMaybe(norm16);\r
+            if (prevCC <= cc || cc == 0) {\r
+                prevCC = cc;\r
+                if (cc <= 1) {\r
+                    if (sink != nullptr &&\r
+                            !ByteSinkUtil::appendUnchanged(prevBoundary, src,\r
+                                                           *sink, options, edits, errorCode)) {\r
+                        break;\r
+                    }\r
+                    prevBoundary = src;\r
+                }\r
+                continue;\r
+            }\r
+        }\r
+        if (sink == nullptr) {\r
+            return prevBoundary;  // quick check: "no" or cc out of order\r
+        }\r
+\r
+        // Slow path\r
+        // Decompose up to and including the current character.\r
+        if (prevBoundary != prevSrc && norm16HasDecompBoundaryBefore(norm16)) {\r
+            if (!ByteSinkUtil::appendUnchanged(prevBoundary, prevSrc,\r
+                                               *sink, options, edits, errorCode)) {\r
+                break;\r
+            }\r
+            prevBoundary = prevSrc;\r
+        }\r
+        ReorderingBuffer buffer(*this, s16, errorCode);\r
+        if (U_FAILURE(errorCode)) {\r
+            break;\r
+        }\r
+        decomposeShort(prevBoundary, src, STOP_AT_LIMIT, FALSE /* onlyContiguous */,\r
+                       buffer, errorCode);\r
+        // Decompose until the next boundary.\r
+        if (buffer.getLastCC() > 1) {\r
+            src = decomposeShort(src, limit, STOP_AT_DECOMP_BOUNDARY, FALSE /* onlyContiguous */,\r
+                                 buffer, errorCode);\r
+        }\r
+        if (U_FAILURE(errorCode)) {\r
+            break;\r
+        }\r
+        if ((src - prevSrc) > INT32_MAX) {  // guard before buffer.equals()\r
+            errorCode = U_INDEX_OUTOFBOUNDS_ERROR;\r
+            break;\r
+        }\r
+        // We already know there was a change if the original character decomposed;\r
+        // otherwise compare.\r
+        if (isMaybeOrNonZeroCC(norm16) && buffer.equals(prevBoundary, src)) {\r
+            if (!ByteSinkUtil::appendUnchanged(prevBoundary, src,\r
+                                               *sink, options, edits, errorCode)) {\r
+                break;\r
+            }\r
+        } else {\r
+            if (!ByteSinkUtil::appendChange(prevBoundary, src, buffer.getStart(), buffer.length(),\r
+                                            *sink, edits, errorCode)) {\r
+                break;\r
+            }\r
+        }\r
+        prevBoundary = src;\r
+        prevCC = 0;\r
+    }\r
+    return src;\r
+}\r
+\r
 const uint8_t *\r
 Normalizer2Impl::decomposeShort(const uint8_t *src, const uint8_t *limit,\r
-                                UBool stopAtCompBoundary, UBool onlyContiguous,\r
+                                StopAt stopAt, UBool onlyContiguous,\r
                                 ReorderingBuffer &buffer, UErrorCode &errorCode) const {\r
     if (U_FAILURE(errorCode)) {\r
         return nullptr;\r
@@ -746,21 +868,28 @@ Normalizer2Impl::decomposeShort(const uint8_t *src, const uint8_t *limit,
         UChar32 c = U_SENTINEL;\r
         if (norm16 >= limitNoNo) {\r
             if (isMaybeOrNonZeroCC(norm16)) {\r
-                // No boundaries around this character.\r
+                // No comp boundaries around this character.\r
+                uint8_t cc = getCCFromYesOrMaybe(norm16);\r
+                if (cc == 0 && stopAt == STOP_AT_DECOMP_BOUNDARY) {\r
+                    return prevSrc;\r
+                }\r
                 c = codePointFromValidUTF8(prevSrc, src);\r
-                if (!buffer.append(c, getCCFromYesOrMaybe(norm16), errorCode)) {\r
+                if (!buffer.append(c, cc, errorCode)) {\r
                     return nullptr;\r
                 }\r
+                if (stopAt == STOP_AT_DECOMP_BOUNDARY && buffer.getLastCC() <= 1) {\r
+                    return src;\r
+                }\r
                 continue;\r
             }\r
             // Maps to an isCompYesAndZeroCC.\r
-            if (stopAtCompBoundary) {\r
+            if (stopAt != STOP_AT_LIMIT) {\r
                 return prevSrc;\r
             }\r
             c = codePointFromValidUTF8(prevSrc, src);\r
             c = mapAlgorithmic(c, norm16);\r
             norm16 = getRawNorm16(c);\r
-        } else if (stopAtCompBoundary && norm16 < minNoNoCompNoMaybeCC) {\r
+        } else if (stopAt != STOP_AT_LIMIT && norm16 < minNoNoCompNoMaybeCC) {\r
             return prevSrc;\r
         }\r
         // norm16!=INERT guarantees that [prevSrc, src[ is valid UTF-8.\r
@@ -768,7 +897,8 @@ Normalizer2Impl::decomposeShort(const uint8_t *src, const uint8_t *limit,
         // its norm16==INERT is normalization-inert,\r
         // so it gets copied unchanged in the fast path,\r
         // and we stop the slow path where invalid UTF-8 begins.\r
-        U_ASSERT(norm16 != INERT);\r
+        // c >= 0 is the result of an algorithmic mapping.\r
+        U_ASSERT(c >= 0 || norm16 != INERT);\r
         if (norm16 < minYesNo) {\r
             if (c < 0) {\r
                 c = codePointFromValidUTF8(prevSrc, src);\r
@@ -798,11 +928,15 @@ Normalizer2Impl::decomposeShort(const uint8_t *src, const uint8_t *limit,
             } else {\r
                 leadCC = 0;\r
             }\r
+            if (leadCC == 0 && stopAt == STOP_AT_DECOMP_BOUNDARY) {\r
+                return prevSrc;\r
+            }\r
             if (!buffer.append((const char16_t *)mapping+1, length, TRUE, leadCC, trailCC, errorCode)) {\r
                 return nullptr;\r
             }\r
         }\r
-        if (stopAtCompBoundary && norm16HasCompBoundaryAfter(norm16, onlyContiguous)) {\r
+        if ((stopAt == STOP_AT_COMP_BOUNDARY && norm16HasCompBoundaryAfter(norm16, onlyContiguous)) ||\r
+                (stopAt == STOP_AT_DECOMP_BOUNDARY && buffer.getLastCC() <= 1)) {\r
             return src;\r
         }\r
     }\r
@@ -1954,10 +2088,10 @@ Normalizer2Impl::composeUTF8(uint32_t options, UBool onlyContiguous,
             break;\r
         }\r
         // We know there is not a boundary here.\r
-        decomposeShort(prevSrc, src, FALSE /* !stopAtCompBoundary */, onlyContiguous,\r
+        decomposeShort(prevSrc, src, STOP_AT_LIMIT, onlyContiguous,\r
                        buffer, errorCode);\r
         // Decompose until the next boundary.\r
-        src = decomposeShort(src, limit, TRUE /* stopAtCompBoundary */, onlyContiguous,\r
+        src = decomposeShort(src, limit, STOP_AT_COMP_BOUNDARY, onlyContiguous,\r
                              buffer, errorCode);\r
         if (U_FAILURE(errorCode)) {\r
             break;\r
index 8b17160..07c03e3 100644 (file)
@@ -491,6 +491,12 @@ public:
                             UnicodeString &safeMiddle,\r
                             ReorderingBuffer &buffer,\r
                             UErrorCode &errorCode) const;\r
+\r
+    /** sink==nullptr: isNormalized()/spanQuickCheckYes() */\r
+    const uint8_t *decomposeUTF8(uint32_t options,\r
+                                 const uint8_t *src, const uint8_t *limit,\r
+                                 ByteSink *sink, Edits *edits, UErrorCode &errorCode) const;\r
+\r
     UBool compose(const UChar *src, const UChar *limit,\r
                   UBool onlyContiguous,\r
                   UBool doCompose,\r
@@ -649,6 +655,9 @@ private:
                                                 UChar32 minNeedDataCP,\r
                                                 ReorderingBuffer *buffer,\r
                                                 UErrorCode &errorCode) const;\r
+\r
+    enum StopAt { STOP_AT_LIMIT, STOP_AT_DECOMP_BOUNDARY, STOP_AT_COMP_BOUNDARY };\r
+\r
     const UChar *decomposeShort(const UChar *src, const UChar *limit,\r
                                 UBool stopAtCompBoundary, UBool onlyContiguous,\r
                                 ReorderingBuffer &buffer, UErrorCode &errorCode) const;\r
@@ -656,7 +665,7 @@ private:
                     ReorderingBuffer &buffer, UErrorCode &errorCode) const;\r
 \r
     const uint8_t *decomposeShort(const uint8_t *src, const uint8_t *limit,\r
-                                  UBool stopAtCompBoundary, UBool onlyContiguous,\r
+                                  StopAt stopAt, UBool onlyContiguous,\r
                                   ReorderingBuffer &buffer, UErrorCode &errorCode) const;\r
 \r
     static int32_t combine(const uint16_t *list, UChar32 trail);\r
index 6a42b28..e718b44 100644 (file)
@@ -24,7 +24,7 @@ class U_COMMON_API PluralMapBase : public UMemory {
 public:\r
     /**\r
      * The names of all the plural categories. NONE is not an actual plural\r
-     * category, but rather represents the absense of a plural category.\r
+     * category, but rather represents the absence of a plural category.\r
      */\r
     enum Category {\r
         NONE = -1,\r
index b52f3a5..bd68301 100644 (file)
@@ -1139,7 +1139,7 @@ uprv_tzname(int n)
 #endif\r
     if (tzid != NULL && isValidOlsonID(tzid)\r
 #if U_PLATFORM == U_PF_SOLARIS\r
-    /* When TZ equals localtime on Solaris, check the /etc/localtime file. */\r
+    /* Don't misinterpret TZ "localtime" on Solaris as a time zone name. */\r
         && uprv_strcmp(tzid, TZ_ENV_CHECK) != 0\r
 #endif\r
     ) {\r
@@ -1361,7 +1361,7 @@ uprv_pathIsAbsolute(const char *path)
 \r
 /* Backup setting of ICU_DATA_DIR_PREFIX_ENV_VAR\r
    (needed for some Darwin ICU build environments) */\r
-#if U_PLATFORM_IS_DARWIN_BASED && TARGET_OS_SIMULATOR\r
+#if U_PLATFORM_IS_DARWIN_BASED && defined(TARGET_OS_SIMULATOR) && TARGET_OS_SIMULATOR\r
 # if !defined(ICU_DATA_DIR_PREFIX_ENV_VAR)\r
 #  define ICU_DATA_DIR_PREFIX_ENV_VAR "IPHONE_SIMULATOR_ROOT"\r
 # endif\r
index b7af045..64b72b2 100644 (file)
@@ -527,7 +527,7 @@ U_CAPI void * U_EXPORT2 uprv_maximumPtr(void *base);
  * on the destination pointer and capacity cannot overflow.\r
  *\r
  * The pinned capacity must fulfill the following conditions (for positive capacities):\r
- *   - dest + capacity is a valid pointer according to the machine arcitecture (AS/400, 64-bit, etc.)\r
+ *   - dest + capacity is a valid pointer according to the machine architecture (AS/400, 64-bit, etc.)\r
  *   - (dest + capacity) >= dest\r
  *   - The size (in bytes) of T[capacity] does not exceed 0x7fffffff\r
  *\r
index 09cb98e..6179bcf 100644 (file)
@@ -812,7 +812,7 @@ int32_t RuleBasedBreakIterator::handleNext() {
         }\r
     #endif\r
 \r
-    // handleNext alway sets the break tag value.\r
+    // handleNext always sets the break tag value.\r
     // Set the default for it.\r
     fRuleStatusIndex = 0;\r
 \r
index 138953d..c13fba1 100644 (file)
@@ -258,7 +258,7 @@ void RuleBasedBreakIterator::BreakCache::preceding(int32_t startPos, UErrorCode
             previous(status);\r
         } else {\r
             // seek() leaves the BreakCache positioned at the preceding boundary\r
-            //        if the requested position is between two bounaries.\r
+            //        if the requested position is between two boundaries.\r
             // current() pushes the BreakCache position out to the BreakIterator itself.\r
             U_ASSERT(startPos > fTextIdx);\r
             current();\r
index b78ef9a..b77e856 100644 (file)
@@ -284,7 +284,7 @@ UBool RBBIRuleScanner::doParseActions(int32_t action)
 \r
     case doEndAssign:\r
         {\r
-            // We have reached the end of an assignement statement.\r
+            // We have reached the end of an assignment statement.\r
             //   Current scan char is the ';' that terminates the assignment.\r
 \r
             // Terminate expression, leaves expression parse tree rooted in TOS node.\r
@@ -856,6 +856,10 @@ UChar32  RBBIRuleScanner::nextCharLL() {
         return (UChar32)-1;\r
     }\r
     ch         = fRB->fRules.char32At(fNextIndex);\r
+    if (U_IS_SURROGATE(ch)) {\r
+        error(U_ILLEGAL_CHAR_FOUND);\r
+        return U_SENTINEL;\r
+    }\r
     fNextIndex = fRB->fRules.moveIndex32(fNextIndex, 1);\r
 \r
     if (ch == chCR ||\r
index ed0afeb..24cd136 100644 (file)
@@ -151,7 +151,7 @@ void  RBBITableBuilder::buildForwardTable() {
     //\r
     // calculate the functions nullable, firstpos, lastpos and followpos on\r
     // nodes in the parse tree.\r
-    //    See the alogrithm description in Aho.\r
+    //    See the algorithm description in Aho.\r
     //    Understanding how this works by looking at the code alone will be\r
     //       nearly impossible.\r
     //\r
index 542bd59..b96c3a0 100644 (file)
@@ -274,8 +274,10 @@ public:
      *\r
      * @param key The key string of the enumeration-start resource.\r
      *     Empty if the enumeration starts at the top level of the bundle.\r
-     * @param value Call getArray() or getTable() as appropriate.\r
-     *     Then reuse for output values from Array and Table getters.\r
+     * @param value Call getArray() or getTable() as appropriate. Then reuse for\r
+     *     output values from Array and Table getters. Note: ResourceTable and\r
+     *     ResourceArray instances must outlive the ResourceValue instance for\r
+     *     ResourceTracer to be happy.\r
      * @param noFallback true if the bundle has no parent;\r
      *     that is, its top-level table has the nofallback attribute,\r
      *     or it is the root bundle of a locale tree.\r
index 939d728..1f76167 100644 (file)
@@ -54,6 +54,9 @@ void ResourceTracer::traceOpen() const {
 \r
 CharString& ResourceTracer::getFilePath(CharString& output, UErrorCode& status) const {\r
     if (fResB) {\r
+        // Note: if you get a segfault around here, check that ResourceTable and\r
+        // ResourceArray instances outlive ResourceValue instances referring to\r
+        // their contents:\r
         output.append(fResB->fData->fPath, status);\r
         output.append('/', status);\r
         output.append(fResB->fData->fName, status);\r
index 23156db..68144b5 100644 (file)
@@ -82,7 +82,7 @@ public:
     /**\r
      * Add a listener to be notified when notifyChanged is called.\r
      * The listener must not be null. AcceptsListener must return\r
-     * true for the listener.  Attempts to concurrently\r
+     * true for the listener. Attempts to concurrently\r
      * register the identical listener more than once will be\r
      * silently ignored.  \r
      */\r
@@ -90,7 +90,7 @@ public:
     \r
     /**\r
      * Stop notifying this listener.  The listener must\r
-     * not be null.  Attemps to remove a listener that is\r
+     * not be null. Attempts to remove a listener that is\r
      * not registered will be silently ignored.\r
      */\r
     virtual void removeListener(const EventListener* l, UErrorCode& status);\r
index c03cd29..3977ab2 100644 (file)
@@ -174,6 +174,18 @@ ubrk_safeClone(
     return (UBreakIterator *)newBI;\r
 }\r
 \r
+U_CAPI UBreakIterator * U_EXPORT2\r
+ubrk_clone(const UBreakIterator *bi, UErrorCode *status) {\r
+    if (U_FAILURE(*status)) {\r
+        return nullptr;\r
+    }\r
+    BreakIterator *newBI = ((BreakIterator *)bi)->clone();\r
+    if (newBI == nullptr) {\r
+        *status = U_MEMORY_ALLOCATION_ERROR;\r
+        return nullptr;\r
+    }\r
+    return (UBreakIterator *)newBI;\r
+}\r
 \r
 \r
 U_CAPI void U_EXPORT2\r
index 9bcb3b4..528f6ea 100644 (file)
@@ -681,7 +681,7 @@ ucase_isCaseSensitive(UChar32 c) {
  *   - In [CoreProps], C has one of the properties Uppercase, or Lowercase\r
  *   - Given D = NFD(C), then it is not the case that:\r
  *     D = UCD_lower(D) = UCD_upper(D) = UCD_title(D)\r
- *     (This third criterium does not add any characters to the list\r
+ *     (This third criterion does not add any characters to the list\r
  *      for Unicode 3.2. Ignored.)\r
  *\r
  * D2. A character C is defined to be case-ignorable\r
index 1e9ae4e..3677e12 100644 (file)
@@ -194,7 +194,7 @@ u_isISOControl(UChar32 c) {
 \r
 /* Some control characters that are used as space. */\r
 #define IS_THAT_CONTROL_SPACE(c) \\r
-    (c<=0x9f && ((c>=TAB && c<=CR) || (c>=0x1c && c <=0x1f) || c==NL))\r
+    (c<=0x9f && ((c>=TAB && c<=CR) || (c>=0x1c && c <=0x1f) || c==0x85))\r
 \r
 /* Java has decided that U+0085 New Line is not whitespace any more. */\r
 #define IS_THAT_ASCII_CONTROL_SPACE(c) \\r
@@ -677,14 +677,14 @@ uchar_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
     sa->add(sa->set, CR+1); /* range TAB..CR */\r
     sa->add(sa->set, 0x1c);\r
     sa->add(sa->set, 0x1f+1);\r
-    USET_ADD_CP_AND_NEXT(sa, NL);\r
+    USET_ADD_CP_AND_NEXT(sa, 0x85);  // NEXT LINE (NEL)\r
 \r
     /* add for u_isIDIgnorable() what was not added above */\r
-    sa->add(sa->set, DEL); /* range DEL..NBSP-1, NBSP added below */\r
+    sa->add(sa->set, 0x7f); /* range DEL..NBSP-1, NBSP added below */\r
     sa->add(sa->set, HAIRSP);\r
     sa->add(sa->set, RLM+1);\r
-    sa->add(sa->set, INHSWAP);\r
-    sa->add(sa->set, NOMDIG+1);\r
+    sa->add(sa->set, 0x206a);  // INHIBIT SYMMETRIC SWAPPING\r
+    sa->add(sa->set, 0x206f+1);  // NOMINAL DIGIT SHAPES\r
     USET_ADD_CP_AND_NEXT(sa, ZWNBSP);\r
 \r
     /* add no-break spaces for u_isWhitespace() what was not added above */\r
@@ -693,23 +693,25 @@ uchar_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
     USET_ADD_CP_AND_NEXT(sa, NNBSP);\r
 \r
     /* add for u_digit() */\r
-    sa->add(sa->set, U_a);\r
-    sa->add(sa->set, U_z+1);\r
-    sa->add(sa->set, U_A);\r
-    sa->add(sa->set, U_Z+1);\r
-    sa->add(sa->set, U_FW_a);\r
-    sa->add(sa->set, U_FW_z+1);\r
-    sa->add(sa->set, U_FW_A);\r
-    sa->add(sa->set, U_FW_Z+1);\r
+    sa->add(sa->set, u'a');\r
+    sa->add(sa->set, u'z'+1);\r
+    sa->add(sa->set, u'A');\r
+    sa->add(sa->set, u'Z'+1);\r
+    // fullwidth\r
+    sa->add(sa->set, u'a');\r
+    sa->add(sa->set, u'z'+1);\r
+    sa->add(sa->set, u'A');\r
+    sa->add(sa->set, u'Z'+1);\r
 \r
     /* add for u_isxdigit() */\r
-    sa->add(sa->set, U_f+1);\r
-    sa->add(sa->set, U_F+1);\r
-    sa->add(sa->set, U_FW_f+1);\r
-    sa->add(sa->set, U_FW_F+1);\r
+    sa->add(sa->set, u'f'+1);\r
+    sa->add(sa->set, u'F'+1);\r
+    // fullwidth\r
+    sa->add(sa->set, u'f'+1);\r
+    sa->add(sa->set, u'F'+1);\r
 \r
     /* add for UCHAR_DEFAULT_IGNORABLE_CODE_POINT what was not added above */\r
-    sa->add(sa->set, WJ); /* range WJ..NOMDIG */\r
+    sa->add(sa->set, 0x2060); /* range 2060..206f */\r
     sa->add(sa->set, 0xfff0);\r
     sa->add(sa->set, 0xfffb+1);\r
     sa->add(sa->set, 0xe0000);\r
index a4cb950..96f5c48 100644 (file)
@@ -820,7 +820,7 @@ getKey_2022(char c,int32_t* key,int32_t* offset){
     return INVALID_2022;\r
 }\r
 \r
-/*runs through a state machine to determine the escape sequence - codepage correspondance\r
+/*runs through a state machine to determine the escape sequence - codepage correspondence\r
  */\r
 static void\r
 changeState_2022(UConverter* _this,\r
@@ -1424,7 +1424,7 @@ toUnicodeCallback(UConverter *cnv,
 *          KSC5601 : alias to ibm-949 mapping table\r
 *          GB2312 : alias to ibm-1386 mapping table\r
 *          ISO-8859-1 : Algorithmic implemented as LATIN1 case\r
-*          ISO-8859-7 : alisas to ibm-9409 mapping table\r
+*          ISO-8859-7 : alias to ibm-9409 mapping table\r
 */\r
 \r
 /* preference order of JP charsets */\r
@@ -2324,7 +2324,7 @@ endloop:
 /***************************************************************\r
 *   Rules for ISO-2022-KR encoding\r
 *   i) The KSC5601 designator sequence should appear only once in a file,\r
-*      at the begining of a line before any KSC5601 characters. This usually\r
+*      at the beginning of a line before any KSC5601 characters. This usually\r
 *      means that it appears by itself on the first line of the file\r
 *  ii) There are only 2 shifting sequences SO to shift into double byte mode\r
 *      and SI to shift into single byte mode\r
index bcc4383..4f6b4b1 100644 (file)
@@ -427,7 +427,7 @@ getAlgorithmicTypeFromName(const char *realName)
 #define UCNV_CACHE_LOAD_FACTOR 2\r
 \r
 /* Puts the shared data in the static hashtable SHARED_DATA_HASHTABLE */\r
-/*   Will always be called with the cnvCacheMutex alrady being held   */\r
+/*   Will always be called with the cnvCacheMutex already being held   */\r
 /*     by the calling function.                                       */\r
 /* Stores the shared data in the SHARED_DATA_HASHTABLE\r
  * @param data The shared data\r
index 0e2ba34..7e914eb 100644 (file)
@@ -321,7 +321,7 @@ UCNV_FROM_U_CALLBACK_ESCAPE (
       case UCNV_PRV_ESCAPE_CSS2:\r
           valueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT;    /* adding \ */\r
           valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 0);\r
-          /* Always add space character, becase the next character might be whitespace,\r
+          /* Always add space character, because the next character might be whitespace,\r
              which would erroneously be considered the termination of the escape sequence. */\r
           valueString[valueStringLength++] = (UChar) UNICODE_SPACE_CODEPOINT;\r
           break;\r
index 3368dbe..a81ccd6 100644 (file)
@@ -81,7 +81,7 @@
   [G] D1 [D2]\r
 \r
   That is, a sometimes-optional 'group' byte, followed by 1 and sometimes 2\r
-  data bytes. The maximum size of a LMBCS chjaracter is 3 bytes:\r
+  data bytes. The maximum size of a LMBCS character is 3 bytes:\r
 */\r
 #define ULMBCS_CHARSIZE_MAX      3\r
 /*\r
@@ -164,7 +164,7 @@ beginning of internal 'system' range names: */
 /* Then we needed a place to put all the other ansi control characters \r
 that must be moved to different values because LMBCS reserves those \r
 values for other purposes. To represent the control characters, we start \r
-with a first byte of 0xF & add the control chaarcter value as the \r
+with a first byte of 0xF & add the control character value as the \r
 second byte */\r
 #define ULMBCS_GRP_CTRL       0x0F   \r
 \r
index bf7f0b6..cb46307 100644 (file)
@@ -814,7 +814,7 @@ const UConverterSharedData _UTF7Data=
  *       the use of "~" in some servers as a home directory indicator.\r
  *\r
  *    5) UTF-7 permits multiple alternate forms to represent the same\r
- *       string; in particular, printable US-ASCII chararacters can be\r
+ *       string; in particular, printable US-ASCII characters can be\r
  *       represented in encoded form.\r
  *\r
  * In modified UTF-7, printable US-ASCII characters except for "&"\r
index 0c09016..80a2360 100644 (file)
@@ -992,7 +992,7 @@ UConverter_fromUnicode_ISCII_OFFSETS_LOGIC(
                     \r
                     if (converterData->currentDeltaFromUnicode == PNJ_DELTA) { \r
                         if (sourceChar == PNJ_TIPPI) {\r
-                            /* Make sure Tippi is converterd to Bindi. */\r
+                            /* Make sure Tippi is converted to Bindi. */\r
                             sourceChar = PNJ_BINDI;\r
                         } else if (sourceChar == PNJ_ADHAK) {\r
                             /* This is for consonant cluster handling. */\r
@@ -1147,7 +1147,7 @@ static const uint16_t lookupTable[][2]={
     /* is the code point valid in current script? */                                     \\r
     if(sourceChar> ASCII_END &&                                                          \\r
             (validityTable[(targetUniChar & 0x7F)] & data->currentMaskToUnicode)==0){    \\r
-        /* Vocallic RR is assigne in ISCII Telugu and Unicode */                         \\r
+        /* Vocallic RR is assigned in ISCII Telugu and Unicode */                         \\r
         if(data->currentDeltaToUnicode!=(TELUGU_DELTA) ||                                \\r
                     targetUniChar!=VOCALLIC_RR){                                         \\r
             targetUniChar=missingCharMarker;                                             \\r
@@ -1272,7 +1272,7 @@ UConverter_toUnicode_ISCII_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UErrorCo
                 goto CALLBACK;\r
             } else if (*contextCharToUnicode==ISCII_INV) {\r
                 if (sourceChar==ISCII_HALANT) {\r
-                    targetUniChar = 0x0020; /* replace with space accoding to Indic FAQ */\r
+                    targetUniChar = 0x0020; /* replace with space according to Indic FAQ */\r
                 } else {\r
                     targetUniChar = ZWJ;\r
                 }\r
index 8775388..9ec7300 100644 (file)
@@ -844,7 +844,7 @@ typedef struct {
 #endif\r
 \r
 \r
-// Comparason function used in quick sort.\r
+// Comparison function used in quick sort.\r
 static int U_CALLCONV currencyNameComparator(const void* a, const void* b) {\r
     const CurrencyNameStruct* currName_1 = (const CurrencyNameStruct*)a;\r
     const CurrencyNameStruct* currName_2 = (const CurrencyNameStruct*)b;\r
@@ -1530,7 +1530,7 @@ uprv_parseCurrency(const char* locale,
 \r
     int32_t max = 0;\r
     int32_t matchIndex = -1;\r
-    // case in-sensitive comparision against currency names\r
+    // case in-sensitive comparison against currency names\r
     searchCurrencyName(currencyNames, total_currency_name_count, \r
                        upperText, textLen, partialMatchLen, &max, &matchIndex);\r
 \r
index 3d2435c..8c09d17 100644 (file)
@@ -133,8 +133,10 @@ static const float RESIZE_POLICY_RATIO_TABLE[6] = {
  * or a pointer.  If a hint bit is zero, then the associated\r
  * token is assumed to be an integer.\r
  */\r
+#define HINT_BOTH_INTEGERS (0)\r
 #define HINT_KEY_POINTER   (1)\r
 #define HINT_VALUE_POINTER (2)\r
+#define HINT_ALLOW_ZERO    (4)\r
 \r
 /********************************************************************\r
  * PRIVATE Implementation\r
@@ -479,8 +481,9 @@ _uhash_put(UHashtable *hash,
         goto err;\r
     }\r
     U_ASSERT(hash != NULL);\r
-    /* Cannot always check pointer here or iSeries sees NULL every time. */\r
-    if ((hint & HINT_VALUE_POINTER) && value.pointer == NULL) {\r
+    if ((hint & HINT_VALUE_POINTER) ?\r
+            value.pointer == NULL :\r
+            value.integer == 0 && (hint & HINT_ALLOW_ZERO) == 0) {\r
         /* Disallow storage of NULL values, since NULL is returned by\r
          * get() to indicate an absent key.  Storing NULL == removing.\r
          */\r
@@ -687,6 +690,28 @@ uhash_igeti(const UHashtable *hash,
     return _uhash_find(hash, keyholder, hash->keyHasher(keyholder))->value.integer;\r
 }\r
 \r
+U_CAPI int32_t U_EXPORT2\r
+uhash_getiAndFound(const UHashtable *hash,\r
+                   const void *key,\r
+                   UBool *found) {\r
+    UHashTok keyholder;\r
+    keyholder.pointer = (void *)key;\r
+    const UHashElement *e = _uhash_find(hash, keyholder, hash->keyHasher(keyholder));\r
+    *found = !IS_EMPTY_OR_DELETED(e->hashcode);\r
+    return e->value.integer;\r
+}\r
+\r
+U_CAPI int32_t U_EXPORT2\r
+uhash_igetiAndFound(const UHashtable *hash,\r
+                    int32_t key,\r
+                    UBool *found) {\r
+    UHashTok keyholder;\r
+    keyholder.integer = key;\r
+    const UHashElement *e = _uhash_find(hash, keyholder, hash->keyHasher(keyholder));\r
+    *found = !IS_EMPTY_OR_DELETED(e->hashcode);\r
+    return e->value.integer;\r
+}\r
+\r
 U_CAPI void* U_EXPORT2\r
 uhash_put(UHashtable *hash,\r
           void* key,\r
@@ -736,7 +761,34 @@ uhash_iputi(UHashtable *hash,
     keyholder.integer = key;\r
     valueholder.integer = value;\r
     return _uhash_put(hash, keyholder, valueholder,\r
-                      0, /* neither is a ptr */\r
+                      HINT_BOTH_INTEGERS,\r
+                      status).integer;\r
+}\r
+\r
+U_CAPI int32_t U_EXPORT2\r
+uhash_putiAllowZero(UHashtable *hash,\r
+                    void *key,\r
+                    int32_t value,\r
+                    UErrorCode *status) {\r
+    UHashTok keyholder, valueholder;\r
+    keyholder.pointer = key;\r
+    valueholder.integer = value;\r
+    return _uhash_put(hash, keyholder, valueholder,\r
+                      HINT_KEY_POINTER | HINT_ALLOW_ZERO,\r
+                      status).integer;\r
+}\r
+\r
+\r
+U_CAPI int32_t U_EXPORT2\r
+uhash_iputiAllowZero(UHashtable *hash,\r
+                     int32_t key,\r
+                     int32_t value,\r
+                     UErrorCode *status) {\r
+    UHashTok keyholder, valueholder;\r
+    keyholder.integer = key;\r
+    valueholder.integer = value;\r
+    return _uhash_put(hash, keyholder, valueholder,\r
+                      HINT_BOTH_INTEGERS | HINT_ALLOW_ZERO,\r
                       status).integer;\r
 }\r
 \r
@@ -785,6 +837,29 @@ uhash_removeAll(UHashtable *hash) {
     U_ASSERT(hash->count == 0);\r
 }\r
 \r
+U_CAPI UBool U_EXPORT2\r
+uhash_containsKey(const UHashtable *hash, const void *key) {\r
+    UHashTok keyholder;\r
+    keyholder.pointer = (void *)key;\r
+    const UHashElement *e = _uhash_find(hash, keyholder, hash->keyHasher(keyholder));\r
+    return !IS_EMPTY_OR_DELETED(e->hashcode);\r
+}\r
+\r
+/**\r
+ * Returns true if the UHashtable contains an item with this integer key.\r
+ *\r
+ * @param hash The target UHashtable.\r
+ * @param key An integer key stored in a hashtable\r
+ * @return true if the key is found.\r
+ */\r
+U_CAPI UBool U_EXPORT2\r
+uhash_icontainsKey(const UHashtable *hash, int32_t key) {\r
+    UHashTok keyholder;\r
+    keyholder.integer = key;\r
+    const UHashElement *e = _uhash_find(hash, keyholder, hash->keyHasher(keyholder));\r
+    return !IS_EMPTY_OR_DELETED(e->hashcode);\r
+}\r
+\r
 U_CAPI const UHashElement* U_EXPORT2\r
 uhash_find(const UHashtable *hash, const void* key) {\r
     UHashTok keyholder;\r
index 1ab496f..7bf9532 100644 (file)
@@ -23,7 +23,7 @@
 /**\r
  * UHashtable stores key-value pairs and does moderately fast lookup\r
  * based on keys.  It provides a good tradeoff between access time and\r
- * storage space.  As elements are added to it, it grows to accomodate\r
+ * storage space.  As elements are added to it, it grows to accommodate\r
  * them.  By default, the table never shrinks, even if all elements\r
  * are removed from it.\r
  *\r
  * uhash_remove() on that key.  This keeps uhash_get(), uhash_count(),\r
  * and uhash_nextElement() consistent with one another.\r
  *\r
+ * Keys and values can be integers.\r
+ * Functions that work with an integer key have an "i" prefix.\r
+ * Functions that work with an integer value have an "i" suffix.\r
+ * As with putting a NULL value pointer, putting a zero value integer removes the item.\r
+ * Except, there are pairs of functions that allow setting zero values\r
+ * and fetching (value, found) pairs.\r
+ *\r
  * To see everything in a hashtable, use uhash_nextElement() to\r
  * iterate through its contents.  Each call to this function returns a\r
  * UHashElement pointer.  A hash element contains a key, value, and\r
@@ -406,6 +413,44 @@ uhash_iputi(UHashtable *hash,
            UErrorCode *status);\r
 \r
 /**\r
+ * Put a (key=pointer, value=integer) item in a UHashtable.  If the\r
+ * keyDeleter is non-NULL, then the hashtable owns 'key' after this\r
+ * call.  valueDeleter must be NULL.\r
+ * Storing a 0 value is possible; call uhash_igetiAndFound() to retrieve values including zero.\r
+ *\r
+ * @param hash The target UHashtable.\r
+ * @param key The key to store.\r
+ * @param value The integer value to store.\r
+ * @param status A pointer to an UErrorCode to receive any errors.\r
+ * @return The previous value, or 0 if none.\r
+ * @see uhash_getiAndFound\r
+ */\r
+U_CAPI int32_t U_EXPORT2\r
+uhash_putiAllowZero(UHashtable *hash,\r
+                    void *key,\r
+                    int32_t value,\r
+                    UErrorCode *status);\r
+\r
+/**\r
+ * Put a (key=integer, value=integer) item in a UHashtable.  If the\r
+ * keyDeleter is non-NULL, then the hashtable owns 'key' after this\r
+ * call.  valueDeleter must be NULL.\r
+ * Storing a 0 value is possible; call uhash_igetiAndFound() to retrieve values including zero.\r
+ *\r
+ * @param hash The target UHashtable.\r
+ * @param key The key to store.\r
+ * @param value The integer value to store.\r
+ * @param status A pointer to an UErrorCode to receive any errors.\r
+ * @return The previous value, or 0 if none.\r
+ * @see uhash_igetiAndFound\r
+ */\r
+U_CAPI int32_t U_EXPORT2\r
+uhash_iputiAllowZero(UHashtable *hash,\r
+                     int32_t key,\r
+                     int32_t value,\r
+                     UErrorCode *status);\r
+\r
+/**\r
  * Retrieve a pointer value from a UHashtable using a pointer key,\r
  * as previously stored by uhash_put().\r
  * @param hash The target UHashtable.\r
@@ -449,6 +494,34 @@ uhash_igeti(const UHashtable *hash,
            int32_t key);\r
 \r
 /**\r
+ * Retrieves an integer value from a UHashtable using a pointer key,\r
+ * as previously stored by uhash_putiAllowZero() or uhash_puti().\r
+ *\r
+ * @param hash The target UHashtable.\r
+ * @param key A pointer key stored in a hashtable\r
+ * @param found A pointer to a boolean which will be set for whether the key was found.\r
+ * @return The requested item, or 0 if not found.\r
+ */\r
+U_CAPI int32_t U_EXPORT2\r
+uhash_getiAndFound(const UHashtable *hash,\r
+                   const void *key,\r
+                   UBool *found);\r
+\r
+/**\r
+ * Retrieves an integer value from a UHashtable using an integer key,\r
+ * as previously stored by uhash_iputiAllowZero() or uhash_iputi().\r
+ *\r
+ * @param hash The target UHashtable.\r
+ * @param key An integer key stored in a hashtable\r
+ * @param found A pointer to a boolean which will be set for whether the key was found.\r
+ * @return The requested item, or 0 if not found.\r
+ */\r
+U_CAPI int32_t U_EXPORT2\r
+uhash_igetiAndFound(const UHashtable *hash,\r
+                    int32_t key,\r
+                    UBool *found);\r
+\r
+/**\r
  * Remove an item from a UHashtable stored by uhash_put().\r
  * @param hash The target UHashtable.\r
  * @param key A key stored in a hashtable\r
@@ -496,6 +569,26 @@ U_CAPI void U_EXPORT2
 uhash_removeAll(UHashtable *hash);\r
 \r
 /**\r
+ * Returns true if the UHashtable contains an item with this pointer key.\r
+ *\r
+ * @param hash The target UHashtable.\r
+ * @param key A pointer key stored in a hashtable\r
+ * @return true if the key is found.\r
+ */\r
+U_CAPI UBool U_EXPORT2\r
+uhash_containsKey(const UHashtable *hash, const void *key);\r
+\r
+/**\r
+ * Returns true if the UHashtable contains an item with this integer key.\r
+ *\r
+ * @param hash The target UHashtable.\r
+ * @param key An integer key stored in a hashtable\r
+ * @return true if the key is found.\r
+ */\r
+U_CAPI UBool U_EXPORT2\r
+uhash_icontainsKey(const UHashtable *hash, int32_t key);\r
+\r
+/**\r
  * Locate an element of a UHashtable.  The caller must not modify the\r
  * returned object.  The primary use of this function is to obtain the\r
  * stored key when it may not be identical to the search key.  For\r
index 45aa6ba..3eaacbf 100644 (file)
@@ -143,7 +143,7 @@ static const char * const LANGUAGES[] = {
     "mad", "maf", "mag", "mai", "mak", "man", "mas", "mde",\r
     "mdf", "mdh", "mdr", "men", "mer", "mfe", "mg",  "mga",\r
     "mgh", "mgo", "mh",  "mi",  "mic", "min", "mis", "mk",\r
-    "ml",  "mn",  "mnc", "mni", "mo",\r
+    "ml",  "mn",  "mnc", "mni",\r
     "moh", "mos", "mr",  "mrj",\r
     "ms",  "mt",  "mua", "mul", "mus", "mwl", "mwr", "mwv",\r
     "my",  "mye", "myv", "mzn",\r
@@ -166,9 +166,9 @@ static const char * const LANGUAGES[] = {
     "sl",  "sli", "sly", "sm",  "sma", "smj", "smn", "sms",\r
     "sn",  "snk", "so",  "sog", "sq",  "sr",  "srn", "srr",\r
     "ss",  "ssy", "st",  "stq", "su",  "suk", "sus", "sux",\r
-    "sv",  "sw",  "swb", "swc", "syc", "syr", "szl",\r
+    "sv",  "sw",  "swb", "syc", "syr", "szl",\r
     "ta",  "tcy", "te",  "tem", "teo", "ter", "tet", "tg",\r
-    "th",  "ti",  "tig", "tiv", "tk",  "tkl", "tkr", "tl",\r
+    "th",  "ti",  "tig", "tiv", "tk",  "tkl", "tkr",\r
     "tlh", "tli", "tly", "tmh", "tn",  "to",  "tog", "tpi",\r
     "tr",  "tru", "trv", "ts",  "tsd", "tsi", "tt",  "ttt",\r
     "tum", "tvl", "tw",  "twq", "ty",  "tyv", "tzm",\r
@@ -181,7 +181,7 @@ static const char * const LANGUAGES[] = {
     "za",  "zap", "zbl", "zea", "zen", "zgh", "zh",  "zu",\r
     "zun", "zxx", "zza",\r
 NULL,\r
-    "in",  "iw",  "ji",  "jw",  "sh",    /* obsolete language codes */\r
+    "in",  "iw",  "ji",  "jw",  "mo",  "sh",  "swc", "tl",  /* obsolete language codes */\r
 NULL\r
 };\r
 \r
@@ -260,7 +260,7 @@ static const char * const LANGUAGES_3[] = {
     "mad", "maf", "mag", "mai", "mak", "man", "mas", "mde",\r
     "mdf", "mdh", "mdr", "men", "mer", "mfe", "mlg", "mga",\r
     "mgh", "mgo", "mah", "mri", "mic", "min", "mis", "mkd",\r
-    "mal", "mon", "mnc", "mni", "mol",\r
+    "mal", "mon", "mnc", "mni",\r
     "moh", "mos", "mar", "mrj",\r
     "msa", "mlt", "mua", "mul", "mus", "mwl", "mwr", "mwv",\r
     "mya", "mye", "myv", "mzn",\r
@@ -283,9 +283,9 @@ static const char * const LANGUAGES_3[] = {
     "slv", "sli", "sly", "smo", "sma", "smj", "smn", "sms",\r
     "sna", "snk", "som", "sog", "sqi", "srp", "srn", "srr",\r
     "ssw", "ssy", "sot", "stq", "sun", "suk", "sus", "sux",\r
-    "swe", "swa", "swb", "swc", "syc", "syr", "szl",\r
+    "swe", "swa", "swb", "syc", "syr", "szl",\r
     "tam", "tcy", "tel", "tem", "teo", "ter", "tet", "tgk",\r
-    "tha", "tir", "tig", "tiv", "tuk", "tkl", "tkr", "tgl",\r
+    "tha", "tir", "tig", "tiv", "tuk", "tkl", "tkr",\r
     "tlh", "tli", "tly", "tmh", "tsn", "ton", "tog", "tpi",\r
     "tur", "tru", "trv", "tso", "tsd", "tsi", "tat", "ttt",\r
     "tum", "tvl", "twi", "twq", "tah", "tyv", "tzm",\r
@@ -298,8 +298,8 @@ static const char * const LANGUAGES_3[] = {
     "zha", "zap", "zbl", "zea", "zen", "zgh", "zho", "zul",\r
     "zun", "zxx", "zza",\r
 NULL,\r
-/*  "in",  "iw",  "ji",  "jw",  "sh",                          */\r
-    "ind", "heb", "yid", "jaw", "srp",\r
+/*  "in",  "iw",  "ji",  "jw",  "mo",  "sh",  "swc", "tl",  */\r
+    "ind", "heb", "yid", "jaw", "mol", "srp", "swc", "tgl",\r
 NULL\r
 };\r
 \r
@@ -334,13 +334,13 @@ static const char * const COUNTRIES[] = {
     "BJ",  "BL",  "BM",  "BN",  "BO",  "BQ",  "BR",  "BS",  "BT",  "BV",\r
     "BW",  "BY",  "BZ",  "CA",  "CC",  "CD",  "CF",  "CG",\r
     "CH",  "CI",  "CK",  "CL",  "CM",  "CN",  "CO",  "CR",\r
-    "CU",  "CV",  "CW",  "CX",  "CY",  "CZ",  "DE",  "DJ",  "DK",\r
-    "DM",  "DO",  "DZ",  "EC",  "EE",  "EG",  "EH",  "ER",\r
+    "CU",  "CV",  "CW",  "CX",  "CY",  "CZ",  "DE",  "DG",  "DJ",  "DK",\r
+    "DM",  "DO",  "DZ",  "EA",  "EC",  "EE",  "EG",  "EH",  "ER",\r
     "ES",  "ET",  "FI",  "FJ",  "FK",  "FM",  "FO",  "FR",\r
     "GA",  "GB",  "GD",  "GE",  "GF",  "GG",  "GH",  "GI",  "GL",\r
     "GM",  "GN",  "GP",  "GQ",  "GR",  "GS",  "GT",  "GU",\r
     "GW",  "GY",  "HK",  "HM",  "HN",  "HR",  "HT",  "HU",\r
-    "ID",  "IE",  "IL",  "IM",  "IN",  "IO",  "IQ",  "IR",  "IS",\r
+    "IC",  "ID",  "IE",  "IL",  "IM",  "IN",  "IO",  "IQ",  "IR",  "IS",\r
     "IT",  "JE",  "JM",  "JO",  "JP",  "KE",  "KG",  "KH",  "KI",\r
     "KM",  "KN",  "KP",  "KR",  "KW",  "KY",  "KZ",  "LA",\r
     "LB",  "LC",  "LI",  "LK",  "LR",  "LS",  "LT",  "LU",\r
@@ -357,7 +357,7 @@ static const char * const COUNTRIES[] = {
     "TK",  "TL",  "TM",  "TN",  "TO",  "TR",  "TT",  "TV",\r
     "TW",  "TZ",  "UA",  "UG",  "UM",  "US",  "UY",  "UZ",\r
     "VA",  "VC",  "VE",  "VG",  "VI",  "VN",  "VU",  "WF",\r
-    "WS",  "YE",  "YT",  "ZA",  "ZM",  "ZW",\r
+    "WS",  "XK",  "YE",  "YT",  "ZA",  "ZM",  "ZW",\r
 NULL,\r
     "AN",  "BU", "CS", "FX", "RO", "SU", "TP", "YD", "YU", "ZR",   /* obsolete country codes */\r
 NULL\r
@@ -397,10 +397,10 @@ static const char * const COUNTRIES_3[] = {
     "BWA", "BLR", "BLZ", "CAN", "CCK", "COD", "CAF", "COG",\r
 /*  "CH",  "CI",  "CK",  "CL",  "CM",  "CN",  "CO",  "CR",     */\r
     "CHE", "CIV", "COK", "CHL", "CMR", "CHN", "COL", "CRI",\r
-/*  "CU",  "CV",  "CW",  "CX",  "CY",  "CZ",  "DE",  "DJ",  "DK",     */\r
-    "CUB", "CPV", "CUW", "CXR", "CYP", "CZE", "DEU", "DJI", "DNK",\r
-/*  "DM",  "DO",  "DZ",  "EC",  "EE",  "EG",  "EH",  "ER",     */\r
-    "DMA", "DOM", "DZA", "ECU", "EST", "EGY", "ESH", "ERI",\r
+/*  "CU",  "CV",  "CW",  "CX",  "CY",  "CZ",  "DE",  "DG",  "DJ",  "DK",     */\r
+    "CUB", "CPV", "CUW", "CXR", "CYP", "CZE", "DEU", "DGA", "DJI", "DNK",\r
+/*  "DM",  "DO",  "DZ",  "EA",  "EC",  "EE",  "EG",  "EH",  "ER",     */\r
+    "DMA", "DOM", "DZA", "XEA", "ECU", "EST", "EGY", "ESH", "ERI",\r
 /*  "ES",  "ET",  "FI",  "FJ",  "FK",  "FM",  "FO",  "FR",     */\r
     "ESP", "ETH", "FIN", "FJI", "FLK", "FSM", "FRO", "FRA",\r
 /*  "GA",  "GB",  "GD",  "GE",  "GF",  "GG",  "GH",  "GI",  "GL",     */\r
@@ -409,8 +409,8 @@ static const char * const COUNTRIES_3[] = {
     "GMB", "GIN", "GLP", "GNQ", "GRC", "SGS", "GTM", "GUM",\r
 /*  "GW",  "GY",  "HK",  "HM",  "HN",  "HR",  "HT",  "HU",     */\r
     "GNB", "GUY", "HKG", "HMD", "HND", "HRV", "HTI", "HUN",\r
-/*  "ID",  "IE",  "IL",  "IM",  "IN",  "IO",  "IQ",  "IR",  "IS" */\r
-    "IDN", "IRL", "ISR", "IMN", "IND", "IOT", "IRQ", "IRN", "ISL",\r
+/*  "IC",  "ID",  "IE",  "IL",  "IM",  "IN",  "IO",  "IQ",  "IR",  "IS" */\r
+    "XIC", "IDN", "IRL", "ISR", "IMN", "IND", "IOT", "IRQ", "IRN", "ISL",\r
 /*  "IT",  "JE",  "JM",  "JO",  "JP",  "KE",  "KG",  "KH",  "KI",     */\r
     "ITA", "JEY", "JAM", "JOR", "JPN", "KEN", "KGZ", "KHM", "KIR",\r
 /*  "KM",  "KN",  "KP",  "KR",  "KW",  "KY",  "KZ",  "LA",     */\r
@@ -443,8 +443,8 @@ static const char * const COUNTRIES_3[] = {
     "TWN", "TZA", "UKR", "UGA", "UMI", "USA", "URY", "UZB",\r
 /*  "VA",  "VC",  "VE",  "VG",  "VI",  "VN",  "VU",  "WF",     */\r
     "VAT", "VCT", "VEN", "VGB", "VIR", "VNM", "VUT", "WLF",\r
-/*  "WS",  "YE",  "YT",  "ZA",  "ZM",  "ZW",          */\r
-    "WSM", "YEM", "MYT", "ZAF", "ZMB", "ZWE",\r
+/*  "WS",  "XK",  "YE",  "YT",  "ZA",  "ZM",  "ZW",          */\r
+    "WSM", "XXK", "YEM", "MYT", "ZAF", "ZMB", "ZWE",\r
 NULL,\r
 /*  "AN",  "BU",  "CS",  "FX",  "RO", "SU",  "TP",  "YD",  "YU",  "ZR" */\r
     "ANT", "BUR", "SCG", "FXX", "ROM", "SUN", "TMP", "YMD", "YUG", "ZAR",\r
index 07b840b..0dc4f19 100644 (file)
@@ -271,7 +271,7 @@ initFromResourceBundle(UErrorCode& sts) {
                         if (U_FAILURE(sts)) {\r
                             break;\r
                         }\r
-                        // check if this is an alias of canoncal legacy type\r
+                        // check if this is an alias of canonical legacy type\r
                         if (uprv_compareInvWithUChar(NULL, legacyTypeId, -1, to, toLen) == 0) {\r
                             const char* from = ures_getKey(typeAliasDataEntry.getAlias());\r
                             if (isTZ) {\r
index 015519a..873025a 100644 (file)
@@ -129,7 +129,6 @@ static const char* const LEGACY[] = {
     // Legacy tags with no preferred value in the IANA\r
     // registry. Kept for now for the backward compatibility\r
     // because ICU has mapped them this way.\r
-    "cel-gaulish",  "xtg-x-cel-gaulish",\r
     "i-default",    "en-x-i-default",\r
     "i-enochian",   "und-x-i-enochian",\r
     "i-mingo",      "see-x-i-mingo",\r
@@ -647,6 +646,22 @@ _isTKey(const char* s, int32_t len)
     return FALSE;\r
 }\r
 \r
+U_CAPI const char * U_EXPORT2\r
+ultag_getTKeyStart(const char *localeID) {\r
+    const char *result = localeID;\r
+    const char *sep;\r
+    while((sep = uprv_strchr(result, SEP)) != nullptr) {\r
+        if (_isTKey(result, static_cast<int32_t>(sep - result))) {\r
+            return result;\r
+        }\r
+        result = ++sep;\r
+    }\r
+    if (_isTKey(result, -1)) {\r
+        return result;\r
+    }\r
+    return nullptr;\r
+}\r
+\r
 static UBool\r
 _isTValue(const char* s, int32_t len)\r
 {\r
@@ -671,9 +686,13 @@ _isTransformedExtensionSubtag(int32_t& state, const char* s, int32_t len)
     const int32_t kGotTKey = -1;    // Got tkey, wait for tvalue. ERROR if stop here.\r
     const int32_t kGotTValue = 6;   // Got tvalue, wait for tkey, tvalue or end\r
 \r
+\r
+    if (len < 0) {\r
+        len = (int32_t)uprv_strlen(s);\r
+    }\r
     switch (state) {\r
         case kStart:\r
-            if (ultag_isLanguageSubtag(s, len)) {\r
+            if (ultag_isLanguageSubtag(s, len) && len != 4) {\r
                 state = kGotLanguage;\r
                 return TRUE;\r
             }\r
@@ -1775,11 +1794,6 @@ _appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status)
         return;\r
     }\r
 \r
-    /* Determine if variants already exists */\r
-    if (ultag_getVariantsSize(langtag)) {\r
-        posixVariant = TRUE;\r
-    }\r
-\r
     n = ultag_getExtensionsSize(langtag);\r
 \r
     /* resolve locale keywords and reordering keys */\r
@@ -1787,6 +1801,11 @@ _appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status)
         key = ultag_getExtensionKey(langtag, i);\r
         type = ultag_getExtensionValue(langtag, i);\r
         if (*key == LDMLEXT) {\r
+            /* Determine if variants already exists */\r
+            if (ultag_getVariantsSize(langtag)) {\r
+                posixVariant = TRUE;\r
+            }\r
+\r
             _appendLDMLExtensionAsKeywords(type, &kwdFirst, extPool, kwdBuf, &posixVariant, status);\r
             if (U_FAILURE(*status)) {\r
                 break;\r
@@ -2028,7 +2047,10 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
         *status = U_MEMORY_ALLOCATION_ERROR;\r
         return NULL;\r
     }\r
-    uprv_memcpy(tagBuf, tag, tagLen);\r
+    \r
+    if (tagLen > 0) {\r
+        uprv_memcpy(tagBuf, tag, tagLen);\r
+    }\r
     *(tagBuf + tagLen) = 0;\r
 \r
     /* create a ULanguageTag */\r
@@ -2692,8 +2714,7 @@ ulocimp_toLanguageTag(const char* localeID,
                     if (U_SUCCESS(tmpStatus)) {\r
                         if (ultag_isPrivateuseValueSubtags(buf.data(), buf.length())) {\r
                             /* return private use only tag */\r
-                            static const char PREFIX[] = { PRIVATEUSE, SEP };\r
-                            sink.Append(PREFIX, sizeof(PREFIX));\r
+                            sink.Append("und-x-", 6);\r
                             sink.Append(buf.data(), buf.length());\r
                             done = TRUE;\r
                         } else if (strict) {\r
index 3e9eb54..d1a76f1 100644 (file)
@@ -286,6 +286,9 @@ ultag_isUnicodeLocaleType(const char* s, int32_t len);
 U_CFUNC UBool\r
 ultag_isVariantSubtags(const char* s, int32_t len);\r
 \r
+U_CAPI const char * U_EXPORT2\r
+ultag_getTKeyStart(const char *localeID);\r
+\r
 U_CFUNC const char*\r
 ulocimp_toBcpKey(const char* key);\r
 \r
index 12dc7f7..aa80f5b 100644 (file)
@@ -71,7 +71,6 @@ public:
    */\r
   virtual void Append(const char* bytes, int32_t n) = 0;\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
   /**\r
    * Appends n bytes to this. Same as Append().\r
    * Call AppendU8() with u8"string literals" which are const char * in C++11\r
@@ -81,7 +80,7 @@ public:
    *\r
    * @param bytes the pointer to the bytes\r
    * @param n the number of bytes; must be non-negative\r
-   * @draft ICU 67\r
+   * @stable ICU 67\r
    */\r
   inline void AppendU8(const char* bytes, int32_t n) {\r
     Append(bytes, n);\r
@@ -97,13 +96,12 @@ public:
    *\r
    * @param bytes the pointer to the bytes\r
    * @param n the number of bytes; must be non-negative\r
-   * @draft ICU 67\r
+   * @stable ICU 67\r
    */\r
   inline void AppendU8(const char8_t* bytes, int32_t n) {\r
     Append(reinterpret_cast<const char*>(bytes), n);\r
   }\r
 #endif\r
-#endif  // U_HIDE_DRAFT_API\r
 \r
   /**\r
    * Returns a writable buffer for appending and writes the buffer's capacity to\r
index 5ace93a..024f628 100644 (file)
@@ -30,6 +30,8 @@
 #include "unicode/uobject.h"\r
 #include "unicode/ustringtrie.h"\r
 \r
+class BytesTrieTest;\r
+\r
 U_NAMESPACE_BEGIN\r
 \r
 class ByteSink;\r
@@ -378,6 +380,7 @@ public:
 \r
 private:\r
     friend class BytesTrieBuilder;\r
+    friend class ::BytesTrieTest;\r
 \r
     /**\r
      * Constructs a BytesTrie reader instance.\r
index 6d98f7f..e4620e0 100644 (file)
@@ -30,6 +30,8 @@
 #include "unicode/stringpiece.h"\r
 #include "unicode/stringtriebuilder.h"\r
 \r
+class BytesTrieTest;\r
+\r
 U_NAMESPACE_BEGIN\r
 \r
 class BytesTrieElement;\r
@@ -125,6 +127,8 @@ public:
     BytesTrieBuilder &clear();\r
 \r
 private:\r
+    friend class ::BytesTrieTest;\r
+\r
     BytesTrieBuilder(const BytesTrieBuilder &other);  // no copy constructor\r
     BytesTrieBuilder &operator=(const BytesTrieBuilder &other);  // no assignment operator\r
 \r
@@ -168,6 +172,7 @@ private:
     virtual int32_t writeValueAndFinal(int32_t i, UBool isFinal);\r
     virtual int32_t writeValueAndType(UBool hasValue, int32_t value, int32_t node);\r
     virtual int32_t writeDeltaTo(int32_t jumpTarget);\r
+    static int32_t internalEncodeDelta(int32_t i, char intBytes[]);\r
 \r
     CharString *strings;  // Pointer not object so we need not #include internal charstr.h.\r
     BytesTrieElement *elements;\r
index 8adedb0..6d512d1 100644 (file)
@@ -15,7 +15,7 @@
  * \file\r
  * \brief (Non API- contains Doxygen definitions)\r
  *\r
- * This file contains documentation for Doxygen and doesnot have\r
+ * This file contains documentation for Doxygen and does not have\r
  * any significance with respect to C or C++ API\r
  */\r
 \r
@@ -74,7 +74,7 @@
  *   </tr>\r
  *   <tr>\r
  *     <td>Strings and Character Iteration</td>\r
- *     <td>ustring.h, utf8.h, utf16.h, UText, UCharIterator</td>\r
+ *     <td>ustring.h, utf8.h, utf16.h, icu::StringPiece, UText, UCharIterator, icu::ByteSink</td>\r
  *     <td>icu::UnicodeString, icu::CharacterIterator, icu::Appendable, icu::StringPiece,icu::ByteSink</td>\r
  *   </tr>\r
  *   <tr>\r
  *     <td>icu::Normalizer2</td>\r
  *   </tr>\r
  *   <tr>\r
- *     <td>Calendars</td>\r
+ *     <td>Calendars and Time Zones</td>\r
  *     <td>ucal.h</td>\r
- *     <td>icu::Calendar</td>\r
+ *     <td>icu::Calendar, icu::TimeZone</td>\r
  *   </tr>\r
  *   <tr>\r
  *     <td>Date and Time Formatting</td>\r
index 234c32f..6c9755d 100644 (file)
 /* === Basic types === */\r
 \r
 #ifndef U_HIDE_INTERNAL_API\r
+struct UPlugData;\r
 /**\r
  * @{\r
- * Opaque structure passed to/from a plugin. \r
- * use the APIs to access it.\r
+ * Typedef for opaque structure passed to/from a plugin. \r
+ * Use the APIs to access it.\r
  * @internal ICU 4.4 Technology Preview\r
  */\r
-\r
-struct UPlugData;\r
 typedef struct UPlugData UPlugData;\r
 \r
 /** @} */\r
index 13e10c2..d5617a3 100644 (file)
@@ -91,8 +91,6 @@ enum ULocMatchDemotion {
 typedef enum ULocMatchDemotion ULocMatchDemotion;\r
 #endif\r
 \r
-#ifndef U_FORCE_HIDE_DRAFT_API\r
-\r
 /**\r
  * Builder option for whether to include or ignore one-way (fallback) match data.\r
  * The LocaleMatcher uses CLDR languageMatch data which includes fallback (oneway=true) entries.\r
@@ -108,20 +106,20 @@ typedef enum ULocMatchDemotion ULocMatchDemotion;
  * but not if it is merely a fallback.\r
  *\r
  * @see LocaleMatcher::Builder#setDirection(ULocMatchDirection)\r
- * @draft ICU 67\r
+ * @stable ICU 67\r
  */\r
 enum ULocMatchDirection {\r
     /**\r
      * Locale matching includes one-way matches such as Breton→French. (default)\r
      *\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     ULOCMATCH_DIRECTION_WITH_ONE_WAY,\r
     /**\r
      * Locale matching limited to two-way matches including e.g. Danish↔Norwegian\r
      * but ignoring one-way matches.\r
      *\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     ULOCMATCH_DIRECTION_ONLY_TWO_WAY\r
 };\r
@@ -129,8 +127,6 @@ enum ULocMatchDirection {
 typedef enum ULocMatchDirection ULocMatchDirection;\r
 #endif\r
 \r
-#endif  // U_FORCE_HIDE_DRAFT_API\r
-\r
 struct UHashtable;\r
 \r
 U_NAMESPACE_BEGIN\r
@@ -463,14 +459,13 @@ public:
          */\r
         Builder &setDemotionPerDesiredLocale(ULocMatchDemotion demotion);\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
         /**\r
          * Option for whether to include or ignore one-way (fallback) match data.\r
          * By default, they are included.\r
          *\r
          * @param direction the match direction to set.\r
          * @return this Builder object\r
-         * @draft ICU 67\r
+         * @stable ICU 67\r
          */\r
         Builder &setDirection(ULocMatchDirection direction) {\r
             if (U_SUCCESS(errorCode_)) {\r
@@ -478,7 +473,6 @@ public:
             }\r
             return *this;\r
         }\r
-#endif  // U_HIDE_DRAFT_API\r
 \r
 #ifndef U_HIDE_DRAFT_API\r
         /**\r
@@ -704,7 +698,7 @@ private:
     LSR *lsrs;\r
     int32_t supportedLocalesLength;\r
     // These are in preference order: 1. Default locale 2. paradigm locales 3. others.\r
-    UHashtable *supportedLsrToIndex;  // Map<LSR, Integer> stores index+1 because 0 is "not found"\r
+    UHashtable *supportedLsrToIndex;  // Map<LSR, Integer>\r
     // Array versions of the supportedLsrToIndex keys and values.\r
     // The distance lookup loops over the supportedLSRs and returns the index of the best match.\r
     const LSR **supportedLSRs;\r
index 624ab6c..3a07df5 100644 (file)
@@ -571,15 +571,13 @@ public:
      */\r
     void minimizeSubtags(UErrorCode& status);\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
     /**\r
      * Canonicalize the locale ID of this object according to CLDR.\r
      * @param status the status code\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      * @see createCanonical\r
      */\r
     void canonicalize(UErrorCode& status);\r
-#endif  // U_HIDE_DRAFT_API\r
 \r
     /**\r
      * Gets the list of keywords for the specified locale.\r
index 81207bb..6be7ed4 100644 (file)
@@ -225,10 +225,8 @@ public:
      * Normalizes a UTF-8 string and optionally records how source substrings\r
      * relate to changed and unchanged result substrings.\r
      *\r
-     * Currently implemented completely only for "compose" modes,\r
-     * such as for NFC, NFKC, and NFKC_Casefold\r
-     * (UNORM2_COMPOSE and UNORM2_COMPOSE_CONTIGUOUS).\r
-     * Otherwise currently converts to & from UTF-16 and does not support edits.\r
+     * Implemented completely for all built-in modes except for FCD.\r
+     * The base class implementation converts to & from UTF-16 and does not support edits.\r
      *\r
      * @param options   Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET.\r
      * @param src       Source UTF-8 string.\r
@@ -381,11 +379,9 @@ public:
      * resolves to "yes" or "no" to provide a definitive result,\r
      * at the cost of doing more work in those cases.\r
      *\r
-     * This works for all normalization modes,\r
-     * but it is currently optimized for UTF-8 only for "compose" modes,\r
-     * such as for NFC, NFKC, and NFKC_Casefold\r
-     * (UNORM2_COMPOSE and UNORM2_COMPOSE_CONTIGUOUS).\r
-     * For other modes it currently converts to UTF-16 and calls isNormalized().\r
+     * This works for all normalization modes.\r
+     * It is optimized for UTF-8 for all built-in modes except for FCD.\r
+     * The base class implementation converts to UTF-16 and calls isNormalized().\r
      *\r
      * @param s UTF-8 input string\r
      * @param errorCode Standard ICU error code. Its input value must\r
@@ -543,10 +539,8 @@ public:
      * Normalizes a UTF-8 string and optionally records how source substrings\r
      * relate to changed and unchanged result substrings.\r
      *\r
-     * Currently implemented completely only for "compose" modes,\r
-     * such as for NFC, NFKC, and NFKC_Casefold\r
-     * (UNORM2_COMPOSE and UNORM2_COMPOSE_CONTIGUOUS).\r
-     * Otherwise currently converts to & from UTF-16 and does not support edits.\r
+     * Implemented completely for most built-in modes except for FCD.\r
+     * The base class implementation converts to & from UTF-16 and does not support edits.\r
      *\r
      * @param options   Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET.\r
      * @param src       Source UTF-8 string.\r
@@ -676,11 +670,9 @@ public:
      * resolves to "yes" or "no" to provide a definitive result,\r
      * at the cost of doing more work in those cases.\r
      *\r
-     * This works for all normalization modes,\r
-     * but it is currently optimized for UTF-8 only for "compose" modes,\r
-     * such as for NFC, NFKC, and NFKC_Casefold\r
-     * (UNORM2_COMPOSE and UNORM2_COMPOSE_CONTIGUOUS).\r
-     * For other modes it currently converts to UTF-16 and calls isNormalized().\r
+     * This works for all normalization modes.\r
+     * It is optimized for UTF-8 for all built-in modes except for FCD.\r
+     * The base class implementation converts to UTF-16 and calls isNormalized().\r
      *\r
      * @param s UTF-8 input string\r
      * @param errorCode Standard ICU error code. Its input value must\r
index 92723d6..352c41c 100644 (file)
@@ -880,6 +880,6 @@ namespace std {
 #else\r
 #    define U_CALLCONV_FPTR\r
 #endif\r
-/* @} */\r
+/** @} */\r
 \r
 #endif  // _PLATFORM_H\r
index 7ebdae8..407c207 100644 (file)
@@ -75,12 +75,11 @@ class U_COMMON_API StringPiece : public UMemory {
    * @stable ICU 4.2\r
    */\r
   StringPiece(const char* str);\r
-#ifndef U_HIDE_DRAFT_API\r
 #if defined(__cpp_char8_t) || defined(U_IN_DOXYGEN)\r
   /**\r
    * Constructs from a NUL-terminated const char8_t * pointer.\r
    * @param str a NUL-terminated const char8_t * pointer\r
-   * @draft ICU 67\r
+   * @stable ICU 67\r
    */\r
   StringPiece(const char8_t* str) : StringPiece(reinterpret_cast<const char*>(str)) {}\r
 #endif\r
@@ -88,10 +87,9 @@ class U_COMMON_API StringPiece : public UMemory {
    * Constructs an empty StringPiece.\r
    * Needed for type disambiguation from multiple other overloads.\r
    * @param p nullptr\r
-   * @draft ICU 67\r
+   * @stable ICU 67\r
    */\r
   StringPiece(std::nullptr_t p) : ptr_(p), length_(0) {}\r
-#endif  // U_HIDE_DRAFT_API\r
 \r
   /**\r
    * Constructs from a std::string.\r
@@ -99,17 +97,15 @@ class U_COMMON_API StringPiece : public UMemory {
    */\r
   StringPiece(const std::string& str)\r
     : ptr_(str.data()), length_(static_cast<int32_t>(str.size())) { }\r
-#ifndef U_HIDE_DRAFT_API\r
 #if defined(__cpp_lib_char8_t) || defined(U_IN_DOXYGEN)\r
   /**\r
    * Constructs from a std::u8string.\r
-   * @draft ICU 67\r
+   * @stable ICU 67\r
    */\r
   StringPiece(const std::u8string& str)\r
     : ptr_(reinterpret_cast<const char*>(str.data())),\r
       length_(static_cast<int32_t>(str.size())) { }\r
 #endif\r
-#endif  // U_HIDE_DRAFT_API\r
 \r
   /**\r
    * Constructs from some other implementation of a string piece class, from any\r
@@ -152,18 +148,16 @@ class U_COMMON_API StringPiece : public UMemory {
    * @stable ICU 4.2\r
    */\r
   StringPiece(const char* offset, int32_t len) : ptr_(offset), length_(len) { }\r
-#ifndef U_HIDE_DRAFT_API\r
 #if defined(__cpp_char8_t) || defined(U_IN_DOXYGEN)\r
   /**\r
    * Constructs from a const char8_t * pointer and a specified length.\r
    * @param str a const char8_t * pointer (need not be terminated)\r
    * @param len the length of the string; must be non-negative\r
-   * @draft ICU 67\r
+   * @stable ICU 67\r
    */\r
   StringPiece(const char8_t* str, int32_t len) :\r
       StringPiece(reinterpret_cast<const char*>(str), len) {}\r
 #endif\r
-#endif  // U_HIDE_DRAFT_API\r
 \r
   /**\r
    * Substring of another StringPiece.\r
@@ -233,13 +227,12 @@ class U_COMMON_API StringPiece : public UMemory {
    */\r
   void set(const char* str);\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
 #if defined(__cpp_char8_t) || defined(U_IN_DOXYGEN)\r
   /**\r
    * Resets the stringpiece to refer to new data.\r
    * @param xdata pointer the new string data. Need not be NUL-terminated.\r
    * @param len the length of the new data\r
-   * @draft ICU 67\r
+   * @stable ICU 67\r
    */\r
   inline void set(const char8_t* xdata, int32_t len) {\r
       set(reinterpret_cast<const char*>(xdata), len);\r
@@ -248,13 +241,12 @@ class U_COMMON_API StringPiece : public UMemory {
   /**\r
    * Resets the stringpiece to refer to new data.\r
    * @param str a pointer to a NUL-terminated string.\r
-   * @draft ICU 67\r
+   * @stable ICU 67\r
    */\r
   inline void set(const char8_t* str) {\r
       set(reinterpret_cast<const char*>(str));\r
   }\r
 #endif\r
-#endif  // U_HIDE_DRAFT_API\r
 \r
   /**\r
    * Removes the first n string units.\r
@@ -286,13 +278,12 @@ class U_COMMON_API StringPiece : public UMemory {
     }\r
   }\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
   /**\r
    * Searches the StringPiece for the given search string (needle);\r
    * @param needle The string for which to search.\r
    * @param offset Where to start searching within this string (haystack).\r
    * @return The offset of needle in haystack, or -1 if not found.\r
-   * @draft ICU 67\r
+   * @stable ICU 67\r
    */\r
   int32_t find(StringPiece needle, int32_t offset);\r
 \r
@@ -301,10 +292,9 @@ class U_COMMON_API StringPiece : public UMemory {
    * similar to std::string::compare().\r
    * @param other The string to compare to.\r
    * @return below zero if this < other; above zero if this > other; 0 if this == other.\r
-   * @draft ICU 67\r
+   * @stable ICU 67\r
    */\r
   int32_t compare(StringPiece other);\r
-#endif  // U_HIDE_DRAFT_API\r
 \r
   /**\r
    * Maximum integer, used as a default value for substring methods.\r
index 414a6b5..05e5598 100644 (file)
@@ -296,6 +296,8 @@ ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
                      const UChar *  text, int32_t textLength,\r
                      UErrorCode *   status);\r
 \r
+#ifndef U_HIDE_DEPRECATED_API\r
+\r
 /**\r
  * Thread safe cloning operation\r
  * @param bi iterator to be cloned\r
@@ -312,7 +314,7 @@ ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
  * @param status to indicate whether the operation went on smoothly or there were errors\r
  *  An informational status value, U_SAFECLONE_ALLOCATED_ERROR, is used if any allocations were necessary.\r
  * @return pointer to the new clone\r
- * @stable ICU 2.0\r
+ * @deprecated ICU 69 Use ubrk_clone() instead.\r
  */\r
 U_CAPI UBreakIterator * U_EXPORT2\r
 ubrk_safeClone(\r
@@ -321,6 +323,23 @@ ubrk_safeClone(
           int32_t *pBufferSize,\r
           UErrorCode *status);\r
 \r
+#endif /* U_HIDE_DEPRECATED_API */\r
+\r
+#ifndef U_HIDE_DRAFT_API\r
+\r
+/**\r
+ * Thread safe cloning operation.\r
+ * @param bi iterator to be cloned\r
+ * @param status to indicate whether the operation went on smoothly or there were errors\r
+ * @return pointer to the new clone\r
+ * @draft ICU 69\r
+ */\r
+U_CAPI UBreakIterator * U_EXPORT2\r
+ubrk_clone(const UBreakIterator *bi,\r
+           UErrorCode *status);\r
+\r
+#endif  // U_HIDE_DRAFT_API\r
+\r
 #ifndef U_HIDE_DEPRECATED_API\r
 \r
 /**\r
index e0b64ab..8222f5c 100644 (file)
@@ -1699,10 +1699,10 @@ ucnv_countAvailable(void);
 \r
 /**\r
  * Gets the canonical converter name of the specified converter from a list of\r
- * all available converters contaied in the alias file. All converters\r
+ * all available converters contained in the alias file. All converters\r
  * in this list can be opened.\r
  *\r
- * @param n the index to a converter available on the system (in the range <TT>[0..ucnv_countAvaiable()]</TT>)\r
+ * @param n the index to a converter available on the system (in the range <TT>[0..ucnv_countAvailable()]</TT>)\r
  * @return a pointer a string (library owned), or <TT>NULL</TT> if the index is out of bounds.\r
  * @see ucnv_countAvailable\r
  * @stable ICU 2.0\r
index 4c23bdd..fd2d504 100644 (file)
  * from the serialized form.\r
  */\r
 \r
+struct UConverterSelector;\r
 /**\r
  * @{\r
- * The selector data structure\r
+ * Typedef for selector data structure.\r
  */\r
-struct UConverterSelector;\r
 typedef struct UConverterSelector UConverterSelector;\r
 /** @} */\r
 \r
index 4f07f1d..aec99a1 100644 (file)
@@ -40,8 +40,8 @@ U_NAMESPACE_BEGIN
  *\r
  * <code>UnicodeFilter</code> defines a protocol for selecting a\r
  * subset of the full range (U+0000 to U+10FFFF) of Unicode characters.\r
- * Currently, filters are used in conjunction with classes like {@link\r
- * Transliterator} to only process selected characters through a\r
+ * Currently, filters are used in conjunction with classes like\r
+ * {@link Transliterator} to only process selected characters through a\r
  * transformation.\r
  *\r
  * <p>Note: UnicodeFilter currently stubs out two pure virtual methods\r
index 28c3e05..55f7d7d 100644 (file)
@@ -178,8 +178,6 @@ class RuleCharacterIterator;
  * Unicode property\r
  * </table>\r
  *\r
- * <p><b>Warning</b>: you cannot add an empty string ("") to a UnicodeSet.</p>\r
- *\r
  * <p><b>Formal syntax</b></p>\r
  *\r
  * \htmlonly<blockquote>\endhtmlonly\r
@@ -601,7 +599,7 @@ public:
 \r
     /**\r
      * Make this object represent the range `start - end`.\r
-     * If `end > start` then this object is set to an empty range.\r
+     * If `start > end` then this object is set to an empty range.\r
      * A frozen set will not be modified.\r
      *\r
      * @param start first character in the set, inclusive\r
@@ -1077,7 +1075,7 @@ public:
     /**\r
      * Adds the specified range to this set if it is not already\r
      * present.  If this set already contains the specified range,\r
-     * the call leaves this set unchanged.  If <code>end > start</code>\r
+     * the call leaves this set unchanged.  If <code>start > end</code>\r
      * then an empty range is added, leaving the set unchanged.\r
      * This is equivalent to a boolean logic OR, or a set UNION.\r
      * A frozen set will not be modified.\r
@@ -1095,6 +1093,9 @@ public:
      * present.  If this set already contains the specified character,\r
      * the call leaves this set unchanged.\r
      * A frozen set will not be modified.\r
+     *\r
+     * @param c the character (code point)\r
+     * @return this object, for chaining\r
      * @stable ICU 2.0\r
      */\r
     UnicodeSet& add(UChar32 c);\r
@@ -1104,8 +1105,8 @@ public:
      * present.  If this set already contains the multicharacter,\r
      * the call leaves this set unchanged.\r
      * Thus "ch" => {"ch"}\r
-     * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>\r
      * A frozen set will not be modified.\r
+     *\r
      * @param s the source string\r
      * @return this object, for chaining\r
      * @stable ICU 2.4\r
@@ -1124,8 +1125,8 @@ public:
 \r
  public:\r
     /**\r
-     * Adds each of the characters in this string to the set. Thus "ch" => {"c", "h"}\r
-     * If this set already any particular character, it has no effect on that character.\r
+     * Adds each of the characters in this string to the set. Note: "ch" => {"c", "h"}\r
+     * If this set already contains any particular character, it has no effect on that character.\r
      * A frozen set will not be modified.\r
      * @param s the source string\r
      * @return this object, for chaining\r
@@ -1135,7 +1136,6 @@ public:
 \r
     /**\r
      * Retains EACH of the characters in this string. Note: "ch" == {"c", "h"}\r
-     * If this set already any particular character, it has no effect on that character.\r
      * A frozen set will not be modified.\r
      * @param s the source string\r
      * @return this object, for chaining\r
@@ -1145,7 +1145,6 @@ public:
 \r
     /**\r
      * Complement EACH of the characters in this string. Note: "ch" == {"c", "h"}\r
-     * If this set already any particular character, it has no effect on that character.\r
      * A frozen set will not be modified.\r
      * @param s the source string\r
      * @return this object, for chaining\r
@@ -1155,7 +1154,6 @@ public:
 \r
     /**\r
      * Remove EACH of the characters in this string. Note: "ch" == {"c", "h"}\r
-     * If this set already any particular character, it has no effect on that character.\r
      * A frozen set will not be modified.\r
      * @param s the source string\r
      * @return this object, for chaining\r
@@ -1165,7 +1163,7 @@ public:
 \r
     /**\r
      * Makes a set from a multicharacter string. Thus "ch" => {"ch"}\r
-     * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>\r
+     *\r
      * @param s the source string\r
      * @return a newly created set containing the given string.\r
      * The caller owns the return object and is responsible for deleting it.\r
@@ -1185,15 +1183,13 @@ public:
 \r
     /**\r
      * Retain only the elements in this set that are contained in the\r
-     * specified range.  If <code>end > start</code> then an empty range is\r
+     * specified range.  If <code>start > end</code> then an empty range is\r
      * retained, leaving the set empty.  This is equivalent to\r
      * a boolean logic AND, or a set INTERSECTION.\r
      * A frozen set will not be modified.\r
      *\r
-     * @param start first character, inclusive, of range to be retained\r
-     * to this set.\r
-     * @param end last character, inclusive, of range to be retained\r
-     * to this set.\r
+     * @param start first character, inclusive, of range\r
+     * @param end last character, inclusive, of range\r
      * @stable ICU 2.0\r
      */\r
     virtual UnicodeSet& retain(UChar32 start, UChar32 end);\r
@@ -1202,14 +1198,31 @@ public:
     /**\r
      * Retain the specified character from this set if it is present.\r
      * A frozen set will not be modified.\r
+     *\r
+     * @param c the character (code point)\r
+     * @return this object, for chaining\r
      * @stable ICU 2.0\r
      */\r
     UnicodeSet& retain(UChar32 c);\r
 \r
+#ifndef U_HIDE_DRAFT_API\r
+    /**\r
+     * Retains only the specified string from this set if it is present.\r
+     * Upon return this set will be empty if it did not contain s, or\r
+     * will only contain s if it did contain s.\r
+     * A frozen set will not be modified.\r
+     *\r
+     * @param s the source string\r
+     * @return this object, for chaining\r
+     * @draft ICU 69\r
+     */\r
+    UnicodeSet& retain(const UnicodeString &s);\r
+#endif  // U_HIDE_DRAFT_API\r
+\r
     /**\r
      * Removes the specified range from this set if it is present.\r
      * The set will not contain the specified range once the call\r
-     * returns.  If <code>end > start</code> then an empty range is\r
+     * returns.  If <code>start > end</code> then an empty range is\r
      * removed, leaving the set unchanged.\r
      * A frozen set will not be modified.\r
      *\r
@@ -1226,6 +1239,9 @@ public:
      * The set will not contain the specified range once the call\r
      * returns.\r
      * A frozen set will not be modified.\r
+     *\r
+     * @param c the character (code point)\r
+     * @return this object, for chaining\r
      * @stable ICU 2.0\r
      */\r
     UnicodeSet& remove(UChar32 c);\r
@@ -1253,15 +1269,13 @@ public:
     /**\r
      * Complements the specified range in this set.  Any character in\r
      * the range will be removed if it is in this set, or will be\r
-     * added if it is not in this set.  If <code>end > start</code>\r
+     * added if it is not in this set.  If <code>start > end</code>\r
      * then an empty range is complemented, leaving the set unchanged.\r
      * This is equivalent to a boolean logic XOR.\r
      * A frozen set will not be modified.\r
      *\r
-     * @param start first character, inclusive, of range to be removed\r
-     * from this set.\r
-     * @param end last character, inclusive, of range to be removed\r
-     * from this set.\r
+     * @param start first character, inclusive, of range\r
+     * @param end last character, inclusive, of range\r
      * @stable ICU 2.0\r
      */\r
     virtual UnicodeSet& complement(UChar32 start, UChar32 end);\r
@@ -1271,16 +1285,18 @@ public:
      * will be removed if it is in this set, or will be added if it is\r
      * not in this set.\r
      * A frozen set will not be modified.\r
+     *\r
+     * @param c the character (code point)\r
+     * @return this object, for chaining\r
      * @stable ICU 2.0\r
      */\r
     UnicodeSet& complement(UChar32 c);\r
 \r
     /**\r
      * Complement the specified string in this set.\r
-     * The set will not contain the specified string once the call\r
-     * returns.\r
-     * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>\r
+     * The string will be removed if it is in this set, or will be added if it is not in this set.\r
      * A frozen set will not be modified.\r
+     *\r
      * @param s the string to complement\r
      * @return this object, for chaining\r
      * @stable ICU 2.4\r
index b7cfc91..e03aedc 100644 (file)
@@ -44,9 +44,10 @@ struct UConverter;          // unicode/ucnv.h
 #ifndef USTRING_H\r
 /**\r
  * \ingroup ustring_ustrlen\r
+ * @param s Pointer to sequence of UChars.\r
+ * @return Length of sequence.\r
  */\r
-U_CAPI int32_t U_EXPORT2\r
-u_strlen(const UChar *s);\r
+U_CAPI int32_t U_EXPORT2 u_strlen(const UChar *s);\r
 #endif\r
 \r
 U_NAMESPACE_BEGIN\r
@@ -2766,7 +2767,6 @@ public:
    * @param options   Options bit set, usually 0. See U_TITLECASE_NO_LOWERCASE,\r
    *                  U_TITLECASE_NO_BREAK_ADJUSTMENT, U_TITLECASE_ADJUST_TO_CASED,\r
    *                  U_TITLECASE_WHOLE_STRING, U_TITLECASE_SENTENCES.\r
-   * @param options Options bit set, see ucasemap_open().\r
    * @return A reference to this.\r
    * @stable ICU 3.8\r
    */\r
@@ -3614,7 +3614,7 @@ private:
   // turn a bogus string into an empty one\r
   void unBogus();\r
 \r
-  // implements assigment operator, copy constructor, and fastCopyFrom()\r
+  // implements assignment operator, copy constructor, and fastCopyFrom()\r
   UnicodeString &copyFrom(const UnicodeString &src, UBool fastCopy=false);\r
 \r
   // Copies just the fields without memory management.\r
index 54cb292..3ef8f21 100644 (file)
 #define ubiditransform_open U_ICU_ENTRY_POINT_RENAME(ubiditransform_open)\r
 #define ubiditransform_transform U_ICU_ENTRY_POINT_RENAME(ubiditransform_transform)\r
 #define ublock_getCode U_ICU_ENTRY_POINT_RENAME(ublock_getCode)\r
+#define ubrk_clone U_ICU_ENTRY_POINT_RENAME(ubrk_clone)\r
 #define ubrk_close U_ICU_ENTRY_POINT_RENAME(ubrk_close)\r
 #define ubrk_countAvailable U_ICU_ENTRY_POINT_RENAME(ubrk_countAvailable)\r
 #define ubrk_current U_ICU_ENTRY_POINT_RENAME(ubrk_current)\r
 #define ucal_getTimeZoneDisplayName U_ICU_ENTRY_POINT_RENAME(ucal_getTimeZoneDisplayName)\r
 #define ucal_getTimeZoneID U_ICU_ENTRY_POINT_RENAME(ucal_getTimeZoneID)\r
 #define ucal_getTimeZoneIDForWindowsID U_ICU_ENTRY_POINT_RENAME(ucal_getTimeZoneIDForWindowsID)\r
+#define ucal_getTimeZoneOffsetFromLocal U_ICU_ENTRY_POINT_RENAME(ucal_getTimeZoneOffsetFromLocal)\r
 #define ucal_getTimeZoneTransitionDate U_ICU_ENTRY_POINT_RENAME(ucal_getTimeZoneTransitionDate)\r
 #define ucal_getType U_ICU_ENTRY_POINT_RENAME(ucal_getType)\r
 #define ucal_getWeekendTransition U_ICU_ENTRY_POINT_RENAME(ucal_getWeekendTransition)\r
 #define uhash_compareScriptSet U_ICU_ENTRY_POINT_RENAME(uhash_compareScriptSet)\r
 #define uhash_compareUChars U_ICU_ENTRY_POINT_RENAME(uhash_compareUChars)\r
 #define uhash_compareUnicodeString U_ICU_ENTRY_POINT_RENAME(uhash_compareUnicodeString)\r
+#define uhash_containsKey U_ICU_ENTRY_POINT_RENAME(uhash_containsKey)\r
 #define uhash_count U_ICU_ENTRY_POINT_RENAME(uhash_count)\r
 #define uhash_deleteHashtable U_ICU_ENTRY_POINT_RENAME(uhash_deleteHashtable)\r
 #define uhash_deleteScriptSet U_ICU_ENTRY_POINT_RENAME(uhash_deleteScriptSet)\r
 #define uhash_find U_ICU_ENTRY_POINT_RENAME(uhash_find)\r
 #define uhash_get U_ICU_ENTRY_POINT_RENAME(uhash_get)\r
 #define uhash_geti U_ICU_ENTRY_POINT_RENAME(uhash_geti)\r
+#define uhash_getiAndFound U_ICU_ENTRY_POINT_RENAME(uhash_getiAndFound)\r
 #define uhash_hashCaselessUnicodeString U_ICU_ENTRY_POINT_RENAME(uhash_hashCaselessUnicodeString)\r
 #define uhash_hashChars U_ICU_ENTRY_POINT_RENAME(uhash_hashChars)\r
 #define uhash_hashIChars U_ICU_ENTRY_POINT_RENAME(uhash_hashIChars)\r
 #define uhash_hashScriptSet U_ICU_ENTRY_POINT_RENAME(uhash_hashScriptSet)\r
 #define uhash_hashUChars U_ICU_ENTRY_POINT_RENAME(uhash_hashUChars)\r
 #define uhash_hashUnicodeString U_ICU_ENTRY_POINT_RENAME(uhash_hashUnicodeString)\r
+#define uhash_icontainsKey U_ICU_ENTRY_POINT_RENAME(uhash_icontainsKey)\r
 #define uhash_iget U_ICU_ENTRY_POINT_RENAME(uhash_iget)\r
 #define uhash_igeti U_ICU_ENTRY_POINT_RENAME(uhash_igeti)\r
+#define uhash_igetiAndFound U_ICU_ENTRY_POINT_RENAME(uhash_igetiAndFound)\r
 #define uhash_init U_ICU_ENTRY_POINT_RENAME(uhash_init)\r
 #define uhash_initSize U_ICU_ENTRY_POINT_RENAME(uhash_initSize)\r
 #define uhash_iput U_ICU_ENTRY_POINT_RENAME(uhash_iput)\r
 #define uhash_iputi U_ICU_ENTRY_POINT_RENAME(uhash_iputi)\r
+#define uhash_iputiAllowZero U_ICU_ENTRY_POINT_RENAME(uhash_iputiAllowZero)\r
 #define uhash_iremove U_ICU_ENTRY_POINT_RENAME(uhash_iremove)\r
 #define uhash_iremovei U_ICU_ENTRY_POINT_RENAME(uhash_iremovei)\r
 #define uhash_nextElement U_ICU_ENTRY_POINT_RENAME(uhash_nextElement)\r
 #define uhash_openSize U_ICU_ENTRY_POINT_RENAME(uhash_openSize)\r
 #define uhash_put U_ICU_ENTRY_POINT_RENAME(uhash_put)\r
 #define uhash_puti U_ICU_ENTRY_POINT_RENAME(uhash_puti)\r
+#define uhash_putiAllowZero U_ICU_ENTRY_POINT_RENAME(uhash_putiAllowZero)\r
 #define uhash_remove U_ICU_ENTRY_POINT_RENAME(uhash_remove)\r
 #define uhash_removeAll U_ICU_ENTRY_POINT_RENAME(uhash_removeAll)\r
 #define uhash_removeElement U_ICU_ENTRY_POINT_RENAME(uhash_removeElement)\r
 #define ultag_isUnicodeLocaleKey U_ICU_ENTRY_POINT_RENAME(ultag_isUnicodeLocaleKey)\r
 #define ultag_isUnicodeLocaleType U_ICU_ENTRY_POINT_RENAME(ultag_isUnicodeLocaleType)\r
 #define ultag_isVariantSubtags U_ICU_ENTRY_POINT_RENAME(ultag_isVariantSubtags)\r
+#define umeas_getPrefixBase U_ICU_ENTRY_POINT_RENAME(umeas_getPrefixBase)\r
+#define umeas_getPrefixPower U_ICU_ENTRY_POINT_RENAME(umeas_getPrefixPower)\r
 #define umsg_applyPattern U_ICU_ENTRY_POINT_RENAME(umsg_applyPattern)\r
 #define umsg_autoQuoteApostrophe U_ICU_ENTRY_POINT_RENAME(umsg_autoQuoteApostrophe)\r
 #define umsg_clone U_ICU_ENTRY_POINT_RENAME(umsg_clone)\r
 #define uset_compact U_ICU_ENTRY_POINT_RENAME(uset_compact)\r
 #define uset_complement U_ICU_ENTRY_POINT_RENAME(uset_complement)\r
 #define uset_complementAll U_ICU_ENTRY_POINT_RENAME(uset_complementAll)\r
+#define uset_complementAllCodePoints U_ICU_ENTRY_POINT_RENAME(uset_complementAllCodePoints)\r
+#define uset_complementRange U_ICU_ENTRY_POINT_RENAME(uset_complementRange)\r
+#define uset_complementString U_ICU_ENTRY_POINT_RENAME(uset_complementString)\r
 #define uset_contains U_ICU_ENTRY_POINT_RENAME(uset_contains)\r
 #define uset_containsAll U_ICU_ENTRY_POINT_RENAME(uset_containsAll)\r
 #define uset_containsAllCodePoints U_ICU_ENTRY_POINT_RENAME(uset_containsAllCodePoints)\r
 #define uset_openPatternOptions U_ICU_ENTRY_POINT_RENAME(uset_openPatternOptions)\r
 #define uset_remove U_ICU_ENTRY_POINT_RENAME(uset_remove)\r
 #define uset_removeAll U_ICU_ENTRY_POINT_RENAME(uset_removeAll)\r
+#define uset_removeAllCodePoints U_ICU_ENTRY_POINT_RENAME(uset_removeAllCodePoints)\r
 #define uset_removeAllStrings U_ICU_ENTRY_POINT_RENAME(uset_removeAllStrings)\r
 #define uset_removeRange U_ICU_ENTRY_POINT_RENAME(uset_removeRange)\r
 #define uset_removeString U_ICU_ENTRY_POINT_RENAME(uset_removeString)\r
 #define uset_resemblesPattern U_ICU_ENTRY_POINT_RENAME(uset_resemblesPattern)\r
 #define uset_retain U_ICU_ENTRY_POINT_RENAME(uset_retain)\r
 #define uset_retainAll U_ICU_ENTRY_POINT_RENAME(uset_retainAll)\r
+#define uset_retainAllCodePoints U_ICU_ENTRY_POINT_RENAME(uset_retainAllCodePoints)\r
+#define uset_retainString U_ICU_ENTRY_POINT_RENAME(uset_retainString)\r
 #define uset_serialize U_ICU_ENTRY_POINT_RENAME(uset_serialize)\r
 #define uset_serializedContains U_ICU_ENTRY_POINT_RENAME(uset_serializedContains)\r
 #define uset_set U_ICU_ENTRY_POINT_RENAME(uset_set)\r
index dec42b0..ac81e67 100644 (file)
@@ -582,8 +582,8 @@ U_CAPI void U_EXPORT2
 uset_addString(USet* set, const UChar* str, int32_t strLen);\r
 \r
 /**\r
- * Adds each of the characters in this string to the set. Thus "ch" => {"c", "h"}\r
- * If this set already any particular character, it has no effect on that character.\r
+ * Adds each of the characters in this string to the set. Note: "ch" => {"c", "h"}\r
+ * If this set already contains any particular character, it has no effect on that character.\r
  * A frozen set will not be modified.\r
  * @param set the object to which to add the character\r
  * @param str the source string\r
@@ -628,6 +628,20 @@ uset_removeRange(USet* set, UChar32 start, UChar32 end);
 U_CAPI void U_EXPORT2\r
 uset_removeString(USet* set, const UChar* str, int32_t strLen);\r
 \r
+#ifndef U_HIDE_DRAFT_API\r
+/**\r
+ * Removes EACH of the characters in this string. Note: "ch" == {"c", "h"}\r
+ * A frozen set will not be modified.\r
+ *\r
+ * @param set the object to be modified\r
+ * @param str the string\r
+ * @param length the length of the string, or -1 if NUL-terminated\r
+ * @draft ICU 69\r
+ */\r
+U_CAPI void U_EXPORT2\r
+uset_removeAllCodePoints(USet *set, const UChar *str, int32_t length);\r
+#endif  // U_HIDE_DRAFT_API\r
+\r
 /**\r
  * Removes from this set all of its elements that are contained in the\r
  * specified set.  This operation effectively modifies this\r
@@ -650,15 +664,41 @@ uset_removeAll(USet* set, const USet* removeSet);
  * A frozen set will not be modified.\r
  *\r
  * @param set the object for which to retain only the specified range\r
- * @param start first character, inclusive, of range to be retained\r
- * to this set.\r
- * @param end last character, inclusive, of range to be retained\r
- * to this set.\r
+ * @param start first character, inclusive, of range\r
+ * @param end last character, inclusive, of range\r
  * @stable ICU 3.2\r
  */\r
 U_CAPI void U_EXPORT2\r
 uset_retain(USet* set, UChar32 start, UChar32 end);\r
 \r
+#ifndef U_HIDE_DRAFT_API\r
+/**\r
+ * Retains only the specified string from this set if it is present.\r
+ * Upon return this set will be empty if it did not contain s, or\r
+ * will only contain s if it did contain s.\r
+ * A frozen set will not be modified.\r
+ *\r
+ * @param set the object to be modified\r
+ * @param str the string\r
+ * @param length the length of the string, or -1 if NUL-terminated\r
+ * @draft ICU 69\r
+ */\r
+U_CAPI void U_EXPORT2\r
+uset_retainString(USet *set, const UChar *str, int32_t length);\r
+\r
+/**\r
+ * Retains EACH of the characters in this string. Note: "ch" == {"c", "h"}\r
+ * A frozen set will not be modified.\r
+ *\r
+ * @param set the object to be modified\r
+ * @param str the string\r
+ * @param length the length of the string, or -1 if NUL-terminated\r
+ * @draft ICU 69\r
+ */\r
+U_CAPI void U_EXPORT2\r
+uset_retainAllCodePoints(USet *set, const UChar *str, int32_t length);\r
+#endif  // U_HIDE_DRAFT_API\r
+\r
 /**\r
  * Retains only the elements in this set that are contained in the\r
  * specified set.  In other words, removes from this set all of\r
@@ -696,6 +736,49 @@ uset_compact(USet* set);
 U_CAPI void U_EXPORT2\r
 uset_complement(USet* set);\r
 \r
+#ifndef U_HIDE_DRAFT_API\r
+/**\r
+ * Complements the specified range in this set.  Any character in\r
+ * the range will be removed if it is in this set, or will be\r
+ * added if it is not in this set.  If <code>start > end</code>\r
+ * then an empty range is complemented, leaving the set unchanged.\r
+ * This is equivalent to a boolean logic XOR.\r
+ * A frozen set will not be modified.\r
+ *\r
+ * @param set the object to be modified\r
+ * @param start first character, inclusive, of range\r
+ * @param end last character, inclusive, of range\r
+ * @draft ICU 69\r
+ */\r
+U_CAPI void U_EXPORT2\r
+uset_complementRange(USet *set, UChar32 start, UChar32 end);\r
+\r
+/**\r
+ * Complements the specified string in this set.\r
+ * The string will be removed if it is in this set, or will be added if it is not in this set.\r
+ * A frozen set will not be modified.\r
+ *\r
+ * @param set the object to be modified\r
+ * @param str the string\r
+ * @param length the length of the string, or -1 if NUL-terminated\r
+ * @draft ICU 69\r
+ */\r
+U_CAPI void U_EXPORT2\r
+uset_complementString(USet *set, const UChar *str, int32_t length);\r
+\r
+/**\r
+ * Complements EACH of the characters in this string. Note: "ch" == {"c", "h"}\r
+ * A frozen set will not be modified.\r
+ *\r
+ * @param set the object to be modified\r
+ * @param str the string\r
+ * @param length the length of the string, or -1 if NUL-terminated\r
+ * @draft ICU 69\r
+ */\r
+U_CAPI void U_EXPORT2\r
+uset_complementAllCodePoints(USet *set, const UChar *str, int32_t length);\r
+#endif  // U_HIDE_DRAFT_API\r
+\r
 /**\r
  * Complements in this set all elements contained in the specified\r
  * set.  Any character in the other set will be removed if it is\r
index c2318db..cde5a06 100644 (file)
@@ -323,7 +323,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength,
 #define U_SHAPE_PRESERVE_PRESENTATION           0x8000\r
 /** Presentation form option: \r
  * Replace Arabic Presentation Forms-A and Arabic Presentationo Forms-B with \r
- * their unshaped correspondants in range 0+06xx, before shaping.\r
+ * their unshaped correspondents in range 0+06xx, before shaping.\r
  * @stable ICU 3.6 \r
  */\r
 #define U_SHAPE_PRESERVE_PRESENTATION_NOOP      0\r
index c7b5df6..7a35eca 100644 (file)
@@ -173,24 +173,23 @@ typedef enum UTraceFunctionNumber {
     UTRACE_RES_DATA_LIMIT,\r
 #endif  // U_HIDE_INTERNAL_API\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
     /**\r
      * The lowest break iterator location.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UTRACE_UBRK_START=0x4000,\r
 \r
     /**\r
      * Indicates that a character instance of break iterator was created.\r
      *\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UTRACE_UBRK_CREATE_CHARACTER = UTRACE_UBRK_START,\r
 \r
     /**\r
      * Indicates that a word instance of break iterator was created.\r
      *\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UTRACE_UBRK_CREATE_WORD,\r
 \r
@@ -200,21 +199,21 @@ typedef enum UTraceFunctionNumber {
      * Provides one C-style string to UTraceData: the lb value ("",\r
      * "loose", "strict", or "normal").\r
      *\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UTRACE_UBRK_CREATE_LINE,\r
 \r
     /**\r
      * Indicates that a sentence instance of break iterator was created.\r
      *\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UTRACE_UBRK_CREATE_SENTENCE,\r
 \r
     /**\r
      * Indicates that a title instance of break iterator was created.\r
      *\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UTRACE_UBRK_CREATE_TITLE,\r
 \r
@@ -224,12 +223,10 @@ typedef enum UTraceFunctionNumber {
      * Provides one C-style string to UTraceData: the script code of what\r
      * the break engine cover ("Hani", "Khmr", "Laoo", "Mymr", or "Thai").\r
      *\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UTRACE_UBRK_CREATE_BREAK_ENGINE,\r
 \r
-#endif  // U_HIDE_DRAFT_API\r
-\r
 #ifndef U_HIDE_INTERNAL_API\r
     /**\r
      * One more than the highest normal break iterator trace location.\r
index ccf1de6..837bef1 100644 (file)
  *  This value will change in the subsequent releases of ICU\r
  *  @stable ICU 2.4\r
  */\r
-#define U_ICU_VERSION_MAJOR_NUM 68\r
+#define U_ICU_VERSION_MAJOR_NUM 69\r
 \r
 /** The current ICU minor version as an integer.\r
  *  This value will change in the subsequent releases of ICU\r
  *  @stable ICU 2.6\r
  */\r
-#define U_ICU_VERSION_MINOR_NUM 2\r
+#define U_ICU_VERSION_MINOR_NUM 1\r
 \r
 /** The current ICU patchlevel version as an integer.\r
  *  This value will change in the subsequent releases of ICU\r
@@ -86,7 +86,7 @@
  *  This value will change in the subsequent releases of ICU\r
  *  @stable ICU 2.6\r
  */\r
-#define U_ICU_VERSION_SUFFIX _68\r
+#define U_ICU_VERSION_SUFFIX _69\r
 \r
 /**\r
  * \def U_DEF2_ICU_ENTRY_POINT_RENAME\r
  *  This value will change in the subsequent releases of ICU\r
  *  @stable ICU 2.4\r
  */\r
-#define U_ICU_VERSION "68.2"\r
+#define U_ICU_VERSION "69.1"\r
 \r
 /**\r
  * The current ICU library major version number as a string, for library name suffixes.\r
  *\r
  * @stable ICU 2.6\r
  */\r
-#define U_ICU_VERSION_SHORT "68"\r
+#define U_ICU_VERSION_SHORT "69"\r
 \r
 #ifndef U_HIDE_INTERNAL_API\r
 /** Data version in ICU4C.\r
  * @internal ICU 4.4 Internal Use Only\r
  **/\r
-#define U_ICU_DATA_VERSION "68.2"\r
+#define U_ICU_DATA_VERSION "69.1"\r
 #endif  /* U_HIDE_INTERNAL_API */\r
 \r
 /*===========================================================================\r
index 7a48479..d6f4b7a 100644 (file)
 #include "bmpset.h"\r
 #include "unisetspan.h"\r
 \r
-// Define UChar constants using hex for EBCDIC compatibility\r
-// Used #define to reduce private static exports and memory access time.\r
-#define SET_OPEN        ((UChar)0x005B) /*[*/\r
-#define SET_CLOSE       ((UChar)0x005D) /*]*/\r
-#define HYPHEN          ((UChar)0x002D) /*-*/\r
-#define COMPLEMENT      ((UChar)0x005E) /*^*/\r
-#define COLON           ((UChar)0x003A) /*:*/\r
-#define BACKSLASH       ((UChar)0x005C) /*\*/\r
-#define INTERSECTION    ((UChar)0x0026) /*&*/\r
-#define UPPER_U         ((UChar)0x0055) /*U*/\r
-#define LOWER_U         ((UChar)0x0075) /*u*/\r
-#define OPEN_BRACE      ((UChar)123)    /*{*/\r
-#define CLOSE_BRACE     ((UChar)125)    /*}*/\r
-#define UPPER_P         ((UChar)0x0050) /*P*/\r
-#define LOWER_P         ((UChar)0x0070) /*p*/\r
-#define UPPER_N         ((UChar)78)     /*N*/\r
-#define EQUALS          ((UChar)0x003D) /*=*/\r
-\r
 // HIGH_VALUE > all valid values. 110000 for codepoints\r
 #define UNICODESET_HIGH 0x0110000\r
 \r
@@ -444,7 +426,6 @@ UBool UnicodeSet::contains(UChar32 start, UChar32 end) const {
  * @return <tt>true</tt> if this set contains the specified string\r
  */\r
 UBool UnicodeSet::contains(const UnicodeString& s) const {\r
-    if (s.length() == 0) return FALSE;\r
     int32_t cp = getSingleCP(s);\r
     if (cp < 0) {\r
         return stringsContains(s);\r
@@ -559,11 +540,9 @@ UBool UnicodeSet::matchesIndexValue(uint8_t v) const {
     if (hasStrings()) {\r
         for (i=0; i<strings->size(); ++i) {\r
             const UnicodeString& s = *(const UnicodeString*)strings->elementAt(i);\r
-            //if (s.length() == 0) {\r
-            //    // Empty strings match everything\r
-            //    return TRUE;\r
-            //}\r
-            // assert(s.length() != 0); // We enforce this elsewhere\r
+            if (s.isEmpty()) {\r
+                continue;  // skip the empty string\r
+            }\r
             UChar32 c = s.char32At(0);\r
             if ((c & 0xFF) == v) {\r
                 return TRUE;\r
@@ -582,9 +561,6 @@ UMatchDegree UnicodeSet::matches(const Replaceable& text,
                                  int32_t limit,\r
                                  UBool incremental) {\r
     if (offset == limit) {\r
-        // Strings, if any, have length != 0, so we don't worry\r
-        // about them here.  If we ever allow zero-length strings\r
-        // we much check for them here.\r
         if (contains(U_ETHER)) {\r
             return incremental ? U_PARTIAL_MATCH : U_MATCH;\r
         } else {\r
@@ -614,11 +590,9 @@ UMatchDegree UnicodeSet::matches(const Replaceable& text,
 \r
             for (i=0; i<strings->size(); ++i) {\r
                 const UnicodeString& trial = *(const UnicodeString*)strings->elementAt(i);\r
-\r
-                //if (trial.length() == 0) {\r
-                //    return U_MATCH; // null-string always matches\r
-                //}\r
-                // assert(trial.length() != 0); // We ensure this elsewhere\r
+                if (trial.isEmpty()) {\r
+                    continue;  // skip the empty string\r
+                }\r
 \r
                 UChar c = trial.charAt(forward ? 0 : trial.length() - 1);\r
 \r
@@ -971,12 +945,12 @@ UnicodeSet& UnicodeSet::add(UChar32 c) {
  * present.  If this set already contains the multicharacter,\r
  * the call leaves this set unchanged.\r
  * Thus "ch" => {"ch"}\r
- * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>\r
+ *\r
  * @param s the source string\r
  * @return the modified set, for chaining\r
  */\r
 UnicodeSet& UnicodeSet::add(const UnicodeString& s) {\r
-    if (s.length() == 0 || isFrozen() || isBogus()) return *this;\r
+    if (isFrozen() || isBogus()) return *this;\r
     int32_t cp = getSingleCP(s);\r
     if (cp < 0) {\r
         if (!stringsContains(s)) {\r
@@ -991,8 +965,7 @@ UnicodeSet& UnicodeSet::add(const UnicodeString& s) {
 \r
 /**\r
  * Adds the given string, in order, to 'strings'.  The given string\r
- * must have been checked by the caller to not be empty and to not\r
- * already be in 'strings'.\r
+ * must have been checked by the caller to not already be in 'strings'.\r
  */\r
 void UnicodeSet::_add(const UnicodeString& s) {\r
     if (isFrozen() || isBogus()) {\r
@@ -1021,16 +994,13 @@ void UnicodeSet::_add(const UnicodeString& s) {
  * @param string to test\r
  */\r
 int32_t UnicodeSet::getSingleCP(const UnicodeString& s) {\r
-    //if (s.length() < 1) {\r
-    //    throw new IllegalArgumentException("Can't use zero-length strings in UnicodeSet");\r
-    //}\r
-    if (s.length() > 2) return -1;\r
-    if (s.length() == 1) return s.charAt(0);\r
-\r
-    // at this point, len = 2\r
-    UChar32 cp = s.char32At(0);\r
-    if (cp > 0xFFFF) { // is surrogate pair\r
-        return cp;\r
+    int32_t sLength = s.length();\r
+    if (sLength == 1) return s.charAt(0);\r
+    if (sLength == 2) {\r
+        UChar32 cp = s.char32At(0);\r
+        if (cp > 0xFFFF) { // is surrogate pair\r
+            return cp;\r
+        }\r
     }\r
     return -1;\r
 }\r
@@ -1150,6 +1120,26 @@ UnicodeSet& UnicodeSet::retain(UChar32 c) {
     return retain(c, c);\r
 }\r
 \r
+UnicodeSet& UnicodeSet::retain(const UnicodeString &s) {\r
+    if (isFrozen() || isBogus()) { return *this; }\r
+    UChar32 cp = getSingleCP(s);\r
+    if (cp < 0) {\r
+        bool isIn = stringsContains(s);\r
+        // Check for getRangeCount() first to avoid somewhat-expensive size()\r
+        // when there are single code points.\r
+        if (isIn && getRangeCount() == 0 && size() == 1) {\r
+            return *this;\r
+        }\r
+        clear();\r
+        if (isIn) {\r
+            _add(s);\r
+        }\r
+    } else {\r
+        retain(cp, cp);\r
+    }\r
+    return *this;\r
+}\r
+\r
 /**\r
  * Removes the specified range from this set if it is present.\r
  * The set will not contain the specified range once the call\r
@@ -1186,7 +1176,7 @@ UnicodeSet& UnicodeSet::remove(UChar32 c) {
  * @return the modified set, for chaining\r
  */\r
 UnicodeSet& UnicodeSet::remove(const UnicodeString& s) {\r
-    if (s.length() == 0 || isFrozen() || isBogus()) return *this;\r
+    if (isFrozen() || isBogus()) return *this;\r
     int32_t cp = getSingleCP(s);\r
     if (cp < 0) {\r
         if (strings != nullptr && strings->removeElement((void*) &s)) {\r
@@ -1252,12 +1242,12 @@ UnicodeSet& UnicodeSet::complement(void) {
  * Complement the specified string in this set.\r
  * The set will not contain the specified string once the call\r
  * returns.\r
- * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>\r
+ *\r
  * @param s the string to complement\r
  * @return this object, for chaining\r
  */\r
 UnicodeSet& UnicodeSet::complement(const UnicodeString& s) {\r
-    if (s.length() == 0 || isFrozen() || isBogus()) return *this;\r
+    if (isFrozen() || isBogus()) return *this;\r
     int32_t cp = getSingleCP(s);\r
     if (cp < 0) {\r
         if (stringsContains(s)) {\r
@@ -2001,22 +1991,22 @@ escapeUnprintable) {
     }\r
     // Okay to let ':' pass through\r
     switch (c) {\r
-    case SET_OPEN:\r
-    case SET_CLOSE:\r
-    case HYPHEN:\r
-    case COMPLEMENT:\r
-    case INTERSECTION:\r
-    case BACKSLASH:\r
-    case OPEN_BRACE:\r
-    case CLOSE_BRACE:\r
-    case COLON:\r
+    case u'[':\r
+    case u']':\r
+    case u'-':\r
+    case u'^':\r
+    case u'&':\r
+    case u'\\':\r
+    case u'{':\r
+    case u'}':\r
+    case u':':\r
     case SymbolTable::SYMBOL_REF:\r
-        buf.append(BACKSLASH);\r
+        buf.append(u'\\');\r
         break;\r
     default:\r
         // Escape whitespace\r
         if (PatternProps::isWhiteSpace(c)) {\r
-            buf.append(BACKSLASH);\r
+            buf.append(u'\\');\r
         }\r
         break;\r
     }\r
@@ -2049,7 +2039,7 @@ UnicodeString& UnicodeSet::_toPattern(UnicodeString& result,
                 backslashCount = 0;\r
             } else {\r
                 result.append(c);\r
-                if (c == BACKSLASH) {\r
+                if (c == u'\\') {\r
                     ++backslashCount;\r
                 } else {\r
                     backslashCount = 0;\r
@@ -2082,13 +2072,13 @@ UnicodeString& UnicodeSet::toPattern(UnicodeString& result,
 UnicodeString& UnicodeSet::_generatePattern(UnicodeString& result,\r
                                             UBool escapeUnprintable) const\r
 {\r
-    result.append(SET_OPEN);\r
+    result.append(u'[');\r
 \r
 //  // Check against the predefined categories.  We implicitly build\r
 //  // up ALL category sets the first time toPattern() is called.\r
 //  for (int8_t cat=0; cat<Unicode::GENERAL_TYPES_COUNT; ++cat) {\r
 //      if (*this == getCategorySet(cat)) {\r
-//          result.append(COLON);\r
+//          result.append(u':');\r
 //          result.append(CATEGORY_NAMES, cat*2, 2);\r
 //          return result.append(CATEGORY_CLOSE);\r
 //      }\r
@@ -2104,7 +2094,7 @@ UnicodeString& UnicodeSet::_generatePattern(UnicodeString& result,
         getRangeEnd(count-1) == MAX_VALUE) {\r
 \r
         // Emit the inverse\r
-        result.append(COMPLEMENT);\r
+        result.append(u'^');\r
 \r
         for (int32_t i = 1; i < count; ++i) {\r
             UChar32 start = getRangeEnd(i-1)+1;\r
@@ -2112,7 +2102,7 @@ UnicodeString& UnicodeSet::_generatePattern(UnicodeString& result,
             _appendToPat(result, start, escapeUnprintable);\r
             if (start != end) {\r
                 if ((start+1) != end) {\r
-                    result.append(HYPHEN);\r
+                    result.append(u'-');\r
                 }\r
                 _appendToPat(result, end, escapeUnprintable);\r
             }\r
@@ -2127,7 +2117,7 @@ UnicodeString& UnicodeSet::_generatePattern(UnicodeString& result,
             _appendToPat(result, start, escapeUnprintable);\r
             if (start != end) {\r
                 if ((start+1) != end) {\r
-                    result.append(HYPHEN);\r
+                    result.append(u'-');\r
                 }\r
                 _appendToPat(result, end, escapeUnprintable);\r
             }\r
@@ -2136,14 +2126,14 @@ UnicodeString& UnicodeSet::_generatePattern(UnicodeString& result,
 \r
     if (strings != nullptr) {\r
         for (int32_t i = 0; i<strings->size(); ++i) {\r
-            result.append(OPEN_BRACE);\r
+            result.append(u'{');\r
             _appendToPat(result,\r
                          *(const UnicodeString*) strings->elementAt(i),\r
                          escapeUnprintable);\r
-            result.append(CLOSE_BRACE);\r
+            result.append(u'}');\r
         }\r
     }\r
-    return result.append(SET_CLOSE);\r
+    return result.append(u']');\r
 }\r
 \r
 /**\r
index cf928de..3367194 100644 (file)
 \r
 U_NAMESPACE_USE\r
 \r
-// Define UChar constants using hex for EBCDIC compatibility\r
-// Used #define to reduce private static exports and memory access time.\r
-#define SET_OPEN        ((UChar)0x005B) /*[*/\r
-#define SET_CLOSE       ((UChar)0x005D) /*]*/\r
-#define HYPHEN          ((UChar)0x002D) /*-*/\r
-#define COMPLEMENT      ((UChar)0x005E) /*^*/\r
-#define COLON           ((UChar)0x003A) /*:*/\r
-#define BACKSLASH       ((UChar)0x005C) /*\*/\r
-#define INTERSECTION    ((UChar)0x0026) /*&*/\r
-#define UPPER_U         ((UChar)0x0055) /*U*/\r
-#define LOWER_U         ((UChar)0x0075) /*u*/\r
-#define OPEN_BRACE      ((UChar)123)    /*{*/\r
-#define CLOSE_BRACE     ((UChar)125)    /*}*/\r
-#define UPPER_P         ((UChar)0x0050) /*P*/\r
-#define LOWER_P         ((UChar)0x0070) /*p*/\r
-#define UPPER_N         ((UChar)78)     /*N*/\r
-#define EQUALS          ((UChar)0x003D) /*=*/\r
-\r
-//static const UChar POSIX_OPEN[]  = { SET_OPEN,COLON,0 };  // "[:"\r
-static const UChar POSIX_CLOSE[] = { COLON,SET_CLOSE,0 };  // ":]"\r
-//static const UChar PERL_OPEN[]   = { BACKSLASH,LOWER_P,0 }; // "\\p"\r
-//static const UChar PERL_CLOSE[]  = { CLOSE_BRACE,0 };    // "}"\r
-//static const UChar NAME_OPEN[]   = { BACKSLASH,UPPER_N,0 };  // "\\N"\r
-static const UChar HYPHEN_RIGHT_BRACE[] = {HYPHEN,SET_CLOSE,0}; /*-]*/\r
-\r
 // Special property set IDs\r
 static const char ANY[]   = "ANY";   // [\u0000-\U0010FFFF]\r
 static const char ASCII[] = "ASCII"; // [\u0000-\u007F]\r
@@ -81,12 +56,6 @@ static const char ASSIGNED[] = "Assigned"; // [:^Cn:]
 #define NAME_PROP "na"\r
 #define NAME_PROP_LENGTH 2\r
 \r
-/**\r
- * Delimiter string used in patterns to close a category reference:\r
- * ":]".  Example: "[:Lu:]".\r
- */\r
-//static const UChar CATEGORY_CLOSE[] = {COLON, SET_CLOSE, 0x0000}; /* ":]" */\r
-\r
 // Cached sets ------------------------------------------------------------- ***\r
 \r
 U_CDECL_BEGIN\r
@@ -140,27 +109,27 @@ uniset_getUnicode32Instance(UErrorCode &errorCode) {
 static inline UBool\r
 isPerlOpen(const UnicodeString &pattern, int32_t pos) {\r
     UChar c;\r
-    return pattern.charAt(pos)==BACKSLASH && ((c=pattern.charAt(pos+1))==LOWER_P || c==UPPER_P);\r
+    return pattern.charAt(pos)==u'\\' && ((c=pattern.charAt(pos+1))==u'p' || c==u'P');\r
 }\r
 \r
 /*static inline UBool\r
 isPerlClose(const UnicodeString &pattern, int32_t pos) {\r
-    return pattern.charAt(pos)==CLOSE_BRACE;\r
+    return pattern.charAt(pos)==u'}';\r
 }*/\r
 \r
 static inline UBool\r
 isNameOpen(const UnicodeString &pattern, int32_t pos) {\r
-    return pattern.charAt(pos)==BACKSLASH && pattern.charAt(pos+1)==UPPER_N;\r
+    return pattern.charAt(pos)==u'\\' && pattern.charAt(pos+1)==u'N';\r
 }\r
 \r
 static inline UBool\r
 isPOSIXOpen(const UnicodeString &pattern, int32_t pos) {\r
-    return pattern.charAt(pos)==SET_OPEN && pattern.charAt(pos+1)==COLON;\r
+    return pattern.charAt(pos)==u'[' && pattern.charAt(pos+1)==u':';\r
 }\r
 \r
 /*static inline UBool\r
 isPOSIXClose(const UnicodeString &pattern, int32_t pos) {\r
-    return pattern.charAt(pos)==COLON && pattern.charAt(pos+1)==SET_CLOSE;\r
+    return pattern.charAt(pos)==u':' && pattern.charAt(pos+1)==u']';\r
 }*/\r
 \r
 // TODO memory debugging provided inside uniset.cpp\r
@@ -326,9 +295,8 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
 \r
     while (mode != 2 && !chars.atEnd()) {\r
         U_ASSERT((lastItem == 0 && op == 0) ||\r
-                 (lastItem == 1 && (op == 0 || op == HYPHEN /*'-'*/)) ||\r
-                 (lastItem == 2 && (op == 0 || op == HYPHEN /*'-'*/ ||\r
-                                    op == INTERSECTION /*'&'*/)));\r
+                 (lastItem == 1 && (op == 0 || op == u'-')) ||\r
+                 (lastItem == 2 && (op == 0 || op == u'-' || op == u'&')));\r
 \r
         UChar32 c = 0;\r
         UBool literal = FALSE;\r
@@ -356,27 +324,27 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
             c = chars.next(opts, literal, ec);\r
             if (U_FAILURE(ec)) return;\r
 \r
-            if (c == 0x5B /*'['*/ && !literal) {\r
+            if (c == u'[' && !literal) {\r
                 if (mode == 1) {\r
                     chars.setPos(backup); // backup\r
                     setMode = 1;\r
                 } else {\r
                     // Handle opening '[' delimiter\r
                     mode = 1;\r
-                    patLocal.append((UChar) 0x5B /*'['*/);\r
+                    patLocal.append(u'[');\r
                     chars.getPos(backup); // prepare to backup\r
                     c = chars.next(opts, literal, ec); \r
                     if (U_FAILURE(ec)) return;\r
-                    if (c == 0x5E /*'^'*/ && !literal) {\r
+                    if (c == u'^' && !literal) {\r
                         invert = TRUE;\r
-                        patLocal.append((UChar) 0x5E /*'^'*/);\r
+                        patLocal.append(u'^');\r
                         chars.getPos(backup); // prepare to backup\r
                         c = chars.next(opts, literal, ec);\r
                         if (U_FAILURE(ec)) return;\r
                     }\r
                     // Fall through to handle special leading '-';\r
                     // otherwise restart loop for nested [], \p{}, etc.\r
-                    if (c == HYPHEN /*'-'*/) {\r
+                    if (c == u'-') {\r
                         literal = TRUE;\r
                         // Fall through to handle literal '-' below\r
                     } else {\r
@@ -418,7 +386,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
                 op = 0;\r
             }\r
 \r
-            if (op == HYPHEN /*'-'*/ || op == INTERSECTION /*'&'*/) {\r
+            if (op == u'-' || op == u'&') {\r
                 patLocal.append(op);\r
             }\r
 \r
@@ -454,10 +422,10 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
             }\r
 \r
             switch (op) {\r
-            case HYPHEN: /*'-'*/\r
+            case u'-':\r
                 removeAll(*nested);\r
                 break;\r
-            case INTERSECTION: /*'&'*/\r
+            case u'&':\r
                 retainAll(*nested);\r
                 break;\r
             case 0:\r
@@ -483,24 +451,24 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
 \r
         if (!literal) {\r
             switch (c) {\r
-            case 0x5D /*']'*/:\r
+            case u']':\r
                 if (lastItem == 1) {\r
                     add(lastChar, lastChar);\r
                     _appendToPat(patLocal, lastChar, FALSE);\r
                 }\r
                 // Treat final trailing '-' as a literal\r
-                if (op == HYPHEN /*'-'*/) {\r
+                if (op == u'-') {\r
                     add(op, op);\r
                     patLocal.append(op);\r
-                } else if (op == INTERSECTION /*'&'*/) {\r
+                } else if (op == u'&') {\r
                     // syntaxError(chars, "Trailing '&'");\r
                     ec = U_MALFORMED_SET;\r
                     return;\r
                 }\r
-                patLocal.append((UChar) 0x5D /*']'*/);\r
+                patLocal.append(u']');\r
                 mode = 2;\r
                 continue;\r
-            case HYPHEN /*'-'*/:\r
+            case u'-':\r
                 if (op == 0) {\r
                     if (lastItem != 0) {\r
                         op = (UChar) c;\r
@@ -510,8 +478,8 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
                         add(c, c);\r
                         c = chars.next(opts, literal, ec);\r
                         if (U_FAILURE(ec)) return;\r
-                        if (c == 0x5D /*']'*/ && !literal) {\r
-                            patLocal.append(HYPHEN_RIGHT_BRACE, 2);\r
+                        if (c == u']' && !literal) {\r
+                            patLocal.append(u"-]", 2);\r
                             mode = 2;\r
                             continue;\r
                         }\r
@@ -520,7 +488,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
                 // syntaxError(chars, "'-' not after char or set");\r
                 ec = U_MALFORMED_SET;\r
                 return;\r
-            case INTERSECTION /*'&'*/:\r
+            case u'&':\r
                 if (lastItem == 2 && op == 0) {\r
                     op = (UChar) c;\r
                     continue;\r
@@ -528,11 +496,11 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
                 // syntaxError(chars, "'&' not after set");\r
                 ec = U_MALFORMED_SET;\r
                 return;\r
-            case 0x5E /*'^'*/:\r
+            case u'^':\r
                 // syntaxError(chars, "'^' not after '['");\r
                 ec = U_MALFORMED_SET;\r
                 return;\r
-            case 0x7B /*'{'*/:\r
+            case u'{':\r
                 if (op != 0) {\r
                     // syntaxError(chars, "Missing operand after operator");\r
                     ec = U_MALFORMED_SET;\r
@@ -549,13 +517,13 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
                     while (!chars.atEnd()) {\r
                         c = chars.next(opts, literal, ec);\r
                         if (U_FAILURE(ec)) return;\r
-                        if (c == 0x7D /*'}'*/ && !literal) {\r
+                        if (c == u'}' && !literal) {\r
                             ok = TRUE;\r
                             break;\r
                         }\r
                         buf.append(c);\r
                     }\r
-                    if (buf.length() < 1 || !ok) {\r
+                    if (!ok) {\r
                         // syntaxError(chars, "Invalid multicharacter string");\r
                         ec = U_MALFORMED_SET;\r
                         return;\r
@@ -565,9 +533,9 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
                 // we don't need to drop through to the further\r
                 // processing\r
                 add(buf);\r
-                patLocal.append((UChar) 0x7B /*'{'*/);\r
+                patLocal.append(u'{');\r
                 _appendToPat(patLocal, buf, FALSE);\r
-                patLocal.append((UChar) 0x7D /*'}'*/);\r
+                patLocal.append(u'}');\r
                 continue;\r
             case SymbolTable::SYMBOL_REF:\r
                 //         symbols  nosymbols\r
@@ -580,7 +548,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
                     chars.getPos(backup);\r
                     c = chars.next(opts, literal, ec);\r
                     if (U_FAILURE(ec)) return;\r
-                    UBool anchor = (c == 0x5D /*']'*/ && !literal);\r
+                    UBool anchor = (c == u']' && !literal);\r
                     if (symbols == 0 && !anchor) {\r
                         c = SymbolTable::SYMBOL_REF;\r
                         chars.setPos(backup);\r
@@ -594,7 +562,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
                         add(U_ETHER);\r
                         usePat = TRUE;\r
                         patLocal.append((UChar) SymbolTable::SYMBOL_REF);\r
-                        patLocal.append((UChar) 0x5D /*']'*/);\r
+                        patLocal.append(u']');\r
                         mode = 2;\r
                         continue;\r
                     }\r
@@ -617,7 +585,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
             lastChar = c;\r
             break;\r
         case 1:\r
-            if (op == HYPHEN /*'-'*/) {\r
+            if (op == u'-') {\r
                 if (lastChar >= c) {\r
                     // Don't allow redundant (a-a) or empty (b-a) ranges;\r
                     // these are most likely typos.\r
@@ -1036,11 +1004,11 @@ UBool UnicodeSet::resemblesPropertyPattern(RuleCharacterIterator& chars,
     RuleCharacterIterator::Pos pos;\r
     chars.getPos(pos);\r
     UChar32 c = chars.next(iterOpts, literal, ec);\r
-    if (c == 0x5B /*'['*/ || c == 0x5C /*'\\'*/) {\r
+    if (c == u'[' || c == u'\\') {\r
         UChar32 d = chars.next(iterOpts & ~RuleCharacterIterator::SKIP_WHITESPACE,\r
                                literal, ec);\r
-        result = (c == 0x5B /*'['*/) ? (d == 0x3A /*':'*/) :\r
-                 (d == 0x4E /*'N'*/ || d == 0x70 /*'p'*/ || d == 0x50 /*'P'*/);\r
+        result = (c == u'[') ? (d == u':') :\r
+                               (d == u'N' || d == u'p' || d == u'P');\r
     }\r
     chars.setPos(pos);\r
     return result && U_SUCCESS(ec);\r
@@ -1071,17 +1039,17 @@ UnicodeSet& UnicodeSet::applyPropertyPattern(const UnicodeString& pattern,
         posix = TRUE;\r
         pos += 2;\r
         pos = ICU_Utility::skipWhitespace(pattern, pos);\r
-        if (pos < pattern.length() && pattern.charAt(pos) == COMPLEMENT) {\r
+        if (pos < pattern.length() && pattern.charAt(pos) == u'^') {\r
             ++pos;\r
             invert = TRUE;\r
         }\r
     } else if (isPerlOpen(pattern, pos) || isNameOpen(pattern, pos)) {\r
         UChar c = pattern.charAt(pos+1);\r
-        invert = (c == UPPER_P);\r
-        isName = (c == UPPER_N);\r
+        invert = (c == u'P');\r
+        isName = (c == u'N');\r
         pos += 2;\r
         pos = ICU_Utility::skipWhitespace(pattern, pos);\r
-        if (pos == pattern.length() || pattern.charAt(pos++) != OPEN_BRACE) {\r
+        if (pos == pattern.length() || pattern.charAt(pos++) != u'{') {\r
             // Syntax error; "\p" or "\P" not followed by "{"\r
             FAIL(ec);\r
         }\r
@@ -1093,9 +1061,9 @@ UnicodeSet& UnicodeSet::applyPropertyPattern(const UnicodeString& pattern,
     // Look for the matching close delimiter, either :] or }\r
     int32_t close;\r
     if (posix) {\r
-      close = pattern.indexOf(POSIX_CLOSE, 2, pos);\r
+      close = pattern.indexOf(u":]", 2, pos);\r
     } else {\r
-      close = pattern.indexOf(CLOSE_BRACE, pos);\r
+      close = pattern.indexOf(u'}', pos);\r
     }\r
     if (close < 0) {\r
         // Syntax error; close delimiter missing\r
@@ -1105,7 +1073,7 @@ UnicodeSet& UnicodeSet::applyPropertyPattern(const UnicodeString& pattern,
     // Look for an '=' sign.  If this is present, we will parse a\r
     // medium \p{gc=Cf} or long \p{GeneralCategory=Format}\r
     // pattern.\r
-    int32_t equals = pattern.indexOf(EQUALS, pos);\r
+    int32_t equals = pattern.indexOf(u'=', pos);\r
     UnicodeString propName, valueName;\r
     if (equals >= 0 && equals < close && !isName) {\r
         // Equals seen; parse medium/long pattern\r
index 7ee7420..a548b36 100644 (file)
@@ -231,6 +231,9 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSet &set,
         const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);\r
         const UChar *s16=string.getBuffer();\r
         int32_t length16=string.length();\r
+        if (length16==0) {\r
+            continue;  // skip the empty string\r
+        }\r
         UBool thisRelevant;\r
         spanLength=spanSet.span(s16, length16, USET_SPAN_CONTAINED);\r
         if(spanLength<length16) {  // Relevant string.\r
@@ -312,7 +315,7 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSet &set,
         const UChar *s16=string.getBuffer();\r
         int32_t length16=string.length();\r
         spanLength=spanSet.span(s16, length16, USET_SPAN_CONTAINED);\r
-        if(spanLength<length16) {  // Relevant string.\r
+        if(spanLength<length16 && length16>0) {  // Relevant string.\r
             if(which&UTF16) {\r
                 if(which&CONTAINED) {\r
                     if(which&FWD) {\r
@@ -362,7 +365,7 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSet &set,
                     addToSpanNotSet(c);\r
                 }\r
             }\r
-        } else {  // Irrelevant string.\r
+        } else {  // Irrelevant string. (Also the empty string.)\r
             if(which&UTF8) {\r
                 if(which&CONTAINED) {  // Only necessary for LONGEST_MATCH.\r
                     uint8_t *s8=utf8+utf8Count;\r
@@ -653,11 +656,12 @@ int32_t UnicodeSetStringSpan::span(const UChar *s, int32_t length, USetSpanCondi
             for(i=0; i<stringsLength; ++i) {\r
                 int32_t overlap=spanLengths[i];\r
                 if(overlap==ALL_CP_CONTAINED) {\r
-                    continue;  // Irrelevant string.\r
+                    continue;  // Irrelevant string. (Also the empty string.)\r
                 }\r
                 const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);\r
                 const UChar *s16=string.getBuffer();\r
                 int32_t length16=string.length();\r
+                U_ASSERT(length>0);\r
 \r
                 // Try to match this string at pos-overlap..pos.\r
                 if(overlap>=LONG_SPAN) {\r
@@ -697,6 +701,9 @@ int32_t UnicodeSetStringSpan::span(const UChar *s, int32_t length, USetSpanCondi
                 const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);\r
                 const UChar *s16=string.getBuffer();\r
                 int32_t length16=string.length();\r
+                if (length16==0) {\r
+                    continue;  // skip the empty string\r
+                }\r
 \r
                 // Try to match this string at pos-overlap..pos.\r
                 if(overlap>=LONG_SPAN) {\r
@@ -817,11 +824,12 @@ int32_t UnicodeSetStringSpan::spanBack(const UChar *s, int32_t length, USetSpanC
             for(i=0; i<stringsLength; ++i) {\r
                 int32_t overlap=spanBackLengths[i];\r
                 if(overlap==ALL_CP_CONTAINED) {\r
-                    continue;  // Irrelevant string.\r
+                    continue;  // Irrelevant string. (Also the empty string.)\r
                 }\r
                 const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);\r
                 const UChar *s16=string.getBuffer();\r
                 int32_t length16=string.length();\r
+                U_ASSERT(length>0);\r
 \r
                 // Try to match this string at pos-(length16-overlap)..pos-length16.\r
                 if(overlap>=LONG_SPAN) {\r
@@ -863,6 +871,9 @@ int32_t UnicodeSetStringSpan::spanBack(const UChar *s, int32_t length, USetSpanC
                 const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);\r
                 const UChar *s16=string.getBuffer();\r
                 int32_t length16=string.length();\r
+                if (length16==0) {\r
+                    continue;  // skip the empty string\r
+                }\r
 \r
                 // Try to match this string at pos-(length16-overlap)..pos-length16.\r
                 if(overlap>=LONG_SPAN) {\r
@@ -1358,11 +1369,12 @@ int32_t UnicodeSetStringSpan::spanNot(const UChar *s, int32_t length) const {
         // Try to match the strings at pos.\r
         for(i=0; i<stringsLength; ++i) {\r
             if(spanLengths[i]==ALL_CP_CONTAINED) {\r
-                continue;  // Irrelevant string.\r
+                continue;  // Irrelevant string. (Also the empty string.)\r
             }\r
             const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);\r
             const UChar *s16=string.getBuffer();\r
             int32_t length16=string.length();\r
+            U_ASSERT(length>0);\r
             if(length16<=rest && matches16CPB(s, pos, length, s16, length16)) {\r
                 return pos;  // There is a set element at pos.\r
             }\r
@@ -1401,11 +1413,12 @@ int32_t UnicodeSetStringSpan::spanNotBack(const UChar *s, int32_t length) const
             // it is easier and we only need to know whether the string is irrelevant\r
             // which is the same in either array.\r
             if(spanLengths[i]==ALL_CP_CONTAINED) {\r
-                continue;  // Irrelevant string.\r
+                continue;  // Irrelevant string. (Also the empty string.)\r
             }\r
             const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);\r
             const UChar *s16=string.getBuffer();\r
             int32_t length16=string.length();\r
+            U_ASSERT(length>0);\r
             if(length16<=pos && matches16CPB(s, pos-length16, length, s16, length16)) {\r
                 return pos;  // There is a set element at pos.\r
             }\r
index 848fe67..9dadf22 100644 (file)
@@ -310,55 +310,12 @@ u_isgraphPOSIX(UChar32 c);
 U_CFUNC UBool\r
 u_isprintPOSIX(UChar32 c);\r
 \r
-/** Turn a bit index into a bit flag. @internal */\r
-#define FLAG(n) ((uint32_t)1<<(n))\r
-\r
-/** Flags for general categories in the order of UCharCategory. @internal */\r
-#define _Cn     FLAG(U_GENERAL_OTHER_TYPES)\r
-#define _Lu     FLAG(U_UPPERCASE_LETTER)\r
-#define _Ll     FLAG(U_LOWERCASE_LETTER)\r
-#define _Lt     FLAG(U_TITLECASE_LETTER)\r
-#define _Lm     FLAG(U_MODIFIER_LETTER)\r
-/* #define _Lo     FLAG(U_OTHER_LETTER) -- conflicts with MS Visual Studio 9.0 xiosbase */\r
-#define _Mn     FLAG(U_NON_SPACING_MARK)\r
-#define _Me     FLAG(U_ENCLOSING_MARK)\r
-#define _Mc     FLAG(U_COMBINING_SPACING_MARK)\r
-#define _Nd     FLAG(U_DECIMAL_DIGIT_NUMBER)\r
-#define _Nl     FLAG(U_LETTER_NUMBER)\r
-#define _No     FLAG(U_OTHER_NUMBER)\r
-#define _Zs     FLAG(U_SPACE_SEPARATOR)\r
-#define _Zl     FLAG(U_LINE_SEPARATOR)\r
-#define _Zp     FLAG(U_PARAGRAPH_SEPARATOR)\r
-#define _Cc     FLAG(U_CONTROL_CHAR)\r
-#define _Cf     FLAG(U_FORMAT_CHAR)\r
-#define _Co     FLAG(U_PRIVATE_USE_CHAR)\r
-#define _Cs     FLAG(U_SURROGATE)\r
-#define _Pd     FLAG(U_DASH_PUNCTUATION)\r
-#define _Ps     FLAG(U_START_PUNCTUATION)\r
-/* #define _Pe     FLAG(U_END_PUNCTUATION) -- conflicts with MS Visual Studio 9.0 xlocnum */\r
-/* #define _Pc     FLAG(U_CONNECTOR_PUNCTUATION) -- conflicts with MS Visual Studio 9.0 streambuf */\r
-#define _Po     FLAG(U_OTHER_PUNCTUATION)\r
-#define _Sm     FLAG(U_MATH_SYMBOL)\r
-#define _Sc     FLAG(U_CURRENCY_SYMBOL)\r
-#define _Sk     FLAG(U_MODIFIER_SYMBOL)\r
-#define _So     FLAG(U_OTHER_SYMBOL)\r
-#define _Pi     FLAG(U_INITIAL_PUNCTUATION)\r
-/* #define _Pf     FLAG(U_FINAL_PUNCTUATION) -- conflicts with MS Visual Studio 9.0 streambuf */\r
-\r
 /** Some code points. @internal */\r
 enum {\r
     TAB     =0x0009,\r
     LF      =0x000a,\r
     FF      =0x000c,\r
     CR      =0x000d,\r
-    U_A     =0x0041,\r
-    U_F     =0x0046,\r
-    U_Z     =0x005a,\r
-    U_a     =0x0061,\r
-    U_f     =0x0066,\r
-    U_z     =0x007a,\r
-    DEL     =0x007f,\r
-    NL      =0x0085,\r
     NBSP    =0x00a0,\r
     CGJ     =0x034f,\r
     FIGURESP=0x2007,\r
@@ -367,15 +324,6 @@ enum {
     ZWJ     =0x200d,\r
     RLM     =0x200f,\r
     NNBSP   =0x202f,\r
-    WJ      =0x2060,\r
-    INHSWAP =0x206a,\r
-    NOMDIG  =0x206f,\r
-    U_FW_A  =0xff21,\r
-    U_FW_F  =0xff26,\r
-    U_FW_Z  =0xff3a,\r
-    U_FW_a  =0xff41,\r
-    U_FW_f  =0xff46,\r
-    U_FW_z  =0xff5a,\r
     ZWNBSP  =0xfeff\r
 };\r
 \r
index f139b12..7ccdcfa 100644 (file)
@@ -92,6 +92,15 @@ static UBool chopLocale(char *name) {
 }\r
 \r
 /**\r
+ *  Called to check whether a name without '_' needs to be checked for a parent.\r
+ *  Some code had assumed that locale IDs with '_' could not have a non-root parent.\r
+ *  We may want a better way of doing this.\r
+ */\r
+static UBool mayHaveParent(char *name) {\r
+    return (name[0] != 0 && uprv_strstr("nb nn",name) != nullptr);\r
+}\r
+\r
+/**\r
  *  Internal function\r
  */\r
 static void entryIncrease(UResourceDataEntry *entry) {\r
@@ -529,8 +538,8 @@ loadParentsExceptRoot(UResourceDataEntry *&t1,
                       char name[], int32_t nameCapacity,\r
                       UBool usingUSRData, char usrDataPath[], UErrorCode *status) {\r
     if (U_FAILURE(*status)) { return FALSE; }\r
-    UBool hasChopped = TRUE;\r
-    while (hasChopped && t1->fParent == NULL && !t1->fData.noFallback &&\r
+    UBool checkParent = TRUE;\r
+    while (checkParent && t1->fParent == NULL && !t1->fData.noFallback &&\r
             res_getResource(&t1->fData,"%%ParentIsRoot") == RES_BOGUS) {\r
         Resource parentRes = res_getResource(&t1->fData, "%%Parent");\r
         if (parentRes != RES_BOGUS) {  // An explicit parent was found.\r
@@ -573,7 +582,7 @@ loadParentsExceptRoot(UResourceDataEntry *&t1,
             }\r
         }\r
         t1 = t2;\r
-        hasChopped = chopLocale(name);\r
+        checkParent = chopLocale(name) || mayHaveParent(name);\r
     }\r
     return TRUE;\r
 }\r
@@ -692,7 +701,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
                 }\r
             }\r
         }\r
-        if (hasChopped && !isRoot) {\r
+        if ((hasChopped || mayHaveParent(name)) && !isRoot) {\r
             if (!loadParentsExceptRoot(t1, name, UPRV_LENGTHOF(name), usingUSRData, usrDataPath, status)) {\r
                 goto finish;\r
             }\r
@@ -716,7 +725,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
             hasRealData = TRUE;\r
             isDefault = TRUE;\r
             // TODO: Why not if (usingUSRData) { ... } like in the non-default-locale code path?\r
-            if (hasChopped && !isRoot) {\r
+            if ((hasChopped || mayHaveParent(name)) && !isRoot) {\r
                 if (!loadParentsExceptRoot(t1, name, UPRV_LENGTHOF(name), usingUSRData, usrDataPath, status)) {\r
                     goto finish;\r
                 }\r
@@ -1908,6 +1917,8 @@ ures_getByKeyWithFallback(const UResourceBundle *resB,
                             } else {\r
                               break;\r
                             }\r
+                        } else if (res == RES_BOGUS) {\r
+                            break;\r
                         }\r
                     } while(*myPath); /* Continue until the whole path is consumed */\r
                 }\r
@@ -3019,7 +3030,7 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status)
 U_CAPI UBool U_EXPORT2\r
 ures_equal(const UResourceBundle* res1, const UResourceBundle* res2){\r
     if(res1==NULL || res2==NULL){\r
-        return res1==res2; /* pointer comparision */\r
+        return res1==res2; /* pointer comparison */\r
     }\r
     if(res1->fKey==NULL||  res2->fKey==NULL){\r
         return (res1->fKey==res2->fKey);\r
index 1eb5bee..f36c6b4 100644 (file)
@@ -960,14 +960,6 @@ res_findResource(const ResourceData *pResData, Resource r, char** path, const ch
     if(URES_IS_TABLE(type)) {\r
       *key = pathP;\r
       t2 = res_getTableItemByKey(pResData, t1, &indexR, key);\r
-      if(t2 == RES_BOGUS) { \r
-        /* if we fail to get the resource by key, maybe we got an index */\r
-        indexR = uprv_strtol(pathP, &closeIndex, 10);\r
-        if(indexR >= 0 && *closeIndex == 0 && (*pathP != '0' || closeIndex - pathP == 1)) {\r
-          /* if we indeed have an index, try to get the item by index */\r
-          t2 = res_getTableItemByIndex(pResData, t1, indexR, key);\r
-        } // else t2 is already RES_BOGUS\r
-      }\r
     } else if(URES_IS_ARRAY(type)) {\r
       indexR = uprv_strtol(pathP, &closeIndex, 10);\r
       if(indexR >= 0 && *closeIndex == 0) {\r
index cd7b630..e96967c 100644 (file)
@@ -270,11 +270,13 @@ ures_getByKeyWithFallback(const UResourceBundle *resB,
  * function can perform fallback on the sub-resources of the table.\r
  * @param resB              a resource\r
  * @param inKey             a key associated with the requested resource\r
+ * @param len               if not NULL, used to return the length of the string\r
  * @param status: fills in the outgoing error code\r
  *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found\r
  *                could be a non-failing error \r
  *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>\r
- * @return                  a pointer to a UResourceBundle struct. If fill in param was NULL, caller must delete it\r
+ * @return returns a pointer to a zero-terminated UChar array which lives in a\r
+ *         memory mapped/DLL file.\r
  */\r
 U_CAPI const UChar* U_EXPORT2 \r
 ures_getStringByKeyWithFallback(const UResourceBundle *resB, \r
index f4350a2..e7d17a5 100644 (file)
@@ -117,6 +117,12 @@ uset_removeString(USet* set, const UChar* str, int32_t strLen) {
 }\r
 \r
 U_CAPI void U_EXPORT2\r
+uset_removeAllCodePoints(USet *set, const UChar *str, int32_t length) {\r
+    UnicodeString s(length==-1, str, length);\r
+    ((UnicodeSet*) set)->UnicodeSet::removeAll(s);\r
+}\r
+\r
+U_CAPI void U_EXPORT2\r
 uset_removeAll(USet* set, const USet* remove) {\r
     ((UnicodeSet*) set)->UnicodeSet::removeAll(*(const UnicodeSet*)remove);\r
 }\r
@@ -127,6 +133,18 @@ uset_retain(USet* set, UChar32 start, UChar32 end) {
 }\r
 \r
 U_CAPI void U_EXPORT2\r
+uset_retainString(USet *set, const UChar *str, int32_t length) {\r
+    UnicodeString s(length==-1, str, length);\r
+    ((UnicodeSet*) set)->UnicodeSet::retain(s);\r
+}\r
+\r
+U_CAPI void U_EXPORT2\r
+uset_retainAllCodePoints(USet *set, const UChar *str, int32_t length) {\r
+    UnicodeString s(length==-1, str, length);\r
+    ((UnicodeSet*) set)->UnicodeSet::retainAll(s);\r
+}\r
+\r
+U_CAPI void U_EXPORT2\r
 uset_retainAll(USet* set, const USet* retain) {\r
     ((UnicodeSet*) set)->UnicodeSet::retainAll(*(const UnicodeSet*)retain);\r
 }\r
@@ -142,6 +160,23 @@ uset_complement(USet* set) {
 }\r
 \r
 U_CAPI void U_EXPORT2\r
+uset_complementRange(USet *set, UChar32 start, UChar32 end) {\r
+    ((UnicodeSet*) set)->UnicodeSet::complement(start, end);\r
+}\r
+\r
+U_CAPI void U_EXPORT2\r
+uset_complementString(USet *set, const UChar *str, int32_t length) {\r
+    UnicodeString s(length==-1, str, length);\r
+    ((UnicodeSet*) set)->UnicodeSet::complement(s);\r
+}\r
+\r
+U_CAPI void U_EXPORT2\r
+uset_complementAllCodePoints(USet *set, const UChar *str, int32_t length) {\r
+    UnicodeString s(length==-1, str, length);\r
+    ((UnicodeSet*) set)->UnicodeSet::complementAll(s);\r
+}\r
+\r
+U_CAPI void U_EXPORT2\r
 uset_complementAll(USet* set, const USet* complement) {\r
     ((UnicodeSet*) set)->UnicodeSet::complementAll(*(const UnicodeSet*)complement);\r
 }\r
index 99acddb..556657d 100644 (file)
@@ -575,7 +575,7 @@ usprep_map(  const UStringPrepProfile* profile,
             }\r
 \r
         }else if(type==USPREP_DELETE){\r
-             // just consume the codepoint and contine\r
+             // just consume the codepoint and continue\r
             continue;\r
         }\r
         //copy the code point into destination\r
index 3f84e6f..5fc381d 100644 (file)
@@ -364,7 +364,7 @@ _strFromWCS( UChar   *dest,
                 }\r
 \r
                 /* we have found a null  so convert the \r
-                 * chunk from begining of non-null char to null\r
+                 * chunk from beginning of non-null char to null\r
                  */\r
                 retVal = uprv_wcstombs(pCSrc,pSrc,remaining);\r
 \r
@@ -387,7 +387,7 @@ _strFromWCS( UChar   *dest,
                  * null terminate it and convert wchar_ts to chars\r
                  */\r
                 if(nulLen >= _STACK_BUFFER_CAPACITY){\r
-                    /* Should rarely occcur */\r
+                    /* Should rarely occur */\r
                     /* allocate new buffer buffer */\r
                     pWStack =(wchar_t*) uprv_malloc(sizeof(wchar_t) * (nulLen + 1));\r
                     if(pWStack==NULL){\r
index ca4dd27..73e735d 100644 (file)
@@ -382,7 +382,7 @@ utext_previous32From(UText *ut, int64_t index) {
     //\r
     UChar32     cPrev;    // The character preceding cCurr, which is what we will return.\r
 \r
-    // Address the chunk containg the position preceding the incoming index\r
+    // Address the chunk containing the position preceding the incoming index\r
     // A tricky edge case:\r
     //   We try to test the requested native index against the chunkNativeStart to determine\r
     //    whether the character preceding the one at the index is in the current chunk.\r
@@ -894,7 +894,7 @@ struct UTF8Buf {
                                                      //    one for a supplementary starting in the last normal position,\r
                                                      //    and one for an entry for the buffer limit position.\r
     uint8_t   mapToUChars[UTF8_TEXT_CHUNK_SIZE*3+6]; // Map native offset from bufNativeStart to\r
-                                                     //   correspoding offset in filled part of buf.\r
+                                                     //   corresponding offset in filled part of buf.\r
     int32_t   align;\r
 };\r
 \r
@@ -1545,7 +1545,7 @@ utf8TextMapOffsetToNative(const UText *ut) {
 }\r
 \r
 //\r
-// Map a native index to the corrsponding chunk offset\r
+// Map a native index to the corresponding chunk offset\r
 //\r
 static int32_t U_CALLCONV\r
 utf8TextMapIndexToUTF16(const UText *ut, int64_t index64) {\r
index b08150b..5fda48b 100644 (file)
 #ifndef ICU_UTIL_H\r
 #define ICU_UTIL_H\r
 \r
-#include "unicode/utypes.h"\r
-#include "unicode/uobject.h"\r
+#include "charstr.h"\r
 #include "unicode/unistr.h"\r
-\r
+#include "unicode/uobject.h"\r
+#include "unicode/utypes.h"\r
 //--------------------------------------------------------------------\r
 // class ICU_Utility\r
 // i18n utility functions, scoped into the class ICU_Utility.\r
index 18737b7..6980224 100644 (file)
@@ -193,7 +193,7 @@ UPRV_BLOCK_MACRO_BEGIN { \
  * Trace statement for each exit point of a function that has a UTRACE_ENTRY()\r
  * statement, and that returns a value.\r
  *\r
- * @param val       The function's return value, int32_t or comatible type.\r
+ * @param val       The function's return value, int32_t or compatible type.\r
  *\r
  * @internal \r
  */\r
index 7c3cbfc..fb20b37 100644 (file)
@@ -312,7 +312,7 @@ int32_t UVector::indexOf(UElement key, int32_t startIndex, int8_t hint) const {
     } else {\r
         for (i=startIndex; i<count; ++i) {\r
             /* Pointers are not always the same size as ints so to perform\r
-             * a valid comparision we need to know whether we are being\r
+             * a valid comparison we need to know whether we are being\r
              * provided an int or a pointer. */\r
             if (hint & HINT_KEY_POINTER) {\r
                 if (key.pointer == elements[i].pointer) {\r
@@ -518,7 +518,7 @@ sortiComparator(const void * /*context */, const void *left, const void *right)
 }\r
 \r
 /**\r
-  * Sort the vector, assuming it constains ints.\r
+  * Sort the vector, assuming it contains ints.\r
   *     (A more general sort would take a comparison function, but it's\r
   *     not clear whether UVector's UElementComparator or\r
   *     UComparator from uprv_sortAray would be more appropriate.)\r
index 72fad48..f291a66 100644 (file)
@@ -124,10 +124,26 @@ uprv_detectWindowsTimeZone()
         // No way to support when DST is turned off and the offset in minutes is not a multiple of 60.\r
         if (utcOffsetMins % 60 == 0) {\r
             char gmtOffsetTz[11] = {}; // "Etc/GMT+dd" is 11-char long with a terminal null.\r
-            // Note '-' before 'utcOffsetMin'. The timezone ID's sign convention\r
-            // is that a timezone ahead of UTC is Etc/GMT-<offset> and a timezone\r
-            // behind UTC is Etc/GMT+<offset>.\r
-            int ret = snprintf(gmtOffsetTz, UPRV_LENGTHOF(gmtOffsetTz), "Etc/GMT%+ld", -utcOffsetMins / 60);\r
+            // Important note on the sign convention for zones:\r
+            //\r
+            // From https://en.wikipedia.org/wiki/Tz_database#Area\r
+            //   "In order to conform with the POSIX style, those zone names beginning with "Etc/GMT" have their sign reversed\r
+            //   from the standard ISO 8601 convention. In the "Etc" area, zones west of GMT have a positive sign and those\r
+            //   east have a negative sign in their name (e.g "Etc/GMT-14" is 14 hours ahead of GMT)."\r
+            //\r
+            // Regarding the POSIX style, from https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html\r
+            //   "The offset specifies the time value you must add to the local time to get a Coordinated Universal Time value."\r
+            //\r
+            // However, the Bias value in DYNAMIC_TIME_ZONE_INFORMATION *already* follows the POSIX convention.\r
+            // \r
+            // From https://docs.microsoft.com/en-us/windows/win32/api/timezoneapi/ns-timezoneapi-dynamic_time_zone_information\r
+            //   "The bias is the difference, in minutes, between Coordinated Universal Time (UTC) and\r
+            //   local time. All translations between UTC and local time are based on the following formula:\r
+            //      UTC = local time + bias"\r
+            //\r
+            // For example, a time zone that is 3 hours ahead of UTC (UTC+03:00) would have a Bias value of -180, and the\r
+            // corresponding time zone ID would be "Etc/GMT-3". (So there is no need to negate utcOffsetMins below.)\r
+            int ret = snprintf(gmtOffsetTz, UPRV_LENGTHOF(gmtOffsetTz), "Etc/GMT%+ld", utcOffsetMins / 60);\r
             if (ret > 0 && ret < UPRV_LENGTHOF(gmtOffsetTz)) {\r
                 return uprv_strdup(gmtOffsetTz);\r
             }\r
index d3736de..bd2a4e7 100644 (file)
@@ -57,7 +57,7 @@ LINK.c=       $(CXX) $(CXXFLAGS) $(LDFLAGS)
 #LINK.cc=      $(CXX) $(CXXFLAGS) $(LDFLAGS)\r
 \r
 ## Shared library options\r
-LD_SOOPTIONS= -Wl,-Bsymbolic\r
+LD_SOOPTIONS=\r
 \r
 ## Commands to make a shared library\r
 SHLIB.c=       $(CC) $(CFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) -Wl,--enable-auto-import -Wl,--out-implib=$(dir $@)lib$(notdir $(@:$(SO_TARGET_VERSION_MAJOR).$(SO)=))$(IMPORT_LIB_EXT)#M#\r
@@ -101,11 +101,14 @@ LIBICU = $(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)
 #SH#ICULIBS_COMMON_LIB_NAME="${LIBICU}${COMMON_STUBNAME}${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}.${SO}"\r
 #SH#ICULIBS_COMMON_LIB_NAME_A="${LIBICU}${COMMON_STUBNAME}${ICULIBSUFFIX}.${A}"\r
 \r
-#SH#ICULIBS_DATA="-l$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"\r
-ICULIBS_DT="-l$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"\r
-ICULIBS_I18N="-l$(ICUPREFIX)$(I18N_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"\r
-ICULIBS_IO="-l$(ICUPREFIX)$(IO_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"\r
-ICULIBS_UC="-l$(ICUPREFIX)$(COMMON_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"\r
+#SH#ICULIBS_DATA="-l$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_DT="-l$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_I18N="-l$(ICUPREFIX)$(I18N_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_LX="-l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(LAYOUTEX_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_IO="-l$(ICUPREFIX)$(IO_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_UC="-l$(ICUPREFIX)$(COMMON_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_CTESTFW="-l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(CTESTFW_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_TOOLUTIL="-l$(ICUPREFIX)tu$(ICULIBSUFFIX)"\r
 #SH#\r
 #SH## ICULIBS is the set of libraries your application should link\r
 #SH## with usually. Many applications will want to add ${ICULIBS_I18N} as well. \r
index 1c77a3a..695f4c7 100644 (file)
@@ -57,7 +57,7 @@ LINK.c=       $(CXX) $(CXXFLAGS) $(LDFLAGS)
 #LINK.cc=      $(CXX) $(CXXFLAGS) $(LDFLAGS)\r
 \r
 ## Shared library options\r
-LD_SOOPTIONS= -Wl,-Bsymbolic\r
+LD_SOOPTIONS=\r
 \r
 ## Commands to make a shared library\r
 SHLIB.c=       $(CC) $(CFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) -Wl,--enable-auto-import -Wl,--out-implib=$(dir $@)lib$(notdir $(@:$(SO_TARGET_VERSION_MAJOR).$(SO)=))$(IMPORT_LIB_EXT)#M#\r
@@ -101,11 +101,14 @@ LIBICU = $(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)
 #SH#ICULIBS_COMMON_LIB_NAME="${LIBICU}${COMMON_STUBNAME}${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}.${SO}"\r
 #SH#ICULIBS_COMMON_LIB_NAME_A="${LIBICU}${COMMON_STUBNAME}${ICULIBSUFFIX}.${A}"\r
 \r
-#SH#ICULIBS_DATA="-l$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"\r
-ICULIBS_DT="-l$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"\r
-ICULIBS_I18N="-l$(ICUPREFIX)$(I18N_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"\r
-ICULIBS_IO="-l$(ICUPREFIX)$(IO_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"\r
-ICULIBS_UC="-l$(ICUPREFIX)$(COMMON_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"\r
+#SH#ICULIBS_DATA="-l$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_DT="-l$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_I18N="-l$(ICUPREFIX)$(I18N_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_LX="-l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(LAYOUTEX_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_IO="-l$(ICUPREFIX)$(IO_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_UC="-l$(ICUPREFIX)$(COMMON_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_CTESTFW="-l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(CTESTFW_STUBNAME)$(ICULIBSUFFIX)"\r
+ICULIBS_TOOLUTIL="-l$(ICUPREFIX)tu$(ICULIBSUFFIX)"\r
 #SH#\r
 #SH## ICULIBS is the set of libraries your application should link\r
 #SH## with usually. Many applications will want to add ${ICULIBS_I18N} as well. \r
index d50cf8e..1980675 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh\r
 # Guess values for system-dependent variables and create Makefiles.\r
-# Generated by GNU Autoconf 2.69 for ICU 68.2.\r
+# Generated by GNU Autoconf 2.69 for ICU 69.1.\r
 #\r
 # Report bugs to <http://icu-project.org/bugs>.\r
 #\r
@@ -582,8 +582,8 @@ MAKEFLAGS=
 # Identity of this package.\r
 PACKAGE_NAME='ICU'\r
 PACKAGE_TARNAME='International Components for Unicode'\r
-PACKAGE_VERSION='68.2'\r
-PACKAGE_STRING='ICU 68.2'\r
+PACKAGE_VERSION='69.1'\r
+PACKAGE_STRING='ICU 69.1'\r
 PACKAGE_BUGREPORT='http://icu-project.org/bugs'\r
 PACKAGE_URL='http://icu-project.org'\r
 \r
@@ -1364,7 +1364,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.\r
   # This message is too long to be a string in the A/UX 3.1 sh.\r
   cat <<_ACEOF\r
-\`configure' configures ICU 68.2 to adapt to many kinds of systems.\r
+\`configure' configures ICU 69.1 to adapt to many kinds of systems.\r
 \r
 Usage: $0 [OPTION]... [VAR=VALUE]...\r
 \r
@@ -1430,7 +1430,7 @@ fi
 \r
 if test -n "$ac_init_help"; then\r
   case $ac_init_help in\r
-     short | recursive ) echo "Configuration of ICU 68.2:";;\r
+     short | recursive ) echo "Configuration of ICU 69.1:";;\r
    esac\r
   cat <<\_ACEOF\r
 \r
@@ -1455,7 +1455,7 @@ Optional Features:
   --enable-weak-threads   weakly reference the threading library default=no\r
   --enable-extras         build ICU extras default=yes\r
   --enable-icuio          build ICU's icuio library default=yes\r
-  --enable-layoutex         build ICU's Paragraph Layout library default=yes.\r
+  --enable-layoutex         build ICU's Paragraph Layout library default=no.\r
             icu-le-hb must be installed via pkg-config. See http://harfbuzz.org\r
 \r
   --enable-tools         build ICU's tools default=yes\r
@@ -1568,7 +1568,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status\r
 if $ac_init_version; then\r
   cat <<\_ACEOF\r
-ICU configure 68.2\r
+ICU configure 69.1\r
 generated by GNU Autoconf 2.69\r
 \r
 Copyright (C) 2012 Free Software Foundation, Inc.\r
@@ -2314,7 +2314,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while\r
 running configure, to aid debugging if configure makes a mistake.\r
 \r
-It was created by ICU $as_me 68.2, which was\r
+It was created by ICU $as_me 69.1, which was\r
 generated by GNU Autoconf 2.69.  Invocation command line was\r
 \r
   $ $0 $@\r
@@ -7702,7 +7702,7 @@ if test "${enable_layoutex+set}" = set; then :
                *) as_fn_error $? "bad value ${enableval} for --enable-layoutex" "$LINENO" 5 ;;\r
                esac\r
 else\r
-  layoutex=$have_icu_le_hb\r
+  layoutex=false\r
 fi\r
 \r
 \r
@@ -8544,7 +8544,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their\r
 # values after options handling.\r
 ac_log="\r
-This file was extended by ICU $as_me 68.2, which was\r
+This file was extended by ICU $as_me 69.1, which was\r
 generated by GNU Autoconf 2.69.  Invocation command line was\r
 \r
   CONFIG_FILES    = $CONFIG_FILES\r
@@ -8598,7 +8598,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1\r
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"\r
 ac_cs_version="\\\r
-ICU config.status 68.2\r
+ICU config.status 69.1\r
 configured by $0, generated by GNU Autoconf 2.69,\r
   with options \\"\$ac_cs_config\\"\r
 \r
index 6814ce1..16a5f1c 100644 (file)
@@ -1101,14 +1101,14 @@ ICU_CONDITIONAL(ICUIO, test "$icuio" = true)
 \r
 # Enable/disable layoutex\r
 AC_ARG_ENABLE(layoutex,\r
-       [  --enable-layoutex         build ICU's Paragraph Layout library [default=yes].\r
+       [  --enable-layoutex         build ICU's Paragraph Layout library [default=no].\r
             icu-le-hb must be installed via pkg-config. See http://harfbuzz.org],\r
        [case "${enableval}" in\r
                yes) layoutex=$have_icu_le_hb ;;\r
                no)  layoutex=false ;;\r
                *) AC_MSG_ERROR(bad value ${enableval} for --enable-layoutex) ;;\r
                esac],\r
-       layoutex=$have_icu_le_hb)\r
+       layoutex=false)\r
 ICU_CONDITIONAL(LAYOUTEX, test "$layoutex" = true)\r
 \r
 # Enable/disable layout\r
@@ -1399,6 +1399,7 @@ AC_CONFIG_FILES([icudefs.mk \
                test/perf/ubrkperf/Makefile \\r
                test/perf/charperf/Makefile \\r
                test/perf/convperf/Makefile \\r
+               test/perf/localecanperf/Makefile \\r
                test/perf/normperf/Makefile \\r
                test/perf/DateFmtPerf/Makefile \\r
                test/perf/howExpensiveIs/Makefile \\r
index 03c8c5c..a707bb0 100644 (file)
@@ -3,5 +3,5 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 \r
 {\r
-    "cldrVersion": "38.1"\r
+    "cldrVersion": "39"\r
 }\r
index a8fc40a..f173f6e 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 root{\r
-    Version{"38.1"}\r
+    Version{"39"}\r
     boundaries{\r
         grapheme:process(dependency){"char.brk"}\r
         line:process(dependency){"line.brk"}\r
index 4e9cdc0..1f2e001 100644 (file)
         <fail unless="is.cldr.dir.set" message="Please set the CLDR_DIR environment variable to the top level CLDR source dir (containing 'common')."/>\r
 \r
         <available property="cldrtools.dir" value="${env.CLDR_DIR}/cldr-tools" file="${env.CLDR_DIR}/cldr-tools" type="dir"/>\r
-        <available property="cldrtools.dir" value="${env.CLDR_DIR}/tools/java" file="${env.CLDR_DIR}/tools/java" type="dir"/>\r
+        <available property="cldrtools.dir" value="${env.CLDR_DIR}/tools" file="${env.CLDR_DIR}/tools" type="dir"/>\r
         <fail unless="cldrtools.dir" message="Please make sure that the CLDR tools directory is checked out into CLDR_DIR"/>\r
 \r
-        <available property="env.CLDR_CLASSES" value="${cldrtools.dir}/classes" file="${cldrtools.dir}/classes" type="dir"/>\r
-        <available property="cldrtools.jar" value="${cldrtools.dir}/cldr.jar" file="${cldrtools.dir}/cldr.jar" type="file"/>\r
+        <available property="env.CLDR_CLASSES" value="${cldrtools.dir}/cldr-code/target/classes" file="${cldrtools.dir}/cldr-code/target/classes" type="dir"/>\r
+        <available property="cldrtools.jar" value="${cldrtools.dir}/cldr-code/target/cldr-code.jar" file="${cldrtools.dir}/cldr-code/target/cldr-code.jar" type="file"/>\r
         <condition property="is.cldr.classes.set">\r
             <or>\r
                 <isset property="env.CLDR_CLASSES" />\r
                 <isset property="cldrtools.jar" />\r
             </or>\r
         </condition>\r
-        <fail unless="is.cldr.classes.set" message="CLDR classes not found in ${cldrtools.dir}. Please either set the CLDR_CLASSES environment variable or build cldr.jar."/>\r
+        <fail unless="is.cldr.classes.set" message="CLDR classes not found in ${cldrtools.dir}/cldr-code/target/classes. Please either set the CLDR_CLASSES environment variable or build cldr-code.jar."/>\r
 \r
         <property name="env.CLDR_TMP_DIR" location="${env.CLDR_DIR}/../cldr-aux" /> <!-- Hack: see CLDRPaths -->\r
         <property name="cldr.prod.dir" location="${env.CLDR_TMP_DIR}/production/" />\r
index ef22755..aa7121d 100644 (file)
@@ -30,6 +30,9 @@
 # plus the xml-apis.jar from the Apache xalan package\r
 # (http://xml.apache.org/xalan-j/downloads.html).\r
 #\r
+# You will also need to have performed the CLDR Maven setup (non-Eclipse version)\r
+# per http://cldr.unicode.org/development/maven \r
+#\r
 # Note: Enough things can (and will) fail in this process that it is best to\r
 #   run the commands separately from an interactive shell. They should all\r
 #   copy and paste without problems.\r
@@ -195,7 +198,7 @@ ant copy-cldr-testdata
 # 4d. Copy from CLDR common/testData/localeIdentifiers/localeCanonicalization.txt\r
 # into icu4c/source/test/testdata/localeCanonicalization.txt\r
 # and icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/localeCanonicalization.txt\r
-# and add the following line to the begginning of these two files\r
+# and add the following line to the beginning of these two files\r
 # # File copied from cldr common/testData/localeIdentifiers/localeCanonicalization.txt\r
 \r
 # 5. Check which data files have modifications, which have been added or removed\r
index 8af9891..94e80dc 100644 (file)
@@ -3,7 +3,7 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 \r
 {\r
-    "cldrVersion": "38.1",\r
+    "cldrVersion": "39",\r
     "aliases": {\r
         "ars": "ar_SA",\r
         "in": "id",\r
@@ -11,8 +11,7 @@
         "iw": "he",\r
         "iw_IL": "he_IL",\r
         "mo": "ro",\r
-        "no": "nb",\r
-        "no_NO": "nb_NO",\r
+        "no_NO": "no",\r
         "pa_IN": "pa_Guru_IN",\r
         "sh": "sr_Latn",\r
         "sh_BA": "sr_Latn_BA",\r
@@ -33,6 +32,8 @@
         "zh_TW": "zh_Hant_TW"\r
     },\r
     "parents": {\r
-        "ff_Adlm": "root"\r
+        "ff_Adlm": "root",\r
+        "nb": "no",\r
+        "nn": "no"\r
     }\r
 }\r
index 762f7f3..9c15f4c 100644 (file)
@@ -5,7 +5,7 @@ af{
     collations{\r
         standard{\r
             Sequence{"&N<<<ʼn"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 13269a3..2a75386 100644 (file)
@@ -5,7 +5,7 @@ am{
     collations{\r
         standard{\r
             Sequence{"[reorder Ethi]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 7244c4b..4b305a4 100644 (file)
@@ -9,7 +9,7 @@ ar{
                 "&ت<<ة<<<ﺔ<<<ﺓ"\r
                 "&ي<<ى<<<ﯨ<<<ﯩ<<<ﻰ<<<ﻯ<<<ﲐ<<<ﱝ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -397,7 +397,7 @@ ar{
                 "‎&ۓ‎=ﮰ‎=ﮱ"\r
                 "‎&ۀ‎=ﮤ‎=ﮥ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 843eea1..53d608d 100644 (file)
@@ -11,7 +11,7 @@ as{
                 "&[before 1]ত<ৎ=ত্\u200D"\r
                 "&হ<ক্ষ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 4f1be9c..4ad4879 100644 (file)
@@ -9,7 +9,7 @@ az{
                 "[import az-u-co-standard]"\r
                 "[reorder others]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -26,7 +26,7 @@ az{
                 "&H<x<<<X"\r
                 "&Z<w<<<W"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index a18cea7..2742e43 100644 (file)
@@ -9,7 +9,7 @@ be{
                 "&Е<ё<<<Ё"\r
                 "&у<ў<<<Ў"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index eb5a653..0f7f3bb 100644 (file)
@@ -5,7 +5,7 @@ bg{
     collations{\r
         standard{\r
             Sequence{"[reorder Cyrl]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index d59de2b..8d59e61 100644 (file)
@@ -9,7 +9,7 @@ bn{
                 "[reorder Beng Deva Guru Gujr Orya Taml Telu Knda Mlym Sinh]"\r
                 "&ঔ<ং<ঃ<ঁ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -629,7 +629,7 @@ bn{
                 "&যৌ<<<য়ৌ"\r
                 "&য্<<<য়্"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 899e45e..37e91d4 100644 (file)
@@ -5,7 +5,7 @@ br{
     collations{\r
         standard{\r
             Sequence{"&C<ch<<<Ch<<<CH<c''h=c\u2019h<<<C''h=C\u2019h<<<C''H=C\u2019H"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 7d4471c..ad97e26 100644 (file)
@@ -5,11 +5,11 @@ bs{
     collations{\r
         search{\r
             Sequence{"[import hr-u-co-search]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{"[import hr]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index e88fec3..a55221e 100644 (file)
@@ -5,7 +5,7 @@ bs_Cyrl{
     collations{\r
         standard{\r
             Sequence{"[import sr]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 61104e0..1d37423 100644 (file)
@@ -8,7 +8,7 @@ ca{
                 "[import und-u-co-search]"\r
                 "&L<ŀ=l·<<<Ŀ=L·"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index b244d45..e91f1d2 100644 (file)
@@ -5,7 +5,7 @@ ceb{
     collations{\r
         standard{\r
             Sequence{"&N<ñ<<<Ñ<ng<<<Ng<<<NG"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 665bf75..5b9acc2 100644 (file)
@@ -5,7 +5,7 @@ chr{
     collations{\r
         standard{\r
             Sequence{"[reorder Cher]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 97a0448..e77afd8 100644 (file)
@@ -11,7 +11,7 @@ cs{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 8d83d16..872cfe6 100644 (file)
@@ -14,7 +14,7 @@ cy{
                 "&R<rh<<<Rh<<<RH"\r
                 "&T<th<<<Th<<<TH"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index bb93600..a50297c 100644 (file)
@@ -9,7 +9,7 @@ da{
                 "[import da-u-co-standard]"\r
                 "[caseFirst off]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -21,7 +21,7 @@ da{
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<å<<<Å<<<aa<<<Aa<<<AA"\r
                 "&oe<<œ<<<Œ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 5e524db..e5c9bff 100644 (file)
@@ -9,14 +9,14 @@ de{
                 "&OE<<ö<<<Ö"\r
                 "&UE<<ü<<<Ü"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         search{\r
             Sequence{\r
                 "[import und-u-co-search]"\r
                 "[import de-u-co-phonebk]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 519fef5..5664efd 100644 (file)
@@ -10,7 +10,7 @@ de_AT{
                 "&u<ü<<<Ü"\r
                 "&ss<ß<<<ẞ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 2c13d73..1634e89 100644 (file)
@@ -14,7 +14,7 @@ dsb{
                 "&S<š<<<Š<ś<<<Ś"\r
                 "&Z<ž<<<Ž<ź<<<Ź"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 5856f89..49359a1 100644 (file)
@@ -17,7 +17,7 @@ ee{
                 "&T<ts<<<Ts<<<TS"\r
                 "&V<ʋ<<<Ʋ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index cd05894..76586a2 100644 (file)
@@ -8,7 +8,7 @@ el{
                 "[normalization on]"\r
                 "[reorder Grek]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 660c9ce..79dee6c 100644 (file)
@@ -8,7 +8,7 @@ en_US_POSIX{
                 "&A<*'\u0020'-'/'<*0-'@'<*ABCDEFGHIJKLMNOPQRSTUVWXYZ<*'['-'`'<*abcdefghijklmnopqrstuvwxyz"\r
                 "<*'{'-'\u007F'"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 9bbe48f..9b93ead 100644 (file)
@@ -12,7 +12,7 @@ eo{
                 "&S<ŝ<<<Ŝ"\r
                 "&U<ŭ<<<Ŭ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index d5b7485..d61b26e 100644 (file)
@@ -8,11 +8,11 @@ es{
                 "[import und-u-co-search]"\r
                 "&N<ñ<<<Ñ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{"&N<ñ<<<Ñ"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -20,7 +20,7 @@ es{
                 "&C<ch<<<Ch<<<CH"\r
                 "&l<ll<<<Ll<<<LL"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index a5a02d6..1a2d2d8 100644 (file)
@@ -8,7 +8,7 @@ et{
                 "&[before 1]T<š<<<Š<z<<<Z<ž<<<Ž"\r
                 "&[before 1]X<õ<<<Õ<ä<<<Ä<ö<<<Ö<ü<<<Ü"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index dae3f54..e57b8a7 100644 (file)
@@ -16,7 +16,7 @@ fa{
                 "&ۏ<ه<<ە<<ہ<<ة<<ۃ<<ۀ<<ھ"\r
                 "&ی<<*ىےيېۑۍێ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index a1f0efb..7776354 100644 (file)
@@ -5,7 +5,7 @@ fa_AF{
     collations{\r
         standard{\r
             Sequence{"[import ps]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index da7e1ba..5429823 100644 (file)
@@ -143,7 +143,7 @@ ff_Adlm{
                 "&𞤵<𞤵𞥅"\r
                 "&𞤵𞥅<<𞤵𞤵"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 8552a04..5ce0338 100644 (file)
@@ -8,7 +8,7 @@ fi{
                 "[import und-u-co-search]"\r
                 "[import fi-u-co-trad]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ fi{
                 "&Z\u0335<<ʒ<<<Ʒ"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<ö<<<Ö<<ø<<<Ø"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -31,7 +31,7 @@ fi{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<õ<<<Õ<<œ<<<Œ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 5bfddb7..51f8d05 100644 (file)
@@ -5,7 +5,7 @@ fil{
     collations{\r
         standard{\r
             Sequence{"&N<ñ<<<Ñ<ng<<<Ng<<<NG"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index d14a2e4..5592e1a 100644 (file)
@@ -8,7 +8,7 @@ fo{
                 "[import und-u-co-search]"\r
                 "[import fo-u-co-standard]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -18,7 +18,7 @@ fo{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<<aa<<<Aa<<<AA"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 6f726fb..ba7815b 100644 (file)
@@ -5,7 +5,7 @@ fr_CA{
     collations{\r
         standard{\r
             Sequence{"[backwards 2]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 707adfa..3347855 100644 (file)
@@ -5,11 +5,11 @@ gl{
     collations{\r
         search{\r
             Sequence{"[import es-u-co-search]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{"[import es]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index af239ae..169257a 100644 (file)
@@ -9,7 +9,7 @@ gu{
                 "[reorder Gujr Deva Beng Guru Orya Taml Telu Knda Mlym Sinh]"\r
                 "&ૐ<ં<<ઁ<ઃ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 4bbc645..f3f7ce5 100644 (file)
@@ -12,7 +12,7 @@ ha{
                 "&T<ts<<<Ts<<<TS"\r
                 "&Y<ƴ<<<ʼy<<<''y<<<Ƴ<<<ʼY<<<''Y"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index ccbbd85..2bd661b 100644 (file)
@@ -8,7 +8,7 @@ haw{
                 "&a<e<<<E<i<<<I<o<<<O<u<<<U"\r
                 "&w<ʻ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 5810e0e..570a547 100644 (file)
@@ -11,7 +11,7 @@ he{
                 "‎&״"\r
                 "<<'\u0022'"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ he{
                 "&[before 2]''<<׳"\r
                 "&[before 2]'\u0022'<<״"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index df2892e..5c05ad6 100644 (file)
@@ -9,7 +9,7 @@ hi{
                 "[reorder Deva Beng Guru Gujr Orya Taml Telu Knda Mlym Sinh]"\r
                 "&ॐ<ं<<ँ<ः"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index c209e75..e6ace84 100644 (file)
@@ -9,7 +9,7 @@ hr{
                 "[import hr-u-co-standard]"\r
                 "[reorder others]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -21,7 +21,7 @@ hr{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 6988ba4..599901d 100644 (file)
@@ -13,7 +13,7 @@ hsb{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž<ź<<<Ź"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 5c1387d..1882b4b 100644 (file)
@@ -44,7 +44,7 @@ hu{
                 "&Zs<<<Zzs/zs"\r
                 "&ZS<<<ZZS/ZS"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 7d985c4..ff6db3d 100644 (file)
@@ -8,7 +8,7 @@ hy{
                 "[reorder Armn]"\r
                 "&ք<և<<<Եւ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index d34532f..4793aa8 100644 (file)
@@ -15,7 +15,7 @@ ig{
                 "&S<sh<<<Sh<<<SH"\r
                 "&U<ụ<<<Ụ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 38d74c8..9eb50d7 100644 (file)
@@ -8,7 +8,7 @@ is{
                 "[import und-u-co-search]"\r
                 "[import is-u-co-standard]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -21,7 +21,7 @@ is{
                 "&[before 1]z<ý<<<Ý"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ö<<<Ö<<ø<<<Ø<å<<<Å"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index db445d5..8520f98 100644 (file)
@@ -412,7 +412,7 @@ ja{
                 "&「=「"\r
                 "&」=」"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -420,14 +420,14 @@ ja{
                 "[import ja-u-co-private-kana]"\r
                 "&[last regular]<*亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         unihan{\r
             Sequence{\r
                 "[import und-u-co-private-unihan]"\r
                 "[import ja-u-co-private-kana]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 8a74d6d..9292565 100644 (file)
@@ -5,7 +5,7 @@ ka{
     collations{\r
         standard{\r
             Sequence{"[reorder Geor]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 18d9e35..377edef 100644 (file)
@@ -10,7 +10,7 @@ kk{
                 "&Ұ<ү<<<Ү"\r
                 "&[before 1]ь<і<<<І"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 1ae257f..860a328 100644 (file)
@@ -8,7 +8,7 @@ kl{
                 "[import und-u-co-search]"\r
                 "[import kl-u-co-standard]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -19,7 +19,7 @@ kl{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 2c7eb63..07a45dd 100644 (file)
@@ -66,7 +66,7 @@ km{
                 "&ឱ<<<ឲ"\r
                 "&ៅ<ុំ<ំ<ាំ<ះ<ិះ<ុះ<េះ<ោះ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index cc3f450..163c3ed 100644 (file)
@@ -9,7 +9,7 @@ kn{
                 "[reorder Knda Deva Beng Guru Gujr Orya Taml Telu Mlym Sinh]"\r
                 "&ಔ<ಂ<ಃ<ೱ<ೲ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -651,7 +651,7 @@ kn{
                 "&ಫೋ<<<ಫ಼ೋ"\r
                 "&ಫೌ<<<ಫ಼ೌ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 0655afd..80acb11 100644 (file)
@@ -283,7 +283,7 @@ ko{
                 "&ᅩᅣᅵ"\r
                 "=ᆧ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         searchjl{\r
             Sequence{\r
@@ -378,7 +378,7 @@ ko{
                 "&\u1109\u1109=\u110A<<<\u3146"\r
                 "&\u110C\u110C=\u110D<<<\u3149"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -862,14 +862,14 @@ ko{
                 "&희<<*僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲咥唏嘻悕戲暿欷燹爔豨餼"\r
                 "&힐<<*詰犵纈襭頡黠"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         unihan{\r
             Sequence{\r
                 "[import und-u-co-private-unihan]"\r
                 "[reorder Hang Hani]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 3b8de58..edfc366 100644 (file)
@@ -11,7 +11,7 @@ kok{
                 "&ह<ळ"\r
                 "<क्ष"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 2191a57..a7caeb8 100644 (file)
@@ -15,7 +15,7 @@ ku{
                 "&î<<í<<<Í"\r
                 "&û<<ú<<<Ú"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index ec970b6..4fd3039 100644 (file)
@@ -8,7 +8,7 @@ ky{
                 "[reorder Cyrl]"\r
                 "&е<ё<<<Ё"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 8222a1a..29d797d 100644 (file)
@@ -11,7 +11,7 @@ lkt{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 3e0f00e..957626f 100644 (file)
@@ -16,14 +16,14 @@ ln{
                 "&S<sh<<<sH<<<Sh<<<SH"\r
                 "&T<ts<<<tS<<<Ts<<<TS"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
                 "&E<ɛ<<<Ɛ"\r
                 "&O<<ɔ<<<Ɔ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index a80ad15..979a58d 100644 (file)
@@ -5,7 +5,7 @@ lo{
     collations{\r
         standard{\r
             Sequence{"[reorder Laoo]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 7d061dc..36f339b 100644 (file)
@@ -16,7 +16,7 @@ lt{
                 "&U<<ų<<<Ų<<ū<<<Ū"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 166057b..b4fc18f 100644 (file)
@@ -15,7 +15,7 @@ lv{
                 "&[before 1]T<š<<<Š"\r
                 "&[before 1]Ʒ<ž<<<Ž"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 11aa03d..55abb2b 100644 (file)
@@ -10,7 +10,7 @@ mk{
                 "&ԃ<ѓ<<<Ѓ"\r
                 "&ћ<ќ<<<Ќ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 74c77a7..b257077 100644 (file)
@@ -17,7 +17,7 @@ ml{
                 "&മ്<<ം"\r
                 "&ന്<<<ൻ്"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 6dc10e8..8c1cd96 100644 (file)
@@ -5,7 +5,7 @@ mn{
     collations{\r
         standard{\r
             Sequence{"[reorder Cyrl Mong]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 88d4c2b..e344350 100644 (file)
@@ -12,7 +12,7 @@ mr{
                 "<क्ष"\r
                 "<ज्ञ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index d037bd6..f734d82 100644 (file)
@@ -12,7 +12,7 @@ mt{
                 "&[before 1]i<ħ<<<Ħ"\r
                 "&[before 1]z<ż<<<Ż"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 443ccb0..08a03d4 100644 (file)
@@ -373,7 +373,7 @@ my{
                 "&ထမင်း=ထ္မင်း"\r
                 "&လက်ဘက်=လ္ဘက်"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index a1513c7..eedd825 100644 (file)
@@ -2,23 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nb{\r
-    collations{\r
-        search{\r
-            Sequence{\r
-                "[import und-u-co-search]"\r
-                "[import nb-u-co-standard]"\r
-            }\r
-            Version{"38.1"}\r
-        }\r
-        standard{\r
-            Sequence{\r
-                "&D<<đ<<<Đ<<ð<<<Ð"\r
-                "&t<<<þ/h"\r
-                "&T<<<Þ/H"\r
-                "&Y<<ü<<<Ü<<ű<<<Ű"\r
-                "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<aa<<<Aa<<<AA"\r
-            }\r
-            Version{"38.1"}\r
-        }\r
-    }\r
+    %%Parent{"no"}\r
 }\r
index 3307fc3..1ebb426 100644 (file)
@@ -1,9 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
-/**\r
- * generated alias target\r
- */\r
 nb_NO{\r
-    ___{""}\r
 }\r
index 442f844..d2c5161 100644 (file)
@@ -5,7 +5,7 @@ ne{
     collations{\r
         standard{\r
             Sequence{"[reorder Deva]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index e13f7de..c9773c6 100644 (file)
@@ -2,14 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nn{\r
-    collations{\r
-        search{\r
-            Sequence{"[import nb-u-co-search]"}\r
-            Version{"38.1"}\r
-        }\r
-        standard{\r
-            Sequence{"[import nb-u-co-standard]"}\r
-            Version{"38.1"}\r
-        }\r
-    }\r
+    %%Parent{"no"}\r
 }\r
index a6eca3c..487a997 100644 (file)
@@ -2,5 +2,23 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no{\r
-    "%%ALIAS"{"nb"}\r
+    collations{\r
+        search{\r
+            Sequence{\r
+                "[import und-u-co-search]"\r
+                "[import no-u-co-standard]"\r
+            }\r
+            Version{"39"}\r
+        }\r
+        standard{\r
+            Sequence{\r
+                "&D<<đ<<<Đ<<ð<<<Ð"\r
+                "&t<<<þ/h"\r
+                "&T<<<Þ/H"\r
+                "&Y<<ü<<<Ü<<ű<<<Ű"\r
+                "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<aa<<<Aa<<<AA"\r
+            }\r
+            Version{"39"}\r
+        }\r
+    }\r
 }\r
index 40a8b61..312565f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no_NO{\r
-    "%%ALIAS"{"nb_NO"}\r
+    "%%ALIAS"{"no"}\r
 }\r
index 1b7e4f7..91ea541 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{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index b54ab6d..a455b4d 100644 (file)
@@ -11,7 +11,7 @@ or{
                 "&ହ<କ୍ଷ"\r
                 "&ଯ<<ୟ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 7d56543..cd78cdb 100644 (file)
@@ -10,7 +10,7 @@ pa{
                 "&ੱ<<ੰ<<ਂ<<ਁ<<਼"\r
                 "&ੜ<੍"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 2d45fde..2deed92 100644 (file)
@@ -14,7 +14,7 @@ pl{
                 "&S<ś<<<Ś"\r
                 "&Z<ź<<<Ź<ż<<<Ż"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 4035add..3e20586 100644 (file)
@@ -24,7 +24,7 @@ ps{
                 "&ی<<*ىےيېۍ<<یٔ<<<ىٔ<<<ئ"\r
                 "&\u00A0<<\u200C<<\u200D"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index b561ce8..f4077de 100644 (file)
@@ -10,7 +10,7 @@ ro{
                 "&S<ş=ș<<<Ş=Ș"\r
                 "&T<ţ=ț<<<Ţ=Ț"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index add0184..cea18a3 100644 (file)
@@ -3,7 +3,7 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 root{\r
     UCARules:process(uca_rules){"../unidata/UCARules.txt"}\r
-    Version{"38.1"}\r
+    Version{"39"}\r
     collations{\r
         default{"standard"}\r
         emoji{\r
@@ -410,7 +410,7 @@ root{
                 "& 👨 << 🧔 <<🧔‍♂ <<🧔🏻‍♂ <<🧔🏼‍♂ <<🧔🏽‍♂ <<🧔🏾‍♂ <<🧔🏿‍♂ <<👱‍♂ <<👱🏻‍♂ <<👱🏼‍♂ <<👱🏽‍♂ <<👱🏾‍♂ <<👱🏿‍♂"\r
                 "& 👩 << 🧔‍♀ << 🧔🏻‍♀ << 🧔🏼‍♀ << 🧔🏽‍♀ << 🧔🏾‍♀ << 🧔🏿‍♀ << 👱‍♀ << 👱🏻‍♀ << 👱🏼‍♀ << 👱🏽‍♀ << 👱🏾‍♀ << 👱🏿‍♀"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         eor{\r
             Sequence{\r
@@ -950,7 +950,7 @@ root{
                 "&ք"\r
                 "<և"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         private-unihan{\r
             Sequence{\r
@@ -1193,7 +1193,7 @@ root{
                 "&龟=\uFDD0龟"\r
                 "&龠=\uFDD0龠"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         search{\r
             Sequence{\r
@@ -1312,11 +1312,11 @@ root{
                 "&ᅳᅵ"\r
                 "=ᅴ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{""}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
     depends:process(dependency){"ucadata.icu"}\r
index 5f3d48d..98319df 100644 (file)
@@ -5,7 +5,7 @@ ru{
     collations{\r
         standard{\r
             Sequence{"[reorder Cyrl]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 1041cab..1fefba8 100644 (file)
@@ -8,7 +8,7 @@ se{
                 "[import und-u-co-search]"\r
                 "[import se-u-co-standard]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -53,7 +53,7 @@ se{
                 "<<<Ô<<ǫ"\r
                 "<<<Ǫ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 166d04a..dfafa4e 100644 (file)
@@ -10,7 +10,7 @@ si{
                 "&ඖ<ං<ඃ"\r
                 "&ජ්ඤ<<ඥ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -19,7 +19,7 @@ si{
                 "&ඖ<ං<ඃ"\r
                 "&ඥ<ඤ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index e9ef6ab..386ce77 100644 (file)
@@ -21,7 +21,7 @@ sk{
                 "&Y<ý<<<Ý"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -33,7 +33,7 @@ sk{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 147d15b..5e41736 100644 (file)
@@ -10,7 +10,7 @@ sl{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 1193df6..88adf03 100644 (file)
@@ -8,7 +8,7 @@ smn{
                 "[import und-u-co-search]"\r
                 "[import smn-u-co-standard]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -19,7 +19,7 @@ smn{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž<æ<<<Æ<ø<<<Ø<å<<<Å<ã<<<Ã<ä<<<Ä<á<<<Á<ö<<<Ö"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index fdf7de2..9b6d169 100644 (file)
@@ -17,7 +17,7 @@ sq{
                 "&[before 1]Y<xh<<<Xh<<<XH"\r
                 "&[before 1]Ʒ<zh<<<Zh<<<ZH"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 3f56a99..d448ccd 100644 (file)
@@ -8,7 +8,7 @@ sr{
                 "[reorder Cyrl]"\r
                 "[suppressContractions [Ии]]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 6e2d0d4..dc2adc2 100644 (file)
@@ -5,11 +5,11 @@ sr_Latn{
     collations{\r
         search{\r
             Sequence{"[import hr-u-co-search]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{"[import hr]"}\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 993d808..bc1d3b6 100644 (file)
@@ -12,14 +12,14 @@ sv{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<<ę<<<Ę<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<œ<<<Œ<<ô<<<Ô"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         search{\r
             Sequence{\r
                 "[import und-u-co-search]"\r
                 "[import sv-u-co-standard]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -30,7 +30,7 @@ sv{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<<ę<<<Ę<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<œ<<<Œ<<ô<<<Ô"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index bd46eab..70a5f68 100644 (file)
@@ -34,7 +34,7 @@ ta{
                 "&[before 1]ஹ<ஹ்"\r
                 "&[before 1]க்ஷ<க்ஷ்"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 5a4502d..fcfec54 100644 (file)
@@ -9,7 +9,7 @@ te{
                 "[reorder Telu Deva Beng Guru Gujr Orya Taml Knda Mlym Sinh]"\r
                 "&ఔ<ఁ<ం<ః"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index e2fdda6..0426b5b 100644 (file)
@@ -17,7 +17,7 @@ th{
                 "&ๅํ<<<ํๅ"\r
                 "&ไ<ฺ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 1dc4120..2c90a1b 100644 (file)
@@ -14,7 +14,7 @@ tk{
                 "&U<ü<<<Ü"\r
                 "&Y<ý<<<Ý"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 5fc43b3..a386245 100644 (file)
@@ -13,7 +13,7 @@ to{
                 "&o<<ó<<<Ó<<ō<<<Ō"\r
                 "&u<<ú<<<Ú<<ū<<<Ū"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 288a6c7..3c60931 100644 (file)
@@ -8,7 +8,7 @@ tr{
                 "[import und-u-co-search]"\r
                 "[import tr-u-co-standard]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ tr{
                 "&S<ş<<<Ş"\r
                 "&U<ü<<<Ü"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index cc02cac..a227933 100644 (file)
@@ -10,7 +10,7 @@ ug{
                 "&ك<گ<ڭ<ل"\r
                 "&ھ<و<ۇ<ۆ<ۈ<ۋ<ې<ى<ي"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index ea5d0aa..583616b 100644 (file)
@@ -9,7 +9,7 @@ uk{
                 "&Г<ґ<<<Ґ"\r
                 "&ꙇ<ї<<<\uA676<<<Ї"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index c629d09..a984a6e 100644 (file)
@@ -12,7 +12,7 @@ ur{
                 "<<\u0651<<\u0658<<\u0653"\r
                 "&[last tertiary ignorable]<<<\u0610<<<\u0611<<<\u0613<<<\u0612<<<\u0614"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 449381f..4473288 100644 (file)
@@ -10,7 +10,7 @@ uz{
                 "<sh<<<Sh<<<SH"\r
                 "<ch<<<Ch<<<CH"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index a2ce77e..293955e 100644 (file)
@@ -13,7 +13,7 @@ vi{
                 "&o<ô<<<Ô<ơ<<<Ơ"\r
                 "&u<ư<<<Ư"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -32,7 +32,7 @@ vi{
                 "&T<th<<<Th<<<TH<tr<<<Tr<<<TR"\r
                 "&u<ư<<<Ư"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 9aa1192..4f5a7db 100644 (file)
@@ -11,7 +11,7 @@ wo{
                 "&N<ñ<<<Ñ<ŋ<<<Ŋ"\r
                 "&O<ó<<<Ó"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 21789ba..0479f33 100644 (file)
@@ -11,7 +11,7 @@ yi{
                 "‎&״"\r
                 "<<'\u0022'"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -28,7 +28,7 @@ yi{
                 "&ש<שׂ"\r
                 "&[before 1]ת<תּ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 07072f4..16704f9 100644 (file)
@@ -11,7 +11,7 @@ yo{
                 "&O<ọ<<<Ọ"\r
                 "&S<ṣ<<<Ṣ"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index d1ae822..093ef23 100644 (file)
@@ -9,7 +9,7 @@ zh{
                 "[reorder Latn Hani Bopo]"\r
                 "&[last regular]<*兙兛兞兝兡兣嗧瓩糎一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲乂乜凵匚厂万丌乇亍囗屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         default{"pinyin"}\r
         gb2312han{\r
@@ -18,7 +18,7 @@ zh{
                 "[reorder Latn Hani]"\r
                 "&[last regular]<*啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         pinyin{\r
             Sequence{\r
@@ -1887,7 +1887,7 @@ zh{
                 "&弞<沈阳/阳"\r
                 "&銺<藏文/文"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         private-pinyin{\r
             Sequence{\r
@@ -1901,7 +1901,7 @@ zh{
                 "&[before 2]u<<ū<<<Ū<<ú<<<Ú<<ǔ<<<Ǔ<<ù<<<Ù"\r
                 "&U<<ǖ<<<Ǖ<<ǘ<<<Ǘ<<ǚ<<<Ǚ<<ǜ<<<Ǜ<<ü<<<Ü"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         stroke{\r
             Sequence{\r
@@ -2604,7 +2604,7 @@ zh{
                 "&龟<<<⻳"\r
                 "&龠<<<⿕"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         unihan{\r
             Sequence{\r
@@ -2612,7 +2612,7 @@ zh{
                 "[import zh-u-co-private-pinyin]"\r
                 "[reorder Hani Bopo]"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
         zhuyin{\r
             Sequence{\r
@@ -4638,7 +4638,7 @@ zh{
                 "&龟<<<⻳"\r
                 "&龠<<<⿕"\r
             }\r
-            Version{"38.1"}\r
+            Version{"39"}\r
         }\r
     }\r
 }\r
index 05851c8..edb72ea 100644 (file)
@@ -3,7 +3,7 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 \r
 {\r
-    "cldrVersion": "38.1",\r
+    "cldrVersion": "39",\r
     "aliases": {\r
         "ars": "ar_SA",\r
         "az_AZ": "az_Latn_AZ",\r
@@ -21,8 +21,7 @@
         "ks_IN": "ks_Arab_IN",\r
         "mni_IN": "mni_Beng_IN",\r
         "mo": "ro",\r
-        "no": "nb",\r
-        "no_NO": "nb_NO",\r
+        "no_NO": "no",\r
         "no_NO_NY": "nn_NO",\r
         "pa_IN": "pa_Guru_IN",\r
         "pa_PK": "pa_Arab_PK",\r
         "es_UY": "es_419",\r
         "es_VE": "es_419",\r
         "ff_Adlm": "root",\r
+        "nb": "no",\r
+        "nn": "no",\r
         "pa_Arab": "root",\r
         "pt_AO": "pt_PT",\r
         "pt_CH": "pt_PT",\r
index 0a6863c..2478057 100644 (file)
@@ -656,7 +656,7 @@ af{
             "Oos-Karibiese dollar",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Wes-Afrikaanse CFA-frank",\r
         }\r
         XPF{\r
index 0d4604b..43a2fca 100644 (file)
@@ -212,7 +212,7 @@ agq{
             "CFA Fàlâŋ BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA Fàlâŋ BCEAO",\r
         }\r
         ZAR{\r
index 2f4e64f..75e1739 100644 (file)
@@ -640,7 +640,7 @@ am{
             "የምዕራብ ካሪብያን ዶላር",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "የምዕራብ አፍሪካ ሴፋ ፍራንክ",\r
         }\r
         XPF{\r
index 86c1423..c64f18a 100644 (file)
@@ -968,7 +968,7 @@ ar{
             "(UIC)فرنك فرنسي",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "فرنك غرب أفريقي",\r
         }\r
         XPD{\r
index 88612dc..ce76fe0 100644 (file)
@@ -620,7 +620,7 @@ as{
             "ইষ্ট কেৰিবিয়ান ডলাৰ",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "পশ্চিম আফ্ৰিকান CFA ফ্ৰেংক",\r
         }\r
         XPF{\r
index 09620ca..d27095a 100644 (file)
@@ -216,7 +216,7 @@ asa{
             "faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index e4dae4f..1cca752 100644 (file)
@@ -1112,7 +1112,7 @@ ast{
             "Francu UIC francés",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "francu CFA BCEAO",\r
         }\r
         XPD{\r
index c13f993..3a5f658 100644 (file)
@@ -1004,7 +1004,7 @@ az{
             "Fransız UİC Frankı",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Fil Dişi Sahili Frankı",\r
         }\r
         XPD{\r
index 7e0126d..9292040 100644 (file)
@@ -216,7 +216,7 @@ bas{
             "Frǎŋ CFA (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Frǎŋ CFA (BCEAO)",\r
         }\r
         ZAR{\r
index 85b662c..3a19bce 100644 (file)
@@ -620,7 +620,7 @@ be{
             "усходнекарыбскі долар",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "заходнеафрыканскі франк КФА",\r
         }\r
         XPF{\r
index 7c4efc8..f55e900 100644 (file)
@@ -212,7 +212,7 @@ bez{
             "Lupila lwa CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Lupila lwa CFA BCEAO",\r
         }\r
         ZAR{\r
index bccb08e..3da3124 100644 (file)
@@ -1012,7 +1012,7 @@ bg{
             "Френски златен франк",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Западноафрикански франк",\r
         }\r
         XPD{\r
index 5f3f157..003c3a4 100644 (file)
@@ -216,7 +216,7 @@ bm{
             "sefa Fraŋ (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "sefa Fraŋ (BCEAO)",\r
         }\r
         ZAR{\r
index 1aba332..16e4dfd 100644 (file)
@@ -1024,7 +1024,7 @@ bn{
             "ফরাসি ইউআইসি - ফ্রাঙ্ক",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "পশ্চিম আফ্রিকান [CFA] ফ্র্যাঙ্ক",\r
         }\r
         XPD{\r
index d6a9d01..c239b4d 100644 (file)
@@ -1112,7 +1112,7 @@ br{
             "lur Unaniezh etrebroadel an hentoù-houarn",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "lur CFA Afrika ar Cʼhornôg",\r
         }\r
         XPD{\r
index 14c52f8..691e2a4 100644 (file)
@@ -720,7 +720,7 @@ brx{
             "पापुआ न्यु गीनी का कीना",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "फ़िलिपीन का पेसो",\r
         }\r
         PKR{\r
@@ -1016,7 +1016,7 @@ brx{
             "फ्रानसीसी युआईसी फ्राँ",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "फ्रानसीसी फेदेरेशनी बीसीएआओ फ्राँ",\r
         }\r
         XPD{\r
index 83c7096..d417905 100644 (file)
@@ -1104,7 +1104,7 @@ bs{
             "Francuski UIC-frank",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Zapadnoafrički franak (CFA)",\r
         }\r
         XPD{\r
index d888b5d..3eab8af 100644 (file)
@@ -737,7 +737,7 @@ bs_Cyrl{
             "Папуанска кина",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Филипински пезос",\r
         }\r
         PKR{\r
@@ -1049,7 +1049,7 @@ bs_Cyrl{
             "Француски UIC-франак",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA франак BCEAO",\r
         }\r
         XPD{\r
index f257e11..d95dd7a 100644 (file)
@@ -1113,7 +1113,7 @@ ca{
             "franc UIC francès",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "franc CFA BCEAO",\r
         }\r
         XPD{\r
index fc074d9..dba31f8 100644 (file)
@@ -996,7 +996,7 @@ ccp{
             "𑄜𑄧𑄢𑄥𑄨 𑄃𑄨𑄃𑄪𑄃𑄭𑄥𑄨 𑄜𑄳𑄢𑄋𑄳𑄇𑄴",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "𑄛𑄧𑄎𑄨𑄟𑄴 𑄃𑄜𑄳𑄢𑄨𑄇𑄚𑄴 [CFA] 𑄜𑄳𑄢𑄳𑄠𑄋𑄳𑄇𑄴",\r
         }\r
         XPD{\r
index 93e9411..77d1df6 100644 (file)
@@ -616,7 +616,7 @@ ce{
             "Малхбален Карибийн доллар",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Малхбузен Африкан КФА франк",\r
         }\r
         XPF{\r
index e3dbf8a..b700e89 100644 (file)
@@ -604,7 +604,7 @@ ceb{
             "East Caribbean Dollar",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "West African CFA Franc",\r
         }\r
         XPF{\r
index 1f72acd..25bd16d 100644 (file)
@@ -212,7 +212,7 @@ cgg{
             "Faranga ya CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga ya CFA BCEAO",\r
         }\r
         ZAR{\r
index 1e05fc1..208df1b 100644 (file)
@@ -620,7 +620,7 @@ chr{
             "ᏗᎧᎸᎬ ᎨᏆᏙᏯ ᎠᏕᎳ",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ᏭᏕᎵᎬ ᎬᎿᎨᏍᏛ CFA ᎠᏕᎳ",\r
         }\r
         XPF{\r
index 0162893..ed27a01 100644 (file)
@@ -1116,7 +1116,7 @@ cs{
             "francouzský UIC frank",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA/BCEAO frank",\r
         }\r
         XPD{\r
index cee0025..d78d4c2 100644 (file)
@@ -1032,7 +1032,7 @@ cy{
             "Uned Arian Cyfred Ewropeaidd",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Ffranc CFA Gorllewin Affrica",\r
         }\r
         XPD{\r
index bd08d9d..d70986c 100644 (file)
@@ -1008,7 +1008,7 @@ da{
             "Fransk UIC-franc",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA-franc BCEAO",\r
         }\r
         XPD{\r
index 1ed09e6..6ec57ee 100644 (file)
@@ -212,7 +212,7 @@ dav{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index b4002e1..d57e794 100644 (file)
@@ -1116,7 +1116,7 @@ de{
             "Französischer UIC-Franc",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA-Franc (BCEAO)",\r
         }\r
         XPD{\r
index 911bd93..4f27b15 100644 (file)
@@ -216,7 +216,7 @@ dje{
             "CFA Fraŋ (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA Fraŋ (BCEAO)",\r
         }\r
         ZAR{\r
index e5b9159..a38e643 100644 (file)
@@ -544,7 +544,7 @@ dsb{
             "papua-neuguinejska kina",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "filipinski peso",\r
         }\r
         PKR{\r
@@ -728,7 +728,7 @@ dsb{
             "pódzajtšnokaribiski dolar",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA-frank (BCEAO)",\r
         }\r
         XPF{\r
index 61fa5cf..b9fed89 100644 (file)
@@ -120,7 +120,7 @@ dyo{
             "seefa BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "seefa yati BCEAO",\r
         }\r
     }\r
index dcf4f42..d477ecc 100644 (file)
@@ -208,7 +208,7 @@ dz{
             "པ་རུ་གི་དངུལ་ ནུ་བོ་ སཱོལ",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "ཕི་ལི་པིནས་གྱི་དངུལ་ པེ་སོ",\r
         }\r
         PKR{\r
index e3e001a..951c383 100644 (file)
@@ -212,7 +212,7 @@ ebu{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index 115a48e..8357aa0 100644 (file)
@@ -764,7 +764,7 @@ ee{
             "papua new guineaga kina",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "filipiniga peso",\r
         }\r
         PKR{\r
@@ -1076,7 +1076,7 @@ ee{
             "frentsi UIC-franc",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ɣetoɖofe afrikaga CFA franc BCEAO",\r
         }\r
         XPD{\r
index aad3b3b..4fa7ab7 100644 (file)
@@ -1025,7 +1025,7 @@ el{
             "UIC-Φράγκο Γαλλίας",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Φράγκο CFA Δυτικής Αφρικής",\r
         }\r
         XPF{\r
index 7c38634..cb61f3e 100644 (file)
@@ -800,7 +800,7 @@ en{
             "Papua New Guinean Kina",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Philippine Piso",\r
         }\r
         PKR{\r
@@ -1120,7 +1120,7 @@ en{
             "French UIC-Franc",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "West African CFA Franc",\r
         }\r
         XPD{\r
index 979d26c..519e810 100644 (file)
@@ -28,7 +28,7 @@ en_001{
             "Latvian Rouble",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Philippine Peso",\r
         }\r
         RUB{\r
index 96945db..4991cd5 100644 (file)
@@ -1037,7 +1037,7 @@ et{
             "Prantsuse UIC-frank",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Lääne-Aafrika CFA frank",\r
         }\r
         XPD{\r
index 5695b2f..337d872 100644 (file)
@@ -641,7 +641,7 @@ eu{
             "Karibe ekialdeko dolarra",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Afrika mendebaldeko CFA frankoa",\r
         }\r
         XPF{\r
index 325b128..85ee6f2 100644 (file)
@@ -216,7 +216,7 @@ ewo{
             "Fəláŋ CFA (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Fəláŋ CFA (BCEAO)",\r
         }\r
         ZAR{\r
index 1a32afe..0a0c560 100644 (file)
@@ -884,7 +884,7 @@ fa{
             "فرانک طلای فرانسه",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "فرانک CFA غرب افریقا",\r
         }\r
         XPD{\r
index 2297fa3..e9eb45b 100644 (file)
@@ -212,7 +212,7 @@ ff{
             "Mbuuɗi Seefaa BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Mbuuɗu Seefaa BCEAO",\r
         }\r
         ZAR{\r
index 682d136..38b9ea7 100644 (file)
@@ -1120,7 +1120,7 @@ fi{
             "Ranskan UIC-frangi",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA-frangi BCEAO",\r
         }\r
         XPD{\r
index ac88434..27fc0cb 100644 (file)
@@ -656,7 +656,7 @@ fil{
             "Dolyar ng Silangang Caribbean",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA Franc ng Kanlurang Africa",\r
         }\r
         XPF{\r
index 75aff30..40e6bf3 100644 (file)
@@ -628,7 +628,7 @@ fo{
             "Eystur Karibia dollari",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Vesturafrika CFA frankur",\r
         }\r
         XPD{\r
index b341c08..523a5e0 100644 (file)
@@ -1044,7 +1044,7 @@ fr{
             "franc UIC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "franc CFA (BCEAO)",\r
         }\r
         XPD{\r
index 4273202..cd8f089 100644 (file)
@@ -776,7 +776,7 @@ fy{
             "Papuaanske kina",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Filipynske peso",\r
         }\r
         PKR{\r
@@ -1092,7 +1092,7 @@ fy{
             "Franse UIC-franc",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA-franc BCEAO",\r
         }\r
         XPD{\r
index e3f7f7a..40da16f 100644 (file)
@@ -764,7 +764,7 @@ ga{
             "Kina Nua-Ghuine Phapua",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Peso na nOileán Filipíneach",\r
         }\r
         PKR{\r
@@ -1072,7 +1072,7 @@ ga{
             "UIC-Franc Francach",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franc CFA Iarthar na hAfraice",\r
         }\r
         XPD{\r
index 707bb60..eca8cf6 100644 (file)
@@ -1120,7 +1120,7 @@ gd{
             "Franc UIC Frangach",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franc CFA Afraga an Iar",\r
         }\r
         XPD{\r
index f856bd1..c38ddf9 100644 (file)
@@ -813,7 +813,7 @@ gl{
             "dólar do Caribe Oriental",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "franco CFA (BCEAO)",\r
         }\r
         XPD{\r
index 216806d..1223218 100644 (file)
@@ -720,7 +720,7 @@ gsw{
             "Kina",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Philippiinische Peso",\r
         }\r
         PKR{\r
@@ -1024,7 +1024,7 @@ gsw{
             "Französische UIC-Franc",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA-Franc (Wescht)",\r
         }\r
         XPD{\r
index 1235bd0..3d6ca66 100644 (file)
@@ -632,7 +632,7 @@ gu{
             "ઇસ્ટ કેરિબિયન ડોલર",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "પશ્ચિમી આફ્રિકન [CFA] ફ્રેંક",\r
         }\r
         XPF{\r
index 61b67c5..91ad567 100644 (file)
@@ -212,7 +212,7 @@ guz{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index f953e17..2fc5ac2 100644 (file)
@@ -452,7 +452,7 @@ ha{
             "Kina na ƙasar Papua Sabon Guinea",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Kuɗin Philippine",\r
         }\r
         PKR{\r
@@ -628,7 +628,7 @@ ha{
             "Dalar Gabashin Karebiyan",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Kuɗin Sefa na Afirka Ta Yamma",\r
         }\r
         XPF{\r
index 756bab4..5a6ee70 100644 (file)
@@ -856,7 +856,7 @@ he{
             "פרנק זהב",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "פרנק CFA מערב אפריקני",\r
         }\r
         XPD{\r
index 844eafa..c419a7c 100644 (file)
@@ -732,7 +732,7 @@ hi{
             "यूरोपीय मुद्रा इकाई",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "पश्चिमी अफ़्रीकी CFA फ़्रैंक",\r
         }\r
         XPF{\r
index 5c444f0..e5f9e63 100644 (file)
@@ -1116,7 +1116,7 @@ hr{
             "francuski UIC-franak",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA franak BCEAO",\r
         }\r
         XPD{\r
index d8e7895..000e65a 100644 (file)
@@ -544,7 +544,7 @@ hsb{
             "papua-nowoginejski kina",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "filipinski peso",\r
         }\r
         PKR{\r
@@ -728,7 +728,7 @@ hsb{
             "wuchodnokaribiski dolar",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA-frank (BCEAO)",\r
         }\r
         XPF{\r
index fb0467b..e3570d7 100644 (file)
@@ -1068,7 +1068,7 @@ hu{
             "Francia UIC-frank",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA frank BCEAO",\r
         }\r
         XPD{\r
index fd6f233..76dc365 100644 (file)
@@ -628,7 +628,7 @@ hy{
             "արևելակարիբյան դոլար",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Արևմտյան Աֆրիկայի ԿՖԱ ֆրանկ",\r
         }\r
         XPF{\r
index fe16b56..a4779ce 100644 (file)
@@ -456,7 +456,7 @@ ia{
             "dollar del Caribes Oriental",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "franco CFA de Africa Occidental",\r
         }\r
         XPF{\r
index 34269b2..757e582 100644 (file)
@@ -1108,7 +1108,7 @@ id{
             "Franc UIC Perancis",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franc CFA Afrika Barat",\r
         }\r
         XPD{\r
index 751e906..1dede77 100644 (file)
@@ -432,7 +432,7 @@ ig{
             "Ego Kina obodo Papua New Guinea",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Ego piso obodo Philippine",\r
         }\r
         PKR{\r
@@ -604,7 +604,7 @@ ig{
             "Ego Dollar obodo East Carribbean",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Ego CFA Franc obodo West Africa",\r
         }\r
         XPF{\r
index 6e857e6..ed2575b 100644 (file)
@@ -868,7 +868,7 @@ is{
             "Franskur franki, UIC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "vesturafrískur franki",\r
         }\r
         XPF{\r
index c7414aa..826cd81 100644 (file)
@@ -721,7 +721,7 @@ it{
             "kina papuana",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "peso filippino",\r
         }\r
         PKR{\r
@@ -1025,7 +1025,7 @@ it{
             "franco UIC francese",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "franco CFA BCEAO",\r
         }\r
         XPD{\r
index 883bb80..9762bac 100644 (file)
@@ -1116,7 +1116,7 @@ ja{
             "フランス フラン (UIC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "西アフリカ CFA フラン",\r
         }\r
         XPD{\r
index 21ee49b..5f042f9 100644 (file)
@@ -216,7 +216,7 @@ jmc{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index 08504b1..e62732c 100644 (file)
@@ -436,7 +436,7 @@ jv{
             "Kina Papua Nugini",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Piso Filipina",\r
         }\r
         PKR{\r
@@ -612,7 +612,7 @@ jv{
             "Dolar Karibia Wetan",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA Franc Afrika Kulon",\r
         }\r
         XPF{\r
index ed1e3d1..246eb7c 100644 (file)
@@ -932,7 +932,7 @@ ka{
             "ფრანგული ოქროს ფრანკი",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "დასავლეთ აფრიკული CFA ფრანკი",\r
         }\r
         XPF{\r
index 8dfea3d..0750865 100644 (file)
@@ -212,7 +212,7 @@ kab{
             "Afrank BCEA CFA",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Afrank BCEAO CFA",\r
         }\r
         ZAR{\r
index f2c7b4b..1cf0e90 100644 (file)
@@ -212,7 +212,7 @@ kam{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index 5f39545..958d090 100644 (file)
@@ -216,7 +216,7 @@ kde{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index 4397403..87cf86f 100644 (file)
@@ -501,7 +501,7 @@ kea{
             "XCD",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franku CFA (BCEAO)",\r
         }\r
         XPF{\r
index 911db46..a6f457b 100644 (file)
@@ -216,7 +216,7 @@ khq{
             "CFA Fraŋ (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA Fraŋ (BCEAO)",\r
         }\r
         ZAR{\r
index 5b4d02a..7863e81 100644 (file)
@@ -212,7 +212,7 @@ ki{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index bcd1791..c97e6b2 100644 (file)
@@ -628,7 +628,7 @@ kk{
             "Шығыс Кариб доллары",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "КФА ВСЕАО франкі",\r
         }\r
         XPF{\r
index e5d4079..67e8079 100644 (file)
@@ -212,7 +212,7 @@ kln{
             "Rabisiekab CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Rabisiekab CFA BCEAO",\r
         }\r
         ZAR{\r
index 1879e4b..758d0b3 100644 (file)
@@ -628,7 +628,7 @@ km{
             "ដុល្លារ​ការ៉ាប៊ីន​ខាង​កើត",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ហ្វ្រង់ CFA អាហ្វ្រិកខាងលិច",\r
         }\r
         XPF{\r
index 4a97181..e4df3e8 100644 (file)
@@ -632,7 +632,7 @@ kn{
             "ಪೂರ್ವ ಕೆರೀಬಿಯನ್ ಡಾಲರ್",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ಪಶ್ಚಿಮ ಆಫ್ರಿಕಾದ CFA ಫ್ರಾಂಕ್",\r
         }\r
         XPF{\r
index f8b9aac..97c7263 100644 (file)
@@ -1088,7 +1088,7 @@ ko{
             "프랑스 프랑 (UIC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "서아프리카 CFA 프랑",\r
         }\r
         XPD{\r
index 86a8d13..867c502 100644 (file)
@@ -604,7 +604,7 @@ kok{
             "उदेंत कॅरिबियन डॉलर",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "अस्तंत आफ्रिकी सीएफए फ्रँक",\r
         }\r
         XPF{\r
index 3439bbb..c5c5655 100644 (file)
@@ -660,7 +660,7 @@ ks{
             "نیوٗ پیپُعا گِنِیَن کیٖنا",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "پھِلِپایِٔن پؠسو",\r
         }\r
         PKR{\r
@@ -948,7 +948,7 @@ ks{
             "فرینچ یوٗ اے سی فرینک",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "سی ایف اے فرینک بی سی ایٖ اے او",\r
         }\r
         XPD{\r
index d00b10f..845c038 100644 (file)
@@ -216,7 +216,7 @@ ksb{
             "falanga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "falanga CFA BCEAO",\r
         }\r
         ZAR{\r
index 0656804..4f9c548 100644 (file)
@@ -212,7 +212,7 @@ ksf{
             "fráŋ",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "mɔni mǝ á afríka aná wɛs",\r
         }\r
         ZAR{\r
index c9f448b..fee4b3e 100644 (file)
@@ -460,7 +460,7 @@ ksh{
             "papua neujinejaanesche Kina",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "fillipiinesche Pesos",\r
         }\r
         PKR{\r
@@ -668,7 +668,7 @@ ksh{
             "franzüüsesche Joldfranke",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Frang uß de Älfebeinköß",\r
         }\r
         XPD{\r
index 386a4ac..2df6858 100644 (file)
@@ -628,7 +628,7 @@ ky{
             "чыгыш кариб доллары",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "КФА франкы",\r
         }\r
         XPF{\r
index 6ec24a0..21a37a2 100644 (file)
@@ -212,7 +212,7 @@ lag{
             "Faráanga ya CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faráanga ya CFA BCEAO",\r
         }\r
         ZAR{\r
index 8419dcb..4d3a222 100644 (file)
@@ -1032,7 +1032,7 @@ lb{
             "Franséischen UIC-Frang",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA-Frang (BCEAO)",\r
         }\r
         XPD{\r
index bf71846..c3fe999 100644 (file)
@@ -216,7 +216,7 @@ lg{
             "Faranga ey’omu Afirika eya wakati",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga ey’omu Afirika ey’ebugwanjuba",\r
         }\r
         ZAR{\r
index 8d7182c..630340f 100644 (file)
@@ -216,7 +216,7 @@ ln{
             "Falánga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Falánga CFA BCEAO",\r
         }\r
         ZAR{\r
index 82cd34f..6b340df 100644 (file)
@@ -1096,7 +1096,7 @@ lo{
             "ຟຣັງ ຢູໄອຊີ ຝຣັ່ງ",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ຟັງເຊຟານ ອາຟຣິກາຕາເວັນຕົກ",\r
         }\r
         XPD{\r
index a15b3ff..b54bbde 100644 (file)
@@ -216,7 +216,7 @@ lu{
             "Nfalanga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Nfalanga CFA BCEAO",\r
         }\r
         ZAR{\r
index 99bfa45..f99bbc2 100644 (file)
@@ -212,7 +212,7 @@ luo{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index 2aaa6ad..f3e397d 100644 (file)
@@ -212,7 +212,7 @@ luy{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index 75d8c02..aa023d4 100644 (file)
@@ -792,7 +792,7 @@ lv{
             "Francijas UIC franks",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Rietumāfrikas CFA franks",\r
         }\r
         XPD{\r
index 6bec1c9..29adb01 100644 (file)
@@ -212,7 +212,7 @@ mas{
             "Iropiyianí e CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Iropiyianí e CFA BCEAO",\r
         }\r
         ZAR{\r
index 06b211c..a3b0765 100644 (file)
@@ -212,7 +212,7 @@ mer{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index 72317f2..74c58ee 100644 (file)
@@ -216,7 +216,7 @@ mfe{
             "fran CFA (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "fran CFA (BCEAO)",\r
         }\r
         ZAR{\r
index 34ae706..3062091 100644 (file)
@@ -216,7 +216,7 @@ mg{
             "Farantsa CFA (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Farantsa CFA (BCEAO)",\r
         }\r
         ZAR{\r
index 370fb26..074eb4b 100644 (file)
@@ -864,7 +864,7 @@ mk{
             "Источнокарипски долар",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Западноафрикански франк",\r
         }\r
         XPF{\r
index 8586a9c..196a0bd 100644 (file)
@@ -1040,7 +1040,7 @@ ml{
             "ഫ്രെഞ്ച് UIC-ഫ്രാങ്ക്",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "പശ്ചിമ ആഫ്രിക്കൻ [CFA] ഫ്രാങ്ക്",\r
         }\r
         XPD{\r
index 7f1920a..67793e9 100644 (file)
@@ -628,7 +628,7 @@ mn{
             "Зүүн Карибийн доллар",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Баруун Африкийн франк",\r
         }\r
         XPF{\r
index d8f3ec6..0a668dd 100644 (file)
@@ -632,7 +632,7 @@ mr{
             "पूर्व कॅरीबियन डॉलर",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "पश्चिम आफ्रिकन [CFA] फ्रँक",\r
         }\r
         XPF{\r
index ae6cdca..d9e3850 100644 (file)
@@ -652,7 +652,7 @@ ms{
             "Dolar Caribbean Timur",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franc CFA BCEAO",\r
         }\r
         XPF{\r
index bb395df..4121f28 100644 (file)
@@ -576,7 +576,7 @@ mt{
             "XCD",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "XOF",\r
         }\r
         XPF{\r
index b0a0ee9..2a04cf9 100644 (file)
@@ -216,7 +216,7 @@ mua{
             "solai BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "solai BCEAO",\r
         }\r
         ZAR{\r
index 206db90..01cbdbc 100644 (file)
@@ -708,7 +708,7 @@ my{
             "အထူးထုတ်ယူခွင့်",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "အနောက် အာဖရိက CFA ဖရန့်",\r
         }\r
         XPF{\r
index 9585408..514aab0 100644 (file)
@@ -584,7 +584,7 @@ mzn{
             "شرقی کاراییب ِدولار",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "غربی آفریقای ِسی‌اف‌ای فرانک",\r
         }\r
         YER{\r
index b784e45..9b7f4b8 100644 (file)
@@ -216,7 +216,7 @@ naq{
             "CFA Franc BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA Franc BCEAO",\r
         }\r
         ZAR{\r
index 68a94e1..eedd825 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nb{\r
-    Currencies{\r
-        ADP{\r
-            "ADP",\r
-            "andorranske pesetas",\r
-        }\r
-        AED{\r
-            "AED",\r
-            "emiratarabiske dirham",\r
-        }\r
-        AFA{\r
-            "AFA",\r
-            "afgansk afghani (1927–2002)",\r
-        }\r
-        AFN{\r
-            "AFN",\r
-            "afghanske afghani",\r
-        }\r
-        ALK{\r
-            "ALK",\r
-            "albanske lek (1946–1965)",\r
-        }\r
-        ALL{\r
-            "ALL",\r
-            "albanske lek",\r
-        }\r
-        AMD{\r
-            "AMD",\r
-            "armenske dram",\r
-        }\r
-        ANG{\r
-            "ANG",\r
-            "nederlandske antillegylden",\r
-        }\r
-        AOA{\r
-            "AOA",\r
-            "angolanske kwanza",\r
-        }\r
-        AOK{\r
-            "AOK",\r
-            "angolanske kwanza (1977–1990)",\r
-        }\r
-        AON{\r
-            "AON",\r
-            "angolanske nye kwanza (1990–2000)",\r
-        }\r
-        AOR{\r
-            "AOR",\r
-            "angolanske omjusterte kwanza (1995–1999)",\r
-        }\r
-        ARA{\r
-            "ARA",\r
-            "argentinske australer",\r
-        }\r
-        ARL{\r
-            "ARL",\r
-            "argentinske peso ley",\r
-        }\r
-        ARM{\r
-            "ARM",\r
-            "argentinsk pesos (1881–1970)",\r
-        }\r
-        ARP{\r
-            "ARP",\r
-            "argentinske pesos (1983–1985)",\r
-        }\r
-        ARS{\r
-            "ARS",\r
-            "argentinske pesos",\r
-        }\r
-        ATS{\r
-            "ATS",\r
-            "østerrikske shilling",\r
-        }\r
-        AUD{\r
-            "AUD",\r
-            "australske dollar",\r
-        }\r
-        AWG{\r
-            "AWG",\r
-            "arubiske floriner",\r
-        }\r
-        AZM{\r
-            "AZM",\r
-            "aserbajdsjanske manat (1993–2006)",\r
-        }\r
-        AZN{\r
-            "AZN",\r
-            "aserbajdsjanske manat",\r
-        }\r
-        BAD{\r
-            "BAD",\r
-            "bosnisk-hercegovinske dinarer (1992–1994)",\r
-        }\r
-        BAM{\r
-            "BAM",\r
-            "bosnisk-hercegovinske konvertible mark",\r
-        }\r
-        BAN{\r
-            "BAN",\r
-            "nye bosnisk-hercegovinske dinarer (1994–1997)",\r
-        }\r
-        BBD{\r
-            "BBD",\r
-            "barbadiske dollar",\r
-        }\r
-        BDT{\r
-            "BDT",\r
-            "bangladeshiske taka",\r
-        }\r
-        BEC{\r
-            "BEC",\r
-            "belgiske franc (konvertible)",\r
-        }\r
-        BEF{\r
-            "BEF",\r
-            "belgiske franc",\r
-        }\r
-        BEL{\r
-            "BEL",\r
-            "belgiske franc (finansielle)",\r
-        }\r
-        BGL{\r
-            "BGL",\r
-            "bulgarske lev (hard)",\r
-        }\r
-        BGM{\r
-            "BGM",\r
-            "bulgarske lev (sosialist)",\r
-        }\r
-        BGN{\r
-            "BGN",\r
-            "bulgarske lev",\r
-        }\r
-        BGO{\r
-            "BGO",\r
-            "bulgarske lev (1879–1952)",\r
-        }\r
-        BHD{\r
-            "BHD",\r
-            "bahrainske dinarer",\r
-        }\r
-        BIF{\r
-            "BIF",\r
-            "burundiske franc",\r
-        }\r
-        BMD{\r
-            "BMD",\r
-            "bermudiske dollar",\r
-        }\r
-        BND{\r
-            "BND",\r
-            "bruneiske dollar",\r
-        }\r
-        BOB{\r
-            "BOB",\r
-            "bolivianske boliviano",\r
-        }\r
-        BOL{\r
-            "BOL",\r
-            "bolivianske boliviano (1863–1963)",\r
-        }\r
-        BOP{\r
-            "BOP",\r
-            "bolivianske pesos",\r
-        }\r
-        BOV{\r
-            "BOV",\r
-            "bolivianske mvdol",\r
-        }\r
-        BRB{\r
-            "BRB",\r
-            "brasilianske cruzeiro novo (1967–1986)",\r
-        }\r
-        BRC{\r
-            "BRC",\r
-            "brasilianske cruzados (1986–1989)",\r
-        }\r
-        BRE{\r
-            "BRE",\r
-            "brasilianske cruzeiro (1990–1993)",\r
-        }\r
-        BRL{\r
-            "BRL",\r
-            "brasilianske real",\r
-        }\r
-        BRN{\r
-            "BRN",\r
-            "brasilianske cruzado novo (1989–1990)",\r
-        }\r
-        BRR{\r
-            "BRR",\r
-            "brasilianske cruzeiro (1993–1994)",\r
-        }\r
-        BRZ{\r
-            "BRZ",\r
-            "brasilianske cruzeiro (1942–1967)",\r
-        }\r
-        BSD{\r
-            "BSD",\r
-            "bahamanske dollar",\r
-        }\r
-        BTN{\r
-            "BTN",\r
-            "bhutanske ngultrum",\r
-        }\r
-        BUK{\r
-            "BUK",\r
-            "burmesiske kyat",\r
-        }\r
-        BWP{\r
-            "BWP",\r
-            "botswanske pula",\r
-        }\r
-        BYB{\r
-            "BYB",\r
-            "hviterussiske nye rubler (1994–1999)",\r
-        }\r
-        BYN{\r
-            "BYN",\r
-            "nye hviterussiske rubler",\r
-        }\r
-        BYR{\r
-            "BYR",\r
-            "hviterussiske rubler (2000–2016)",\r
-        }\r
-        BZD{\r
-            "BZD",\r
-            "beliziske dollar",\r
-        }\r
-        CAD{\r
-            "CAD",\r
-            "kanadiske dollar",\r
-        }\r
-        CDF{\r
-            "CDF",\r
-            "kongolesiske franc",\r
-        }\r
-        CHE{\r
-            "CHE",\r
-            "WIR euro",\r
-        }\r
-        CHF{\r
-            "CHF",\r
-            "sveitsiske franc",\r
-        }\r
-        CHW{\r
-            "CHW",\r
-            "WIR franc",\r
-        }\r
-        CLE{\r
-            "CLE",\r
-            "chilenske escudo",\r
-        }\r
-        CLF{\r
-            "CLF",\r
-            "chilenske unidades de fomento",\r
-        }\r
-        CLP{\r
-            "CLP",\r
-            "chilenske pesos",\r
-        }\r
-        CNH{\r
-            "CNH",\r
-            "kinesiske yuan (offshore)",\r
-        }\r
-        CNX{\r
-            "CNX",\r
-            "Kinas folkebank dollar",\r
-        }\r
-        CNY{\r
-            "CNY",\r
-            "kinesiske yuan",\r
-        }\r
-        COP{\r
-            "COP",\r
-            "colombianske pesos",\r
-        }\r
-        COU{\r
-            "COU",\r
-            "colombianske unidad de valor real",\r
-        }\r
-        CRC{\r
-            "CRC",\r
-            "costaricanske colón",\r
-        }\r
-        CSD{\r
-            "CSD",\r
-            "serbiske dinarer (2002–2006)",\r
-        }\r
-        CSK{\r
-            "CSK",\r
-            "tsjekkoslovakiske koruna (hard)",\r
-        }\r
-        CUC{\r
-            "CUC",\r
-            "kubanske konvertible pesos",\r
-        }\r
-        CUP{\r
-            "CUP",\r
-            "kubanske pesos",\r
-        }\r
-        CVE{\r
-            "CVE",\r
-            "kappverdiske escudos",\r
-        }\r
-        CYP{\r
-            "CYP",\r
-            "kypriotiske pund",\r
-        }\r
-        CZK{\r
-            "CZK",\r
-            "tsjekkiske koruna",\r
-        }\r
-        DDM{\r
-            "DDM",\r
-            "østtyske mark",\r
-        }\r
-        DEM{\r
-            "DEM",\r
-            "tyske mark",\r
-        }\r
-        DJF{\r
-            "DJF",\r
-            "djiboutiske franc",\r
-        }\r
-        DKK{\r
-            "DKK",\r
-            "danske kroner",\r
-        }\r
-        DOP{\r
-            "DOP",\r
-            "dominikanske pesos",\r
-        }\r
-        DZD{\r
-            "DZD",\r
-            "algeriske dinarer",\r
-        }\r
-        ECS{\r
-            "ECS",\r
-            "ecuadorianske sucre",\r
-        }\r
-        ECV{\r
-            "ECV",\r
-            "ecuadorianske unidad de valor constante (UVC)",\r
-        }\r
-        EEK{\r
-            "EEK",\r
-            "estiske kroon",\r
-        }\r
-        EGP{\r
-            "EGP",\r
-            "egyptiske pund",\r
-        }\r
-        ERN{\r
-            "ERN",\r
-            "eritreiske nakfa",\r
-        }\r
-        ESA{\r
-            "ESA",\r
-            "spanske peseta (A–konto)",\r
-        }\r
-        ESB{\r
-            "ESB",\r
-            "spanske peseta (konvertibel konto)",\r
-        }\r
-        ESP{\r
-            "ESP",\r
-            "spanske peseta",\r
-        }\r
-        ETB{\r
-            "ETB",\r
-            "etiopiske birr",\r
-        }\r
-        EUR{\r
-            "€",\r
-            "euro",\r
-        }\r
-        FIM{\r
-            "FIM",\r
-            "finske mark",\r
-        }\r
-        FJD{\r
-            "FJD",\r
-            "fijianske dollar",\r
-        }\r
-        FKP{\r
-            "FKP",\r
-            "falklandspund",\r
-        }\r
-        FRF{\r
-            "FRF",\r
-            "franske franc",\r
-        }\r
-        GBP{\r
-            "£",\r
-            "britiske pund",\r
-        }\r
-        GEK{\r
-            "GEK",\r
-            "georgiske kupon larit",\r
-        }\r
-        GEL{\r
-            "GEL",\r
-            "georgiske lari",\r
-        }\r
-        GHC{\r
-            "GHC",\r
-            "ghanesisk cedi (1979–2007)",\r
-        }\r
-        GHS{\r
-            "GHS",\r
-            "ghanesiske cedi",\r
-        }\r
-        GIP{\r
-            "GIP",\r
-            "gibraltarske pund",\r
-        }\r
-        GMD{\r
-            "GMD",\r
-            "gambiske dalasi",\r
-        }\r
-        GNF{\r
-            "GNF",\r
-            "guineanske franc",\r
-        }\r
-        GNS{\r
-            "GNS",\r
-            "guineanske syli",\r
-        }\r
-        GQE{\r
-            "GQE",\r
-            "ekvatorialguineanske ekwele guineana",\r
-        }\r
-        GRD{\r
-            "GRD",\r
-            "greske drakmer",\r
-        }\r
-        GTQ{\r
-            "GTQ",\r
-            "guatemalanske quetzal",\r
-        }\r
-        GWE{\r
-            "GWE",\r
-            "portugisiske guinea escudo",\r
-        }\r
-        GWP{\r
-            "GWP",\r
-            "Guinea-Bissau-pesos",\r
-        }\r
-        GYD{\r
-            "GYD",\r
-            "guyanske dollar",\r
-        }\r
-        HKD{\r
-            "HKD",\r
-            "Hongkong-dollar",\r
-        }\r
-        HNL{\r
-            "HNL",\r
-            "honduranske lempira",\r
-        }\r
-        HRD{\r
-            "HRD",\r
-            "kroatiske dinarer",\r
-        }\r
-        HRK{\r
-            "HRK",\r
-            "kroatiske kuna",\r
-        }\r
-        HTG{\r
-            "HTG",\r
-            "haitiske gourde",\r
-        }\r
-        HUF{\r
-            "HUF",\r
-            "ungarske forinter",\r
-        }\r
-        IDR{\r
-            "IDR",\r
-            "indonesiske rupier",\r
-        }\r
-        IEP{\r
-            "IEP",\r
-            "irske pund",\r
-        }\r
-        ILP{\r
-            "ILP",\r
-            "israelske pund",\r
-        }\r
-        ILR{\r
-            "ILR",\r
-            "israelske shekler (1980–1985)",\r
-        }\r
-        ILS{\r
-            "ILS",\r
-            "nye israelske shekler",\r
-        }\r
-        INR{\r
-            "INR",\r
-            "indiske rupier",\r
-        }\r
-        IQD{\r
-            "IQD",\r
-            "irakske dinarer",\r
-        }\r
-        IRR{\r
-            "IRR",\r
-            "iranske rialer",\r
-        }\r
-        ISJ{\r
-            "ISJ",\r
-            "islandske kroner (1918–1981)",\r
-        }\r
-        ISK{\r
-            "ISK",\r
-            "islandske kroner",\r
-        }\r
-        ITL{\r
-            "ITL",\r
-            "italienske lire",\r
-        }\r
-        JMD{\r
-            "JMD",\r
-            "jamaikanske dollar",\r
-        }\r
-        JOD{\r
-            "JOD",\r
-            "jordanske dinarer",\r
-        }\r
-        JPY{\r
-            "JPY",\r
-            "japanske yen",\r
-        }\r
-        KES{\r
-            "KES",\r
-            "kenyanske shilling",\r
-        }\r
-        KGS{\r
-            "KGS",\r
-            "kirgisiske som",\r
-        }\r
-        KHR{\r
-            "KHR",\r
-            "kambodsjanske riel",\r
-        }\r
-        KMF{\r
-            "KMF",\r
-            "komoriske franc",\r
-        }\r
-        KPW{\r
-            "KPW",\r
-            "nordkoreanske won",\r
-        }\r
-        KRH{\r
-            "KRH",\r
-            "sørkoreanske hwan (1953–1962)",\r
-        }\r
-        KRO{\r
-            "KRO",\r
-            "sørkoreanske won (1945–1953)",\r
-        }\r
-        KRW{\r
-            "KRW",\r
-            "sørkoreanske won",\r
-        }\r
-        KWD{\r
-            "KWD",\r
-            "kuwaitiske dinarer",\r
-        }\r
-        KYD{\r
-            "KYD",\r
-            "caymanske dollar",\r
-        }\r
-        KZT{\r
-            "KZT",\r
-            "kasakhstanske tenge",\r
-        }\r
-        LAK{\r
-            "LAK",\r
-            "laotiske kip",\r
-        }\r
-        LBP{\r
-            "LBP",\r
-            "libanesiske pund",\r
-        }\r
-        LKR{\r
-            "LKR",\r
-            "srilankiske rupier",\r
-        }\r
-        LRD{\r
-            "LRD",\r
-            "liberiske dollar",\r
-        }\r
-        LSL{\r
-            "LSL",\r
-            "lesothiske loti",\r
-        }\r
-        LTL{\r
-            "LTL",\r
-            "litauiske litas",\r
-        }\r
-        LTT{\r
-            "LTT",\r
-            "litauiske talonas",\r
-        }\r
-        LUC{\r
-            "LUC",\r
-            "luxemburgske konvertible franc",\r
-        }\r
-        LUF{\r
-            "LUF",\r
-            "luxemburgske franc",\r
-        }\r
-        LUL{\r
-            "LUL",\r
-            "luxemburgske finansielle franc",\r
-        }\r
-        LVL{\r
-            "LVL",\r
-            "latviske lats",\r
-        }\r
-        LVR{\r
-            "LVR",\r
-            "latviske rubler",\r
-        }\r
-        LYD{\r
-            "LYD",\r
-            "libyske dinarer",\r
-        }\r
-        MAD{\r
-            "MAD",\r
-            "marokkanske dirham",\r
-        }\r
-        MAF{\r
-            "MAF",\r
-            "marokkanske franc",\r
-        }\r
-        MCF{\r
-            "MCF",\r
-            "monegaskiske franc",\r
-        }\r
-        MDC{\r
-            "MDC",\r
-            "moldovske cupon",\r
-        }\r
-        MDL{\r
-            "MDL",\r
-            "moldovske leu",\r
-        }\r
-        MGA{\r
-            "MGA",\r
-            "madagassiske ariary",\r
-        }\r
-        MGF{\r
-            "MGF",\r
-            "madagassiske franc",\r
-        }\r
-        MKD{\r
-            "MKD",\r
-            "makedonske denarer",\r
-        }\r
-        MKN{\r
-            "MKN",\r
-            "makedonske denarer (1992–1993)",\r
-        }\r
-        MLF{\r
-            "MLF",\r
-            "maliske franc",\r
-        }\r
-        MMK{\r
-            "MMK",\r
-            "myanmarske kyat",\r
-        }\r
-        MNT{\r
-            "MNT",\r
-            "mongolske tugrik",\r
-        }\r
-        MOP{\r
-            "MOP",\r
-            "makaoiske pataca",\r
-        }\r
-        MRO{\r
-            "MRO",\r
-            "mauritanske ouguiya (1973–2017)",\r
-        }\r
-        MRU{\r
-            "MRU",\r
-            "mauritanske ouguiya",\r
-        }\r
-        MTL{\r
-            "MTL",\r
-            "maltesiske lira",\r
-        }\r
-        MTP{\r
-            "MTP",\r
-            "maltesiske pund",\r
-        }\r
-        MUR{\r
-            "MUR",\r
-            "mauritiske rupier",\r
-        }\r
-        MVP{\r
-            "MVP",\r
-            "maldiviske rupier",\r
-        }\r
-        MVR{\r
-            "MVR",\r
-            "maldiviske rufiyaa",\r
-        }\r
-        MWK{\r
-            "MWK",\r
-            "malawiske kwacha",\r
-        }\r
-        MXN{\r
-            "MXN",\r
-            "meksikanske pesos",\r
-        }\r
-        MXP{\r
-            "MXP",\r
-            "meksikanske sølvpesos (1861–1992)",\r
-        }\r
-        MXV{\r
-            "MXV",\r
-            "meksikanske unidad de inversion (UDI)",\r
-        }\r
-        MYR{\r
-            "MYR",\r
-            "malaysiske ringgit",\r
-        }\r
-        MZE{\r
-            "MZE",\r
-            "mosambikiske escudo",\r
-        }\r
-        MZM{\r
-            "MZM",\r
-            "gamle mosambikiske metical",\r
-        }\r
-        MZN{\r
-            "MZN",\r
-            "mosambikiske metical",\r
-        }\r
-        NAD{\r
-            "NAD",\r
-            "namibiske dollar",\r
-        }\r
-        NGN{\r
-            "NGN",\r
-            "nigerianske naira",\r
-        }\r
-        NIC{\r
-            "NIC",\r
-            "nicaraguanske cordoba (1988–1991)",\r
-        }\r
-        NIO{\r
-            "NIO",\r
-            "nicaraguanske córdoba",\r
-        }\r
-        NLG{\r
-            "NLG",\r
-            "nederlandske gylden",\r
-        }\r
-        NOK{\r
-            "kr",\r
-            "norske kroner",\r
-        }\r
-        NPR{\r
-            "NPR",\r
-            "nepalske rupier",\r
-        }\r
-        NZD{\r
-            "NZD",\r
-            "newzealandske dollar",\r
-        }\r
-        OMR{\r
-            "OMR",\r
-            "omanske rialer",\r
-        }\r
-        PAB{\r
-            "PAB",\r
-            "panamanske balboa",\r
-        }\r
-        PEI{\r
-            "PEI",\r
-            "peruanske inti",\r
-        }\r
-        PEN{\r
-            "PEN",\r
-            "peruanske sol",\r
-        }\r
-        PES{\r
-            "PES",\r
-            "peruanske sol (1863–1965)",\r
-        }\r
-        PGK{\r
-            "PGK",\r
-            "papuanske kina",\r
-        }\r
-        PHP{\r
-            "PHP",\r
-            "filippinske pesos",\r
-        }\r
-        PKR{\r
-            "PKR",\r
-            "pakistanske rupier",\r
-        }\r
-        PLN{\r
-            "PLN",\r
-            "polske zloty",\r
-        }\r
-        PLZ{\r
-            "PLZ",\r
-            "polske zloty (1950–1995)",\r
-        }\r
-        PTE{\r
-            "PTE",\r
-            "portugisiske escudo",\r
-        }\r
-        PYG{\r
-            "PYG",\r
-            "paraguayanske guarani",\r
-        }\r
-        QAR{\r
-            "QAR",\r
-            "qatarske rialer",\r
-        }\r
-        RHD{\r
-            "RHD",\r
-            "rhodesiske dollar",\r
-        }\r
-        ROL{\r
-            "ROL",\r
-            "rumenske leu (1952–2006)",\r
-        }\r
-        RON{\r
-            "RON",\r
-            "rumenske leu",\r
-        }\r
-        RSD{\r
-            "RSD",\r
-            "serbiske dinarer",\r
-        }\r
-        RUB{\r
-            "RUB",\r
-            "russiske rubler",\r
-        }\r
-        RUR{\r
-            "RUR",\r
-            "russiske rubler (1991–1998)",\r
-        }\r
-        RWF{\r
-            "RWF",\r
-            "rwandiske franc",\r
-        }\r
-        SAR{\r
-            "SAR",\r
-            "saudiarabiske riyaler",\r
-        }\r
-        SBD{\r
-            "SBD",\r
-            "salomonske dollar",\r
-        }\r
-        SCR{\r
-            "SCR",\r
-            "seychelliske rupier",\r
-        }\r
-        SDD{\r
-            "SDD",\r
-            "sudanesiske dinarer (1992–2007)",\r
-        }\r
-        SDG{\r
-            "SDG",\r
-            "sudanske pund",\r
-        }\r
-        SDP{\r
-            "SDP",\r
-            "sudanesiske pund",\r
-        }\r
-        SEK{\r
-            "SEK",\r
-            "svenske kroner",\r
-        }\r
-        SGD{\r
-            "SGD",\r
-            "singaporske dollar",\r
-        }\r
-        SHP{\r
-            "SHP",\r
-            "sankthelenske pund",\r
-        }\r
-        SIT{\r
-            "SIT",\r
-            "slovenske tolar",\r
-        }\r
-        SKK{\r
-            "SKK",\r
-            "slovakiske koruna",\r
-        }\r
-        SLL{\r
-            "SLL",\r
-            "sierraleonske leone",\r
-        }\r
-        SOS{\r
-            "SOS",\r
-            "somaliske shilling",\r
-        }\r
-        SRD{\r
-            "SRD",\r
-            "surinamske dollar",\r
-        }\r
-        SRG{\r
-            "SRG",\r
-            "surinamske gylden",\r
-        }\r
-        SSP{\r
-            "SSP",\r
-            "sørsudanske pund",\r
-        }\r
-        STD{\r
-            "STD",\r
-            "saotomesiske dobra (1977–2017)",\r
-        }\r
-        STN{\r
-            "STN",\r
-            "saotomesiske dobra",\r
-        }\r
-        SUR{\r
-            "SUR",\r
-            "sovjetiske rubler",\r
-        }\r
-        SVC{\r
-            "SVC",\r
-            "salvadoranske colon",\r
-        }\r
-        SYP{\r
-            "SYP",\r
-            "syriske pund",\r
-        }\r
-        SZL{\r
-            "SZL",\r
-            "swazilandske lilangeni",\r
-        }\r
-        THB{\r
-            "THB",\r
-            "thailandske baht",\r
-        }\r
-        TJR{\r
-            "TJR",\r
-            "tadsjikiske rubler",\r
-        }\r
-        TJS{\r
-            "TJS",\r
-            "tadsjikiske somoni",\r
-        }\r
-        TMM{\r
-            "TMM",\r
-            "turkmenske manat (1993–2009)",\r
-        }\r
-        TMT{\r
-            "TMT",\r
-            "turkmenske manat",\r
-        }\r
-        TND{\r
-            "TND",\r
-            "tunisiske dinarer",\r
-        }\r
-        TOP{\r
-            "TOP",\r
-            "tonganske paʻanga",\r
-        }\r
-        TPE{\r
-            "TPE",\r
-            "timoresiske escudo",\r
-        }\r
-        TRL{\r
-            "TRL",\r
-            "tyrkiske lire (1922–2005)",\r
-        }\r
-        TRY{\r
-            "TRY",\r
-            "tyrkiske lire",\r
-        }\r
-        TTD{\r
-            "TTD",\r
-            "trinidadiske dollar",\r
-        }\r
-        TWD{\r
-            "TWD",\r
-            "nye taiwanske dollar",\r
-        }\r
-        TZS{\r
-            "TZS",\r
-            "tanzanianske shilling",\r
-        }\r
-        UAH{\r
-            "UAH",\r
-            "ukrainske hryvnia",\r
-        }\r
-        UAK{\r
-            "UAK",\r
-            "ukrainske karbovanetz",\r
-        }\r
-        UGS{\r
-            "UGS",\r
-            "ugandiske shilling (1966–1987)",\r
-        }\r
-        UGX{\r
-            "UGX",\r
-            "ugandiske shilling",\r
-        }\r
-        USD{\r
-            "USD",\r
-            "amerikanske dollar",\r
-        }\r
-        USN{\r
-            "USN",\r
-            "amerikanske dollar (neste dag)",\r
-        }\r
-        USS{\r
-            "USS",\r
-            "amerikanske dollar (samme dag)",\r
-        }\r
-        UYI{\r
-            "UYI",\r
-            "uruguyanske pesos (indekserte enheter)",\r
-        }\r
-        UYP{\r
-            "UYP",\r
-            "uruguayanske pesos (1975–1993)",\r
-        }\r
-        UYU{\r
-            "UYU",\r
-            "uruguayanske pesos",\r
-        }\r
-        UZS{\r
-            "UZS",\r
-            "usbekiske som",\r
-        }\r
-        VEB{\r
-            "VEB",\r
-            "venezuelanske bolivar (1871–2008)",\r
-        }\r
-        VEF{\r
-            "VEF",\r
-            "venezuelanske bolivar (2008–2018)",\r
-        }\r
-        VES{\r
-            "VES",\r
-            "venezuelanske bolivar",\r
-        }\r
-        VND{\r
-            "VND",\r
-            "vietnamesiske dong",\r
-        }\r
-        VNN{\r
-            "VNN",\r
-            "vietnamesiske dong (1978–1985)",\r
-        }\r
-        VUV{\r
-            "VUV",\r
-            "vanuatiske vatu",\r
-        }\r
-        WST{\r
-            "WST",\r
-            "samoanske tala",\r
-        }\r
-        XAF{\r
-            "XAF",\r
-            "sentralafrikanske CFA-franc",\r
-        }\r
-        XAG{\r
-            "XAG",\r
-            "sølv",\r
-        }\r
-        XAU{\r
-            "XAU",\r
-            "gull",\r
-        }\r
-        XBA{\r
-            "XBA",\r
-            "europeisk sammensatt enhet",\r
-        }\r
-        XBB{\r
-            "XBB",\r
-            "europeisk monetær enhet",\r
-        }\r
-        XBC{\r
-            "XBC",\r
-            "europeisk kontoenhet (XBC)",\r
-        }\r
-        XBD{\r
-            "XBD",\r
-            "europeisk kontoenhet (XBD)",\r
-        }\r
-        XCD{\r
-            "XCD",\r
-            "østkaribiske dollar",\r
-        }\r
-        XDR{\r
-            "XDR",\r
-            "spesielle trekkrettigheter",\r
-        }\r
-        XEU{\r
-            "XEU",\r
-            "europeisk valutaenhet",\r
-        }\r
-        XFO{\r
-            "XFO",\r
-            "franske gullfranc",\r
-        }\r
-        XFU{\r
-            "XFU",\r
-            "franske UIC-franc",\r
-        }\r
-        XOF{\r
-            "CFA",\r
-            "vestafrikanske CFA-franc",\r
-        }\r
-        XPD{\r
-            "XPD",\r
-            "palladium",\r
-        }\r
-        XPF{\r
-            "XPF",\r
-            "CFP-franc",\r
-        }\r
-        XPT{\r
-            "XPT",\r
-            "platina",\r
-        }\r
-        XRE{\r
-            "XRE",\r
-            "RINET-fond",\r
-        }\r
-        XSU{\r
-            "XSU",\r
-            "sucre",\r
-        }\r
-        XTS{\r
-            "XTS",\r
-            "testvalutakode",\r
-        }\r
-        XUA{\r
-            "XUA",\r
-            "ADB-kontoenhet",\r
-        }\r
-        XXX{\r
-            "XXX",\r
-            "ukjent valuta",\r
-        }\r
-        YDD{\r
-            "YDD",\r
-            "jemenittiske dinarer",\r
-        }\r
-        YER{\r
-            "YER",\r
-            "jemenittiske rialer",\r
-        }\r
-        YUD{\r
-            "YUD",\r
-            "jugoslaviske dinarer (hard)",\r
-        }\r
-        YUM{\r
-            "YUM",\r
-            "jugoslaviske noviy-dinarer",\r
-        }\r
-        YUN{\r
-            "YUN",\r
-            "jugoslaviske konvertible dinarer",\r
-        }\r
-        YUR{\r
-            "YUR",\r
-            "jugoslaviske reformerte dinarer (1992–1993)",\r
-        }\r
-        ZAL{\r
-            "ZAL",\r
-            "sørafrikanske rand (finansielle)",\r
-        }\r
-        ZAR{\r
-            "ZAR",\r
-            "sørafrikanske rand",\r
-        }\r
-        ZMK{\r
-            "ZMK",\r
-            "zambiske kwacha (1968–2012)",\r
-        }\r
-        ZMW{\r
-            "ZMW",\r
-            "zambiske kwacha",\r
-        }\r
-        ZRN{\r
-            "ZRN",\r
-            "zairiske nye zaire",\r
-        }\r
-        ZRZ{\r
-            "ZRZ",\r
-            "zairiske zaire",\r
-        }\r
-        ZWD{\r
-            "ZWD",\r
-            "zimbabwiske dollar (1980–2008)",\r
-        }\r
-        ZWL{\r
-            "ZWL",\r
-            "zimbabwisk dollar (2009)",\r
-        }\r
-        ZWR{\r
-            "ZWR",\r
-            "zimbabwisk dollar (2008)",\r
-        }\r
-    }\r
-    Currencies%narrow{\r
-        AOA{"Kz"}\r
-        ARS{"$"}\r
-        AUD{"$"}\r
-        BAM{"KM"}\r
-        BBD{"$"}\r
-        BDT{"৳"}\r
-        BMD{"$"}\r
-        BND{"$"}\r
-        BOB{"Bs"}\r
-        BRL{"R$"}\r
-        BSD{"$"}\r
-        BWP{"P"}\r
-        BYN{"р."}\r
-        BZD{"$"}\r
-        CAD{"$"}\r
-        CLP{"$"}\r
-        CNY{"¥"}\r
-        COP{"$"}\r
-        CRC{"₡"}\r
-        CUC{"$"}\r
-        CUP{"$"}\r
-        CZK{"Kč"}\r
-        DKK{"kr"}\r
-        DOP{"$"}\r
-        EGP{"E£"}\r
-        EUR{"€"}\r
-        FJD{"$"}\r
-        FKP{"£"}\r
-        GBP{"£"}\r
-        GEL{"₾"}\r
-        GIP{"£"}\r
-        GNF{"FG"}\r
-        GTQ{"Q"}\r
-        GYD{"$"}\r
-        HKD{"$"}\r
-        HNL{"L"}\r
-        HRK{"kn"}\r
-        HUF{"Ft"}\r
-        IDR{"Rp"}\r
-        ILS{"₪"}\r
-        INR{"₹"}\r
-        ISK{"kr"}\r
-        JMD{"$"}\r
-        JPY{"¥"}\r
-        KHR{"៛"}\r
-        KMF{"CF"}\r
-        KPW{"₩"}\r
-        KRW{"₩"}\r
-        KYD{"$"}\r
-        KZT{"₸"}\r
-        LAK{"₭"}\r
-        LBP{"L£"}\r
-        LKR{"Rs"}\r
-        LRD{"$"}\r
-        LTL{"Lt"}\r
-        LVL{"Ls"}\r
-        MGA{"Ar"}\r
-        MMK{"K"}\r
-        MNT{"₮"}\r
-        MUR{"Rs"}\r
-        MXN{"$"}\r
-        MYR{"RM"}\r
-        NAD{"$"}\r
-        NGN{"₦"}\r
-        NIO{"C$"}\r
-        NOK{"kr"}\r
-        NPR{"Rs"}\r
-        NZD{"$"}\r
-        PHP{"₱"}\r
-        PKR{"Rs"}\r
-        PLN{"zł"}\r
-        PYG{"₲"}\r
-        RON{"L"}\r
-        RUB{"₽"}\r
-        RWF{"RF"}\r
-        SBD{"$"}\r
-        SEK{"kr"}\r
-        SGD{"$"}\r
-        SHP{"£"}\r
-        SRD{"$"}\r
-        SSP{"£"}\r
-        SYP{"£"}\r
-        THB{"฿"}\r
-        TOP{"T$"}\r
-        TRY{"₺"}\r
-        TTD{"$"}\r
-        TWD{"NT$"}\r
-        UAH{"₴"}\r
-        USD{"$"}\r
-        UYU{"$"}\r
-        VEF{"Bs"}\r
-        VND{"₫"}\r
-        XCD{"$"}\r
-        ZAR{"R"}\r
-        ZMW{"ZK"}\r
-    }\r
-    Currencies%variant{\r
-        GEL{"₾"}\r
-        TRY{"TL"}\r
-    }\r
-    CurrencyPlurals{\r
-        ADP{\r
-            one{"andorransk pesetas"}\r
-            other{"andorranske pesetas"}\r
-        }\r
-        AED{\r
-            one{"emiratarabisk dirham"}\r
-            other{"emiratarabiske dirham"}\r
-        }\r
-        AFA{\r
-            one{"afghansk afghani (1927–2002)"}\r
-            other{"afghanske afghani (1927–2002)"}\r
-        }\r
-        AFN{\r
-            one{"afghansk afghani"}\r
-            other{"afghanske afghani"}\r
-        }\r
-        ALK{\r
-            one{"albansk lek (1946–1965)"}\r
-            other{"albanske lek (1946–1965)"}\r
-        }\r
-        ALL{\r
-            one{"albansk lek"}\r
-            other{"albanske lek"}\r
-        }\r
-        AMD{\r
-            one{"armensk dram"}\r
-            other{"armenske dram"}\r
-        }\r
-        ANG{\r
-            one{"nederlandsk antillegylden"}\r
-            other{"nederlandske antillegylden"}\r
-        }\r
-        AOA{\r
-            one{"angolansk kwanza"}\r
-            other{"angolanske kwanza"}\r
-        }\r
-        AOK{\r
-            one{"angolansk kwanza (1977–1990)"}\r
-            other{"angolanske kwanza (1977–1990)"}\r
-        }\r
-        AON{\r
-            one{"angolansk ny kwanza"}\r
-            other{"angolanske nye kwanza (1990–2000)"}\r
-        }\r
-        AOR{\r
-            one{"angolansk kwanza reajustado (1995–1999)"}\r
-            other{"angolanske omjusterte kwanza (1995–1999)"}\r
-        }\r
-        ARA{\r
-            one{"argentinsk austral"}\r
-            other{"argentinske australer"}\r
-        }\r
-        ARL{\r
-            one{"argentinsk peso ley"}\r
-            other{"argentinske peso ley"}\r
-        }\r
-        ARM{\r
-            one{"argentinsk pesos (1881–1970)"}\r
-            other{"argentinske pesos (1881–1970)"}\r
-        }\r
-        ARP{\r
-            one{"argentinsk pesos (1983–1985)"}\r
-            other{"argentinske pesos (1983–1985)"}\r
-        }\r
-        ARS{\r
-            one{"argentinsk peso"}\r
-            other{"argentinske pesos"}\r
-        }\r
-        ATS{\r
-            one{"østerriksk schilling"}\r
-            other{"østerrikske schilling"}\r
-        }\r
-        AUD{\r
-            one{"australsk dollar"}\r
-            other{"australske dollar"}\r
-        }\r
-        AWG{\r
-            one{"arubisk florin"}\r
-            other{"arubiske floriner"}\r
-        }\r
-        AZM{\r
-            one{"aserbajdsjansk manat (1993–2006)"}\r
-            other{"aserbajdsjanske manat (1993–2006)"}\r
-        }\r
-        AZN{\r
-            one{"aserbajdsjansk manat"}\r
-            other{"aserbajdsjanske manat"}\r
-        }\r
-        BAD{\r
-            one{"bosnisk-hercegovinsk dinar (1992–1994)"}\r
-            other{"bosnisk-hercegovinske dinarer (1992–1994)"}\r
-        }\r
-        BAM{\r
-            one{"bosnisk-hercegovinsk konvertibel mark"}\r
-            other{"bosnisk-hercegovinske konvertible mark"}\r
-        }\r
-        BAN{\r
-            one{"ny bosnisk-hercegovinsk dinar (1994–1997)"}\r
-            other{"nye bosnisk-hercegovinske dinarer (1994–1997)"}\r
-        }\r
-        BBD{\r
-            one{"barbadisk dollar"}\r
-            other{"barbadiske dollar"}\r
-        }\r
-        BDT{\r
-            one{"bangladeshisk taka"}\r
-            other{"bangladeshiske taka"}\r
-        }\r
-        BEC{\r
-            one{"belgisk franc (konvertibel)"}\r
-            other{"belgiske franc (konvertible)"}\r
-        }\r
-        BEF{\r
-            one{"belgisk franc"}\r
-            other{"belgiske franc"}\r
-        }\r
-        BEL{\r
-            one{"belgisk franc (finansiell)"}\r
-            other{"belgiske franc (finansielle)"}\r
-        }\r
-        BGL{\r
-            one{"bulgarsk lev (hard)"}\r
-            other{"bulgarske lev (hard)"}\r
-        }\r
-        BGM{\r
-            one{"bulgarsk lev (sosialist)"}\r
-            other{"bulgarske lev (sosialist)"}\r
-        }\r
-        BGN{\r
-            one{"bulgarsk lev"}\r
-            other{"bulgarske lev"}\r
-        }\r
-        BGO{\r
-            one{"bulgarsk lev (1879–1952)"}\r
-            other{"bulgarske lev (1879–1952)"}\r
-        }\r
-        BHD{\r
-            one{"bahrainsk dinar"}\r
-            other{"bahrainske dinarer"}\r
-        }\r
-        BIF{\r
-            one{"burundisk franc"}\r
-            other{"burundiske franc"}\r
-        }\r
-        BMD{\r
-            one{"bermudisk dollar"}\r
-            other{"bermudiske dollar"}\r
-        }\r
-        BND{\r
-            one{"bruneisk dollar"}\r
-            other{"bruneiske dollar"}\r
-        }\r
-        BOB{\r
-            one{"boliviansk boliviano"}\r
-            other{"bolivianske boliviano"}\r
-        }\r
-        BOL{\r
-            one{"boliviansk boliviano (1863–1963)"}\r
-            other{"bolivianske boliviano (1863–1963)"}\r
-        }\r
-        BOP{\r
-            one{"boliviansk pesos"}\r
-            other{"bolivianske pesos"}\r
-        }\r
-        BOV{\r
-            one{"bolivianske mvdol"}\r
-            other{"bolivianske mvdol"}\r
-        }\r
-        BRB{\r
-            one{"brasiliansk cruzeiro novo (1967–1986)"}\r
-            other{"brasilianske cruzeiro novo (1967–1986)"}\r
-        }\r
-        BRC{\r
-            one{"brasiliansk cruzado (1986–1989)"}\r
-            other{"brasilianske cruzado (1986–1989)"}\r
-        }\r
-        BRE{\r
-            one{"brasiliansk cruzeiro (1990–1993)"}\r
-            other{"brasilianske cruzeiro (1990–1993)"}\r
-        }\r
-        BRL{\r
-            one{"brasiliansk real"}\r
-            other{"brasilianske real"}\r
-        }\r
-        BRN{\r
-            one{"brasiliansk cruzado novo (1989–1990)"}\r
-            other{"brasilianske cruzado novo (1989–1990)"}\r
-        }\r
-        BRR{\r
-            one{"brasiliansk cruzeiro (1993–1994)"}\r
-            other{"brasilianske cruzeiro (1993–1994)"}\r
-        }\r
-        BRZ{\r
-            one{"brasiliansk cruzeiro (1942–1967)"}\r
-            other{"brasilianske cruzeiro (1942–1967)"}\r
-        }\r
-        BSD{\r
-            one{"bahamansk dollar"}\r
-            other{"bahamanske dollar"}\r
-        }\r
-        BTN{\r
-            one{"bhutansk ngultrum"}\r
-            other{"bhutanske ngultrum"}\r
-        }\r
-        BUK{\r
-            one{"burmesisk kyat"}\r
-            other{"burmesiske kyat"}\r
-        }\r
-        BWP{\r
-            one{"botswansk pula"}\r
-            other{"botswanske pula"}\r
-        }\r
-        BYB{\r
-            one{"hviterussisk ny rubel (1994–1999)"}\r
-            other{"hviterussiske nye rubler (1994–1999)"}\r
-        }\r
-        BYN{\r
-            one{"ny hviterussisk rubel"}\r
-            other{"nye hviterussiske rubler"}\r
-        }\r
-        BYR{\r
-            one{"hviterussisk rubel (2000–2016)"}\r
-            other{"hviterussiske rubler (2000–2016)"}\r
-        }\r
-        BZD{\r
-            one{"belizisk dollar"}\r
-            other{"beliziske dollar"}\r
-        }\r
-        CAD{\r
-            one{"kanadisk dollar"}\r
-            other{"kanadiske dollar"}\r
-        }\r
-        CDF{\r
-            one{"kongolesisk franc"}\r
-            other{"kongolesiske franc"}\r
-        }\r
-        CHF{\r
-            one{"sveitsisk franc"}\r
-            other{"sveitsiske franc"}\r
-        }\r
-        CLE{\r
-            one{"chilensk escudo"}\r
-            other{"chilenske escudo"}\r
-        }\r
-        CLF{\r
-            one{"chilensk unidades de fomento"}\r
-            other{"chilenske unidades de fomento"}\r
-        }\r
-        CLP{\r
-            one{"chilensk peso"}\r
-            other{"chilenske pesos"}\r
-        }\r
-        CNH{\r
-            one{"kinesisk yuan (offshore)"}\r
-            other{"kinesiske yuan (offshore)"}\r
-        }\r
-        CNX{\r
-            one{"Kinas folkebank dollar"}\r
-            other{"Kinas folkebank dollar"}\r
-        }\r
-        CNY{\r
-            one{"kinesisk yuan"}\r
-            other{"kinesiske yuan"}\r
-        }\r
-        COP{\r
-            one{"colombiansk peso"}\r
-            other{"colombianske pesos"}\r
-        }\r
-        COU{\r
-            one{"colombiansk unidad de valor real"}\r
-            other{"colombianske unidad de valor real"}\r
-        }\r
-        CRC{\r
-            one{"costaricansk colón"}\r
-            other{"costaricanske colón"}\r
-        }\r
-        CSD{\r
-            one{"serbisk dinar (2002–2006)"}\r
-            other{"serbiske dinarer (2002–2006)"}\r
-        }\r
-        CSK{\r
-            one{"tsjekkoslovakisk koruna (hard)"}\r
-            other{"tsjekkoslovakiske koruna (hard)"}\r
-        }\r
-        CUC{\r
-            one{"kubansk konvertibel peso"}\r
-            other{"kubanske konvertible pesos"}\r
-        }\r
-        CUP{\r
-            one{"kubansk peso"}\r
-            other{"kubanske pesos"}\r
-        }\r
-        CVE{\r
-            one{"kappverdisk escudo"}\r
-            other{"kappverdiske escudos"}\r
-        }\r
-        CYP{\r
-            one{"kypriotisk pund"}\r
-            other{"kypriotiske pund"}\r
-        }\r
-        CZK{\r
-            one{"tsjekkisk koruna"}\r
-            other{"tsjekkiske koruna"}\r
-        }\r
-        DDM{\r
-            one{"østtysk mark"}\r
-            other{"østtyske mark"}\r
-        }\r
-        DEM{\r
-            one{"tysk mark"}\r
-            other{"tyske mark"}\r
-        }\r
-        DJF{\r
-            one{"djiboutisk franc"}\r
-            other{"djiboutiske franc"}\r
-        }\r
-        DKK{\r
-            one{"dansk krone"}\r
-            other{"danske kroner"}\r
-        }\r
-        DOP{\r
-            one{"dominikansk peso"}\r
-            other{"dominikanske pesos"}\r
-        }\r
-        DZD{\r
-            one{"algerisk dinar"}\r
-            other{"algeriske dinarer"}\r
-        }\r
-        ECS{\r
-            one{"ecuadoriansk sucre"}\r
-            other{"ecuadorianske sucre"}\r
-        }\r
-        ECV{\r
-            one{"ecuadoriansk unidad de valor constante (UVC)"}\r
-            other{"ecuadorianske unidad de valor constante (UVC)"}\r
-        }\r
-        EEK{\r
-            one{"estisk kroon"}\r
-            other{"estiske kroner"}\r
-        }\r
-        EGP{\r
-            one{"egyptisk pund"}\r
-            other{"egyptiske pund"}\r
-        }\r
-        ERN{\r
-            one{"eritreisk nakfa"}\r
-            other{"eritreiske nakfa"}\r
-        }\r
-        ESA{\r
-            one{"spansk peseta (A–konto)"}\r
-            other{"spanske peseta (A–konto)"}\r
-        }\r
-        ESB{\r
-            one{"spansk peseta (konvertibel konto)"}\r
-            other{"spanske peseta (konvertibel konto)"}\r
-        }\r
-        ESP{\r
-            one{"spansk peseta"}\r
-            other{"spanske peseta"}\r
-        }\r
-        ETB{\r
-            one{"etiopisk birr"}\r
-            other{"etiopiske birr"}\r
-        }\r
-        EUR{\r
-            one{"euro"}\r
-            other{"euro"}\r
-        }\r
-        FIM{\r
-            one{"finsk mark"}\r
-            other{"finske mark"}\r
-        }\r
-        FJD{\r
-            one{"fijiansk dollar"}\r
-            other{"fijianske dollar"}\r
-        }\r
-        FKP{\r
-            one{"falklandspund"}\r
-            other{"falklandspund"}\r
-        }\r
-        FRF{\r
-            one{"fransk franc"}\r
-            other{"franske franc"}\r
-        }\r
-        GBP{\r
-            one{"britisk pund"}\r
-            other{"britiske pund"}\r
-        }\r
-        GEK{\r
-            one{"georgisk kupon larit"}\r
-            other{"georgiske kupon larit"}\r
-        }\r
-        GEL{\r
-            one{"georgisk lari"}\r
-            other{"georgiske lari"}\r
-        }\r
-        GHC{\r
-            one{"ghanesisk cedi (1979–2007)"}\r
-            other{"ghanesiske cedi (1979–2007)"}\r
-        }\r
-        GHS{\r
-            one{"ghanesisk cedi"}\r
-            other{"ghanesiske cedi"}\r
-        }\r
-        GIP{\r
-            one{"gibraltarsk pund"}\r
-            other{"gibraltarske pund"}\r
-        }\r
-        GMD{\r
-            one{"gambisk dalasi"}\r
-            other{"gambiske dalasi"}\r
-        }\r
-        GNF{\r
-            one{"guineansk franc"}\r
-            other{"guineanske franc"}\r
-        }\r
-        GNS{\r
-            one{"guineansk syli"}\r
-            other{"guineanske syli"}\r
-        }\r
-        GQE{\r
-            one{"ekvatorialguineansk ekwele guineana"}\r
-            other{"ekvatorialguineanske ekwele guineana"}\r
-        }\r
-        GRD{\r
-            one{"gresk drakme"}\r
-            other{"greske drakmer"}\r
-        }\r
-        GTQ{\r
-            one{"guatemalansk quetzal"}\r
-            other{"guatemalanske quetzal"}\r
-        }\r
-        GWE{\r
-            one{"portugisisk guinea escudo"}\r
-            other{"portugisiske guinea escudo"}\r
-        }\r
-        GWP{\r
-            one{"Guinea-Bissau-pesos"}\r
-            other{"Guinea-Bissau-pesos"}\r
-        }\r
-        GYD{\r
-            one{"guyansk dollar"}\r
-            other{"guyanske dollar"}\r
-        }\r
-        HKD{\r
-            one{"Hongkong-dollar"}\r
-            other{"Hongkong-dollar"}\r
-        }\r
-        HNL{\r
-            one{"honduransk lempira"}\r
-            other{"honduranske lempira"}\r
-        }\r
-        HRD{\r
-            one{"kroatisk dinar"}\r
-            other{"kroatiske dinarer"}\r
-        }\r
-        HRK{\r
-            one{"kroatisk kuna"}\r
-            other{"kroatiske kuna"}\r
-        }\r
-        HTG{\r
-            one{"haitisk gourde"}\r
-            other{"haitiske gourde"}\r
-        }\r
-        HUF{\r
-            one{"ungarsk forint"}\r
-            other{"ungarske forinter"}\r
-        }\r
-        IDR{\r
-            one{"indonesisk rupi"}\r
-            other{"indonesiske rupier"}\r
-        }\r
-        IEP{\r
-            one{"irsk pund"}\r
-            other{"irske pund"}\r
-        }\r
-        ILP{\r
-            one{"israelsk pund"}\r
-            other{"israelske pund"}\r
-        }\r
-        ILR{\r
-            one{"israelsk shekel (1980–1985)"}\r
-            other{"israelske shekler (1980–1985)"}\r
-        }\r
-        ILS{\r
-            one{"ny israelsk shekel"}\r
-            other{"nye israelske shekler"}\r
-        }\r
-        INR{\r
-            one{"indisk rupi"}\r
-            other{"indiske rupier"}\r
-        }\r
-        IQD{\r
-            one{"iraksk dinar"}\r
-            other{"irakske dinarer"}\r
-        }\r
-        IRR{\r
-            one{"iransk rial"}\r
-            other{"iranske rialer"}\r
-        }\r
-        ISJ{\r
-            one{"islandsk krone (1918–1981)"}\r
-            other{"islandske kroner (1918–1981)"}\r
-        }\r
-        ISK{\r
-            one{"islandsk krone"}\r
-            other{"islandske kroner"}\r
-        }\r
-        ITL{\r
-            one{"italiensk lire"}\r
-            other{"italienske lire"}\r
-        }\r
-        JMD{\r
-            one{"jamaikansk dollar"}\r
-            other{"jamaikanske dollar"}\r
-        }\r
-        JOD{\r
-            one{"jordansk dinar"}\r
-            other{"jordanske dinarer"}\r
-        }\r
-        JPY{\r
-            one{"japansk yen"}\r
-            other{"japanske yen"}\r
-        }\r
-        KES{\r
-            one{"kenyansk shilling"}\r
-            other{"kenyanske shilling"}\r
-        }\r
-        KGS{\r
-            one{"kirgisisk som"}\r
-            other{"kirgisiske som"}\r
-        }\r
-        KHR{\r
-            one{"kambodsjansk riel"}\r
-            other{"kambodsjanske riel"}\r
-        }\r
-        KMF{\r
-            one{"komorisk franc"}\r
-            other{"komoriske franc"}\r
-        }\r
-        KPW{\r
-            one{"nordkoreansk won"}\r
-            other{"nordkoreanske won"}\r
-        }\r
-        KRH{\r
-            one{"sørkoreansk hwan (1953–1962)"}\r
-            other{"sørkoreanske hwan (1953–1962)"}\r
-        }\r
-        KRO{\r
-            one{"sørkoreansk won (1945–1953)"}\r
-            other{"sørkoreanske won (1945–1953)"}\r
-        }\r
-        KRW{\r
-            one{"sørkoreansk won"}\r
-            other{"sørkoreanske won"}\r
-        }\r
-        KWD{\r
-            one{"kuwaitisk dinar"}\r
-            other{"kuwaitiske dinarer"}\r
-        }\r
-        KYD{\r
-            one{"caymansk dollar"}\r
-            other{"caymanske dollar"}\r
-        }\r
-        KZT{\r
-            one{"kasakhstansk tenge"}\r
-            other{"kasakhstanske tenge"}\r
-        }\r
-        LAK{\r
-            one{"laotisk kip"}\r
-            other{"laotiske kip"}\r
-        }\r
-        LBP{\r
-            one{"libanesisk pund"}\r
-            other{"libanesiske pund"}\r
-        }\r
-        LKR{\r
-            one{"srilankisk rupi"}\r
-            other{"srilankiske rupier"}\r
-        }\r
-        LRD{\r
-            one{"liberisk dollar"}\r
-            other{"liberiske dollar"}\r
-        }\r
-        LSL{\r
-            one{"lesothisk loti"}\r
-            other{"lesothiske loti"}\r
-        }\r
-        LTL{\r
-            one{"litauisk lita"}\r
-            other{"litauiske lita"}\r
-        }\r
-        LTT{\r
-            one{"litauisk talonas"}\r
-            other{"litauiske talonas"}\r
-        }\r
-        LUC{\r
-            one{"luxemburgsk konvertibel franc"}\r
-            other{"luxemburgske konvertible franc"}\r
-        }\r
-        LUF{\r
-            one{"luxemburgsk franc"}\r
-            other{"luxemburgske franc"}\r
-        }\r
-        LUL{\r
-            one{"luxemburgsk finansiell franc"}\r
-            other{"luxemburgske finansielle franc"}\r
-        }\r
-        LVL{\r
-            one{"latvisk lats"}\r
-            other{"latviske lats"}\r
-        }\r
-        LVR{\r
-            one{"latvisk rubel"}\r
-            other{"latviske rubler"}\r
-        }\r
-        LYD{\r
-            one{"libysk dinar"}\r
-            other{"libyske dinarer"}\r
-        }\r
-        MAD{\r
-            one{"marokkansk dirham"}\r
-            other{"marokkanske dirham"}\r
-        }\r
-        MAF{\r
-            one{"marokkansk franc"}\r
-            other{"marokkanske franc"}\r
-        }\r
-        MCF{\r
-            one{"monegaskisk franc"}\r
-            other{"monegaskiske franc"}\r
-        }\r
-        MDC{\r
-            one{"moldovsk cupon"}\r
-            other{"moldovske cupon"}\r
-        }\r
-        MDL{\r
-            one{"moldovsk leu"}\r
-            other{"moldovske lei"}\r
-        }\r
-        MGA{\r
-            one{"madagassisk ariary"}\r
-            other{"madagassiske ariary"}\r
-        }\r
-        MGF{\r
-            one{"madagassisk franc"}\r
-            other{"madagassiske franc"}\r
-        }\r
-        MKD{\r
-            one{"makedonsk denar"}\r
-            other{"makedonske denarer"}\r
-        }\r
-        MKN{\r
-            one{"makedonsk denar (1992–1993)"}\r
-            other{"makedonske denarer (1992–1993)"}\r
-        }\r
-        MLF{\r
-            one{"malisk franc"}\r
-            other{"maliske franc"}\r
-        }\r
-        MMK{\r
-            one{"myanmarsk kyat"}\r
-            other{"myanmarske kyat"}\r
-        }\r
-        MNT{\r
-            one{"mongolsk tugrik"}\r
-            other{"mongolske tugrik"}\r
-        }\r
-        MOP{\r
-            one{"makaoisk pataca"}\r
-            other{"makaoiske pataca"}\r
-        }\r
-        MRO{\r
-            one{"mauritansk ouguiya (1973–2017)"}\r
-            other{"mauritanske ouguiya (1973–2017)"}\r
-        }\r
-        MRU{\r
-            one{"mauritansk ouguiya"}\r
-            other{"mauritanske ouguiya"}\r
-        }\r
-        MTL{\r
-            one{"maltesisk lira"}\r
-            other{"maltesiske lira"}\r
-        }\r
-        MTP{\r
-            one{"maltesisk pund"}\r
-            other{"maltesiske pund"}\r
-        }\r
-        MUR{\r
-            one{"mauritisk rupi"}\r
-            other{"mauritiske rupier"}\r
-        }\r
-        MVP{\r
-            one{"maldivisk rupi"}\r
-            other{"maldiviske rupier"}\r
-        }\r
-        MVR{\r
-            one{"maldivisk rufiyaa"}\r
-            other{"maldiviske rufiyaa"}\r
-        }\r
-        MWK{\r
-            one{"malawisk kwacha"}\r
-            other{"malawiske kwacha"}\r
-        }\r
-        MXN{\r
-            one{"meksikansk peso"}\r
-            other{"meksikanske pesos"}\r
-        }\r
-        MXP{\r
-            one{"meksikansk sølvpesos (1860–1992)"}\r
-            other{"meksikanske sølvpesos (1860–1992)"}\r
-        }\r
-        MXV{\r
-            one{"meksikansk unidad de inversion (UDI)"}\r
-            other{"meksikanske unidad de inversion (UDI)"}\r
-        }\r
-        MYR{\r
-            one{"malaysisk ringgit"}\r
-            other{"malaysiske ringgit"}\r
-        }\r
-        MZE{\r
-            one{"mosambikisk escudo"}\r
-            other{"mosambikiske escudo"}\r
-        }\r
-        MZM{\r
-            one{"gammel mosambikisk metical"}\r
-            other{"gamle mosambikiske metical"}\r
-        }\r
-        MZN{\r
-            one{"mosambikisk metical"}\r
-            other{"mosambikiske metical"}\r
-        }\r
-        NAD{\r
-            one{"namibisk dollar"}\r
-            other{"namibiske dollar"}\r
-        }\r
-        NGN{\r
-            one{"nigeriansk naira"}\r
-            other{"nigerianske naira"}\r
-        }\r
-        NIC{\r
-            one{"nicaraguansk cordoba (1988–1991)"}\r
-            other{"nicaraguanske cordoba (1988–1991)"}\r
-        }\r
-        NIO{\r
-            one{"nicaraguansk córdoba"}\r
-            other{"nicaraguanske córdoba"}\r
-        }\r
-        NLG{\r
-            one{"nederlandsk gylden"}\r
-            other{"nederlandske gylden"}\r
-        }\r
-        NOK{\r
-            one{"norsk krone"}\r
-            other{"norske kroner"}\r
-        }\r
-        NPR{\r
-            one{"nepalsk rupi"}\r
-            other{"nepalske rupier"}\r
-        }\r
-        NZD{\r
-            one{"newzealandsk dollar"}\r
-            other{"newzealandske dollar"}\r
-        }\r
-        OMR{\r
-            one{"omansk rial"}\r
-            other{"omanske rialer"}\r
-        }\r
-        PAB{\r
-            one{"panamansk balboa"}\r
-            other{"panamanske balboa"}\r
-        }\r
-        PEI{\r
-            one{"peruansk inti"}\r
-            other{"peruanske inti"}\r
-        }\r
-        PEN{\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
-        }\r
-        PHP{\r
-            one{"filippinsk peso"}\r
-            other{"filippinske pesos"}\r
-        }\r
-        PKR{\r
-            one{"pakistansk rupi"}\r
-            other{"pakistanske rupier"}\r
-        }\r
-        PLN{\r
-            one{"polsk zloty"}\r
-            other{"polske zloty"}\r
-        }\r
-        PLZ{\r
-            one{"polsk zloty (1950–1995)"}\r
-            other{"polske zloty (1950–1995)"}\r
-        }\r
-        PTE{\r
-            one{"portugisisk escudo"}\r
-            other{"portugisiske escudo"}\r
-        }\r
-        PYG{\r
-            one{"paraguayansk guarani"}\r
-            other{"paraguayanske guarani"}\r
-        }\r
-        QAR{\r
-            one{"qatarsk rial"}\r
-            other{"qatarske rialer"}\r
-        }\r
-        RHD{\r
-            one{"rhodesisk dollar"}\r
-            other{"rhodesiske dollar"}\r
-        }\r
-        ROL{\r
-            one{"rumensk leu (1952–2006)"}\r
-            other{"rumenske leu (1952–2006)"}\r
-        }\r
-        RON{\r
-            one{"rumensk leu"}\r
-            other{"rumenske lei"}\r
-        }\r
-        RSD{\r
-            one{"serbisk dinar"}\r
-            other{"serbiske dinarer"}\r
-        }\r
-        RUB{\r
-            one{"russisk rubel"}\r
-            other{"russiske rubler"}\r
-        }\r
-        RUR{\r
-            one{"russisk rubel (1991–1998)"}\r
-            other{"russiske rubler (1991–1998)"}\r
-        }\r
-        RWF{\r
-            one{"rwandisk franc"}\r
-            other{"rwandiske franc"}\r
-        }\r
-        SAR{\r
-            one{"saudiarabisk riyal"}\r
-            other{"saudiarabiske riyaler"}\r
-        }\r
-        SBD{\r
-            one{"salomonsk dollar"}\r
-            other{"salomonske dollar"}\r
-        }\r
-        SCR{\r
-            one{"seychellisk rupi"}\r
-            other{"seychelliske rupier"}\r
-        }\r
-        SDD{\r
-            one{"sudanesisk dinar (1992–2007)"}\r
-            other{"sudanesiske dinarer (1992–2007)"}\r
-        }\r
-        SDG{\r
-            one{"sudansk pund"}\r
-            other{"sudanske pund"}\r
-        }\r
-        SDP{\r
-            one{"sudansk pund (1957–1998)"}\r
-            other{"sudanske pund (1957–1998)"}\r
-        }\r
-        SEK{\r
-            one{"svensk krone"}\r
-            other{"svenske kroner"}\r
-        }\r
-        SGD{\r
-            one{"singaporsk dollar"}\r
-            other{"singaporske dollar"}\r
-        }\r
-        SHP{\r
-            one{"sankthelensk pund"}\r
-            other{"sankthelenske pund"}\r
-        }\r
-        SIT{\r
-            one{"slovensk tolar"}\r
-            other{"slovenske tolar"}\r
-        }\r
-        SKK{\r
-            one{"slovakisk koruna"}\r
-            other{"slovakiske koruna"}\r
-        }\r
-        SLL{\r
-            one{"sierraleonsk leone"}\r
-            other{"sierraleonske leone"}\r
-        }\r
-        SOS{\r
-            one{"somalisk shilling"}\r
-            other{"somaliske shilling"}\r
-        }\r
-        SRD{\r
-            one{"surinamsk dollar"}\r
-            other{"surinamske dollar"}\r
-        }\r
-        SRG{\r
-            one{"surinamsk gylden"}\r
-            other{"surinamske gylden"}\r
-        }\r
-        SSP{\r
-            one{"sørsudansk pund"}\r
-            other{"sørsudanske pund"}\r
-        }\r
-        STD{\r
-            one{"saotomesisk dobra (1977–2017)"}\r
-            other{"saotomesiske dobra (1977–2017)"}\r
-        }\r
-        STN{\r
-            one{"saotomesisk dobra"}\r
-            other{"saotomesiske dobra"}\r
-        }\r
-        SUR{\r
-            one{"sovjetisk rubel"}\r
-            other{"sovjetiske rubler"}\r
-        }\r
-        SVC{\r
-            one{"salvadoransk colon"}\r
-            other{"salvadoranske colon"}\r
-        }\r
-        SYP{\r
-            one{"syrisk pund"}\r
-            other{"syriske pund"}\r
-        }\r
-        SZL{\r
-            one{"swazilandsk lilangeni"}\r
-            other{"swazilandske lilangeni"}\r
-        }\r
-        THB{\r
-            one{"thailandsk baht"}\r
-            other{"thailandske baht"}\r
-        }\r
-        TJR{\r
-            one{"tadsjikisk rubel"}\r
-            other{"tadsjikiske rubler"}\r
-        }\r
-        TJS{\r
-            one{"tadsjikisk somoni"}\r
-            other{"tadsjikiske somoni"}\r
-        }\r
-        TMM{\r
-            one{"turkmensk manat (1993–2009)"}\r
-            other{"turkmenske manat (1993–2009)"}\r
-        }\r
-        TMT{\r
-            one{"turkmensk manat"}\r
-            other{"turkmenske manat"}\r
-        }\r
-        TND{\r
-            one{"tunisisk dinar"}\r
-            other{"tunisiske dinarer"}\r
-        }\r
-        TOP{\r
-            one{"tongansk paʻanga"}\r
-            other{"tonganske paʻanga"}\r
-        }\r
-        TPE{\r
-            one{"timoresisk escudo"}\r
-            other{"timoresiske escudo"}\r
-        }\r
-        TRL{\r
-            one{"tyrkisk lire (1922–2005)"}\r
-            other{"tyrkiske lire (1922–2005)"}\r
-        }\r
-        TRY{\r
-            one{"tyrkisk lire"}\r
-            other{"tyrkiske lire"}\r
-        }\r
-        TTD{\r
-            one{"trinidadisk dollar"}\r
-            other{"trinidadiske dollar"}\r
-        }\r
-        TWD{\r
-            one{"ny taiwansk dollar"}\r
-            other{"nye taiwanske dollar"}\r
-        }\r
-        TZS{\r
-            one{"tanzaniansk shilling"}\r
-            other{"tanzanianske shilling"}\r
-        }\r
-        UAH{\r
-            one{"ukrainsk hryvnia"}\r
-            other{"ukrainske hryvnia"}\r
-        }\r
-        UAK{\r
-            one{"ukrainsk karbovanetz"}\r
-            other{"ukrainske karbovanetz"}\r
-        }\r
-        UGS{\r
-            one{"ugandisk shilling (1966–1987)"}\r
-            other{"ugandiske shilling (1966–1987)"}\r
-        }\r
-        UGX{\r
-            one{"ugandisk shilling"}\r
-            other{"ugandiske shilling"}\r
-        }\r
-        USD{\r
-            one{"amerikansk dollar"}\r
-            other{"amerikanske dollar"}\r
-        }\r
-        USN{\r
-            one{"amerikansk dollar (neste dag)"}\r
-            other{"amerikanske dollar (neste dag)"}\r
-        }\r
-        USS{\r
-            one{"amerikansk dollar (samme dag)"}\r
-            other{"amerikanske dollar (samme dag)"}\r
-        }\r
-        UYI{\r
-            one{"uruguyanske pesos (indekserte enheter)"}\r
-            other{"uruguyanske pesos (indekserte enheter)"}\r
-        }\r
-        UYP{\r
-            one{"uruguayansk peso (1975–1993)"}\r
-            other{"uruguayanske pesos (1975–1993)"}\r
-        }\r
-        UYU{\r
-            one{"uruguyansk peso"}\r
-            other{"uruguayanske pesos"}\r
-        }\r
-        UZS{\r
-            one{"usbekisk som"}\r
-            other{"usbekiske som"}\r
-        }\r
-        VEB{\r
-            one{"venezuelansk bolivar (1871–2008)"}\r
-            other{"venezuelanske bolivar (1871–2008)"}\r
-        }\r
-        VEF{\r
-            one{"venezuelansk bolivar (2008–2018)"}\r
-            other{"venezuelanske bolivar (2008–2018)"}\r
-        }\r
-        VES{\r
-            one{"venezuelansk bolivar"}\r
-            other{"venezuelanske bolivar"}\r
-        }\r
-        VND{\r
-            one{"vietnamesisk dong"}\r
-            other{"vietnamesiske dong"}\r
-        }\r
-        VNN{\r
-            one{"vietnamesisk dong (1978–1985)"}\r
-            other{"vietnamesiske dong (1978–1985)"}\r
-        }\r
-        VUV{\r
-            one{"vanuatisk vatu"}\r
-            other{"vanuatiske vatu"}\r
-        }\r
-        WST{\r
-            one{"samoansk tala"}\r
-            other{"samoanske tala"}\r
-        }\r
-        XAF{\r
-            one{"sentralafrikansk CFA-franc"}\r
-            other{"sentralafrikanske CFA-franc"}\r
-        }\r
-        XAG{\r
-            one{"unse sølv"}\r
-            other{"unser sølv"}\r
-        }\r
-        XAU{\r
-            one{"unse gull"}\r
-            other{"unser gull"}\r
-        }\r
-        XBA{\r
-            one{"europeisk sammensatt enhet"}\r
-            other{"europeiske sammensatte enheter"}\r
-        }\r
-        XBB{\r
-            one{"europeisk monetær enhet"}\r
-            other{"europeiske monetære enheter"}\r
-        }\r
-        XBC{\r
-            one{"europeisk kontoenhet (XBC)"}\r
-            other{"europeiske kontoenheter"}\r
-        }\r
-        XBD{\r
-            one{"europeisk kontoenhet (XBD)"}\r
-            other{"europeiske kontoenheter (XBD)"}\r
-        }\r
-        XCD{\r
-            one{"østkaribisk dollar"}\r
-            other{"østkaribiske dollar"}\r
-        }\r
-        XDR{\r
-            one{"spesiell trekkrettighet"}\r
-            other{"spesielle trekkrettigheter"}\r
-        }\r
-        XEU{\r
-            one{"europeisk valutaenhet"}\r
-            other{"europeiske valutaenheter"}\r
-        }\r
-        XFO{\r
-            one{"fransk gullfranc"}\r
-            other{"franske gullfranc"}\r
-        }\r
-        XFU{\r
-            one{"fransk UIC-franc"}\r
-            other{"franske UIC-franc"}\r
-        }\r
-        XOF{\r
-            one{"vestafrikansk CFA-franc"}\r
-            other{"vestafrikanske CFA-franc"}\r
-        }\r
-        XPD{\r
-            one{"unse palladium"}\r
-            other{"unser palladium"}\r
-        }\r
-        XPF{\r
-            one{"CFP-franc"}\r
-            other{"CFP-franc"}\r
-        }\r
-        XPT{\r
-            one{"unse platina"}\r
-            other{"unser platina"}\r
-        }\r
-        XSU{\r
-            one{"sucre"}\r
-            other{"sucre"}\r
-        }\r
-        XTS{\r
-            one{"testvaluta"}\r
-            other{"testvaluta"}\r
-        }\r
-        XUA{\r
-            one{"ADB-kontoenhet"}\r
-            other{"ADB-kontoenheter"}\r
-        }\r
-        XXX{\r
-            one{"(ukjent valuta)"}\r
-            other{"(ukjent valuta)"}\r
-        }\r
-        YDD{\r
-            one{"jemenittisk dinar"}\r
-            other{"jemenittiske dinarer"}\r
-        }\r
-        YER{\r
-            one{"jemenittisk rial"}\r
-            other{"jemenittiske rialer"}\r
-        }\r
-        YUD{\r
-            one{"jugoslavisk dinar (hard)"}\r
-            other{"jugoslaviske dinarer (hard)"}\r
-        }\r
-        YUM{\r
-            one{"jugoslavisk noviy-dinar"}\r
-            other{"jugoslaviske noviy-dinarer"}\r
-        }\r
-        YUN{\r
-            one{"jugoslavisk konvertibel dinar"}\r
-            other{"jugoslaviske konvertible dinarer"}\r
-        }\r
-        YUR{\r
-            one{"jugoslavisk reformert dinar (1992–1993)"}\r
-            other{"jugoslaviske reformerte dinarer (1992–1993)"}\r
-        }\r
-        ZAL{\r
-            one{"sørafrikansk rand (finansiell)"}\r
-            other{"sørafrikanske rand (finansielle)"}\r
-        }\r
-        ZAR{\r
-            one{"sørafrikansk rand"}\r
-            other{"sørafrikanske rand"}\r
-        }\r
-        ZMK{\r
-            one{"zambisk kwacha (1968–2012)"}\r
-            other{"zambiske kwacha (1968–2012)"}\r
-        }\r
-        ZMW{\r
-            one{"zambisk kwacha"}\r
-            other{"zambiske kwacha"}\r
-        }\r
-        ZRN{\r
-            one{"zairisk ny zaire"}\r
-            other{"zairiske nye zaire"}\r
-        }\r
-        ZRZ{\r
-            one{"zairisk zaire"}\r
-            other{"zairiske zaire"}\r
-        }\r
-        ZWD{\r
-            one{"zimbabwisk dollar (1980–2008)"}\r
-            other{"zimbabwiske dollar (1980–2008)"}\r
-        }\r
-        ZWL{\r
-            one{"zimbabwisk dollar (2009)"}\r
-            other{"zimbabwiske dollar (2009)"}\r
-        }\r
-        ZWR{\r
-            one{"zimbabwisk dollar (2008)"}\r
-            other{"zimbabwiske dollar (2008)"}\r
-        }\r
-    }\r
-    CurrencyUnitPatterns{\r
-        one{"{0} {1}"}\r
-        other{"{0} {1}"}\r
-    }\r
+    %%Parent{"no"}\r
 }\r
diff --git a/source/data/curr/nb_NO.txt b/source/data/curr/nb_NO.txt
deleted file mode 100644 (file)
index 3307fc3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html\r
-// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
-/**\r
- * generated alias target\r
- */\r
-nb_NO{\r
-    ___{""}\r
-}\r
index 7feb4c5..2952bb0 100644 (file)
@@ -216,7 +216,7 @@ nd{
             "Fulenki CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Fulenki CFA BCEAO",\r
         }\r
         ZAR{\r
index 39b4231..40b3ec3 100644 (file)
@@ -632,7 +632,7 @@ ne{
             "पूर्वी क्यारिबियन डलर",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "सीएफ्‌ए फ्रान्क बीसीइएओ",\r
         }\r
         XPF{\r
index c85d051..9cd09dc 100644 (file)
@@ -1120,7 +1120,7 @@ nl{
             "Franse UIC-franc",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA-franc BCEAO",\r
         }\r
         XPD{\r
index 96e5d49..dc2b83a 100644 (file)
@@ -216,7 +216,7 @@ nmg{
             "Fraŋ CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Fraŋ CFA BCEAO",\r
         }\r
         ZAR{\r
index 080c689..77a05fa 100644 (file)
@@ -2,39 +2,16 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nn{\r
+    %%Parent{"no"}\r
     Currencies{\r
         ADP{\r
             "ADP",\r
             "andorranske peseta",\r
         }\r
-        AED{\r
-            "AED",\r
-            "emiratarabiske dirham",\r
-        }\r
         AFA{\r
             "AFA",\r
             "afghani (1927–2002)",\r
         }\r
-        AFN{\r
-            "AFN",\r
-            "afghanske afghani",\r
-        }\r
-        ALL{\r
-            "ALL",\r
-            "albanske lek",\r
-        }\r
-        AMD{\r
-            "AMD",\r
-            "armenske dram",\r
-        }\r
-        ANG{\r
-            "ANG",\r
-            "nederlandske antillegylden",\r
-        }\r
-        AOA{\r
-            "AOA",\r
-            "angolanske kwanza",\r
-        }\r
         AOK{\r
             "AOK",\r
             "angolske kwanza (1977–1990)",\r
@@ -55,54 +32,22 @@ nn{
             "ARP",\r
             "argentinske peso (1983–1985)",\r
         }\r
-        ARS{\r
-            "ARS",\r
-            "argentinske pesos",\r
-        }\r
         ATS{\r
             "ATS",\r
             "austerrikske schilling",\r
         }\r
-        AUD{\r
-            "AUD",\r
-            "australske dollar",\r
-        }\r
-        AWG{\r
-            "AWG",\r
-            "arubiske floriner",\r
-        }\r
         AZM{\r
             "AZM",\r
             "aserbaijanske manat",\r
         }\r
-        AZN{\r
-            "AZN",\r
-            "aserbajdsjanske manat",\r
-        }\r
         BAD{\r
             "BAD",\r
             "bosnisk-hercegovinske dinarar",\r
         }\r
-        BAM{\r
-            "BAM",\r
-            "bosnisk-hercegovinske konvertible mark",\r
-        }\r
-        BBD{\r
-            "BBD",\r
-            "barbadiske dollar",\r
-        }\r
-        BDT{\r
-            "BDT",\r
-            "bangladeshiske taka",\r
-        }\r
         BEC{\r
             "BEC",\r
             "belgiske franc (konvertibel)",\r
         }\r
-        BEF{\r
-            "BEF",\r
-            "belgiske franc",\r
-        }\r
         BEL{\r
             "BEL",\r
             "belgiske franc (finansiell)",\r
@@ -111,30 +56,10 @@ nn{
             "BGL",\r
             "bulgarsk hard lev",\r
         }\r
-        BGN{\r
-            "BGN",\r
-            "bulgarske lev",\r
-        }\r
         BHD{\r
             "BHD",\r
             "bahrainske dinarar",\r
         }\r
-        BIF{\r
-            "BIF",\r
-            "burundiske franc",\r
-        }\r
-        BMD{\r
-            "BMD",\r
-            "bermudiske dollar",\r
-        }\r
-        BND{\r
-            "BND",\r
-            "bruneiske dollar",\r
-        }\r
-        BOB{\r
-            "BOB",\r
-            "bolivianske boliviano",\r
-        }\r
         BOP{\r
             "BOP",\r
             "boliviske peso",\r
@@ -151,14 +76,6 @@ nn{
             "BRC",\r
             "brasilianske cruzado",\r
         }\r
-        BRE{\r
-            "BRE",\r
-            "brasilianske cruzeiro (1990–1993)",\r
-        }\r
-        BRL{\r
-            "BRL",\r
-            "brasilianske real",\r
-        }\r
         BRN{\r
             "BRN",\r
             "brasilianske cruzado novo",\r
@@ -167,22 +84,10 @@ nn{
             "BRR",\r
             "brasilianske cruzeiro",\r
         }\r
-        BSD{\r
-            "BSD",\r
-            "bahamanske dollar",\r
-        }\r
-        BTN{\r
-            "BTN",\r
-            "bhutanske ngultrum",\r
-        }\r
         BUK{\r
             "BUK",\r
             "burmesisk kyat",\r
         }\r
-        BWP{\r
-            "BWP",\r
-            "botswanske pula",\r
-        }\r
         BYB{\r
             "BYB",\r
             "kviterussiske nye rublar (1994–1999)",\r
@@ -195,46 +100,6 @@ nn{
             "BYR",\r
             "kviterussiske rublar (2000–2016)",\r
         }\r
-        BZD{\r
-            "BZD",\r
-            "beliziske dollar",\r
-        }\r
-        CAD{\r
-            "CAD",\r
-            "kanadiske dollar",\r
-        }\r
-        CDF{\r
-            "CDF",\r
-            "kongolesiske franc",\r
-        }\r
-        CHE{\r
-            "CHE",\r
-            "WIR euro",\r
-        }\r
-        CHF{\r
-            "CHF",\r
-            "sveitsiske franc",\r
-        }\r
-        CHW{\r
-            "CHW",\r
-            "WIR franc",\r
-        }\r
-        CLF{\r
-            "CLF",\r
-            "chilenske unidades de fomento",\r
-        }\r
-        CLP{\r
-            "CLP",\r
-            "chilenske pesos",\r
-        }\r
-        CNH{\r
-            "CNH",\r
-            "kinesiske yuan (offshore)",\r
-        }\r
-        CNY{\r
-            "CNY",\r
-            "kinesiske yuan",\r
-        }\r
         COP{\r
             "COP",\r
             "kolombianske pesos",\r
@@ -251,190 +116,38 @@ nn{
             "CSD",\r
             "gamle serbiske dinarer",\r
         }\r
-        CSK{\r
-            "CSK",\r
-            "tsjekkoslovakiske koruna (hard)",\r
-        }\r
-        CUC{\r
-            "CUC",\r
-            "kubanske konvertible pesos",\r
-        }\r
-        CUP{\r
-            "CUP",\r
-            "kubanske pesos",\r
-        }\r
         CVE{\r
             "CVE",\r
             "kappverdiske escudo",\r
         }\r
-        CYP{\r
-            "CYP",\r
-            "kypriotiske pund",\r
-        }\r
-        CZK{\r
-            "CZK",\r
-            "tsjekkiske koruna",\r
-        }\r
         DDM{\r
             "DDM",\r
             "austtyske mark",\r
         }\r
-        DEM{\r
-            "DEM",\r
-            "tyske mark",\r
-        }\r
-        DJF{\r
-            "DJF",\r
-            "djiboutiske franc",\r
-        }\r
-        DKK{\r
-            "DKK",\r
-            "danske kroner",\r
-        }\r
-        DOP{\r
-            "DOP",\r
-            "dominikanske pesos",\r
-        }\r
         DZD{\r
             "DZD",\r
             "algeriske dinarar",\r
         }\r
-        ECS{\r
-            "ECS",\r
-            "ecuadorianske sucre",\r
-        }\r
-        ECV{\r
-            "ECV",\r
-            "ecuadorianske unidad de valor constante (UVC)",\r
-        }\r
-        EEK{\r
-            "EEK",\r
-            "estiske kroon",\r
-        }\r
-        EGP{\r
-            "EGP",\r
-            "egyptiske pund",\r
-        }\r
-        ERN{\r
-            "ERN",\r
-            "eritreiske nakfa",\r
-        }\r
-        ESA{\r
-            "ESA",\r
-            "spanske peseta (A–konto)",\r
-        }\r
-        ESB{\r
-            "ESB",\r
-            "spanske peseta (konvertibel konto)",\r
-        }\r
-        ESP{\r
-            "ESP",\r
-            "spanske peseta",\r
-        }\r
-        ETB{\r
-            "ETB",\r
-            "etiopiske birr",\r
-        }\r
-        EUR{\r
-            "€",\r
-            "euro",\r
-        }\r
-        FIM{\r
-            "FIM",\r
-            "finske mark",\r
-        }\r
-        FJD{\r
-            "FJD",\r
-            "fijianske dollar",\r
-        }\r
-        FKP{\r
-            "FKP",\r
-            "falklandspund",\r
-        }\r
-        FRF{\r
-            "FRF",\r
-            "franske franc",\r
-        }\r
         GBP{\r
             "GBP",\r
             "britiske pund",\r
         }\r
-        GEK{\r
-            "GEK",\r
-            "georgiske kupon larit",\r
-        }\r
-        GEL{\r
-            "GEL",\r
-            "georgiske lari",\r
-        }\r
         GHC{\r
             "GHC",\r
             "ghanesiske cedi (1979–2007)",\r
         }\r
-        GHS{\r
-            "GHS",\r
-            "ghanesiske cedi",\r
-        }\r
-        GIP{\r
-            "GIP",\r
-            "gibraltarske pund",\r
-        }\r
-        GMD{\r
-            "GMD",\r
-            "gambiske dalasi",\r
-        }\r
-        GNF{\r
-            "GNF",\r
-            "guineanske franc",\r
-        }\r
-        GNS{\r
-            "GNS",\r
-            "guineanske syli",\r
-        }\r
-        GQE{\r
-            "GQE",\r
-            "ekvatorialguineanske ekwele guineana",\r
-        }\r
         GRD{\r
             "GRD",\r
             "greske drakme",\r
         }\r
-        GTQ{\r
-            "GTQ",\r
-            "guatemalanske quetzal",\r
-        }\r
-        GWE{\r
-            "GWE",\r
-            "portugisiske guinea escudo",\r
-        }\r
         GWP{\r
             "GWP",\r
             "Guinea-Bissau-peso",\r
         }\r
-        GYD{\r
-            "GYD",\r
-            "guyanske dollar",\r
-        }\r
-        HKD{\r
-            "HKD",\r
-            "Hongkong-dollar",\r
-        }\r
-        HNL{\r
-            "HNL",\r
-            "honduranske lempira",\r
-        }\r
         HRD{\r
             "HRD",\r
             "kroatiske dinar",\r
         }\r
-        HRK{\r
-            "HRK",\r
-            "kroatiske kuna",\r
-        }\r
-        HTG{\r
-            "HTG",\r
-            "haitiske gourde",\r
-        }\r
         HUF{\r
             "HUF",\r
             "ungarske forintar",\r
@@ -443,14 +156,6 @@ nn{
             "IDR",\r
             "indonesiske rupiar",\r
         }\r
-        IEP{\r
-            "IEP",\r
-            "irske pund",\r
-        }\r
-        ILP{\r
-            "ILP",\r
-            "israelske pund",\r
-        }\r
         ILS{\r
             "ILS",\r
             "nye israelske sheklar",\r
@@ -467,82 +172,18 @@ nn{
             "IRR",\r
             "iranske rial",\r
         }\r
-        ISK{\r
-            "ISK",\r
-            "islandske kroner",\r
-        }\r
-        ITL{\r
-            "ITL",\r
-            "italienske lire",\r
-        }\r
-        JMD{\r
-            "JMD",\r
-            "jamaikanske dollar",\r
-        }\r
         JOD{\r
             "JOD",\r
             "jordanske dinarar",\r
         }\r
-        JPY{\r
-            "JPY",\r
-            "japanske yen",\r
-        }\r
-        KES{\r
-            "KES",\r
-            "kenyanske shilling",\r
-        }\r
-        KGS{\r
-            "KGS",\r
-            "kirgisiske som",\r
-        }\r
-        KHR{\r
-            "KHR",\r
-            "kambodsjanske riel",\r
-        }\r
-        KMF{\r
-            "KMF",\r
-            "komoriske franc",\r
-        }\r
-        KPW{\r
-            "KPW",\r
-            "nordkoreanske won",\r
-        }\r
-        KRW{\r
-            "KRW",\r
-            "sørkoreanske won",\r
-        }\r
         KWD{\r
             "KWD",\r
             "kuwaitiske dinarar",\r
         }\r
-        KYD{\r
-            "KYD",\r
-            "caymanske dollar",\r
-        }\r
-        KZT{\r
-            "KZT",\r
-            "kasakhstanske tenge",\r
-        }\r
-        LAK{\r
-            "LAK",\r
-            "laotiske kip",\r
-        }\r
-        LBP{\r
-            "LBP",\r
-            "libanesiske pund",\r
-        }\r
         LKR{\r
             "LKR",\r
             "srilankiske rupiar",\r
         }\r
-        LRD{\r
-            "LRD",\r
-            "liberiske dollar",\r
-        }\r
-        LSL{\r
-            "LSL",\r
-            "lesothiske loti",\r
-        }\r
         LTL{\r
             "LTL",\r
             "litauiske lita",\r
@@ -555,14 +196,6 @@ nn{
             "LUC",\r
             "luxemburgske konvertibel franc",\r
         }\r
-        LUF{\r
-            "LUF",\r
-            "luxemburgske franc",\r
-        }\r
-        LUL{\r
-            "LUL",\r
-            "luxemburgske finansielle franc",\r
-        }\r
         LVL{\r
             "LVL",\r
             "latviske lat",\r
@@ -575,126 +208,30 @@ nn{
             "LYD",\r
             "libyske dinarar",\r
         }\r
-        MAD{\r
-            "MAD",\r
-            "marokkanske dirham",\r
-        }\r
-        MAF{\r
-            "MAF",\r
-            "marokkanske franc",\r
-        }\r
         MDL{\r
             "MDL",\r
             "moldovske leuar",\r
         }\r
-        MGA{\r
-            "MGA",\r
-            "madagassiske ariary",\r
-        }\r
-        MGF{\r
-            "MGF",\r
-            "madagassiske franc",\r
-        }\r
         MKD{\r
             "MKD",\r
             "makedonske denarar",\r
         }\r
-        MLF{\r
-            "MLF",\r
-            "maliske franc",\r
-        }\r
-        MMK{\r
-            "MMK",\r
-            "myanmarske kyat",\r
-        }\r
-        MNT{\r
-            "MNT",\r
-            "mongolske tugrik",\r
-        }\r
-        MOP{\r
-            "MOP",\r
-            "makaoiske pataca",\r
-        }\r
-        MRO{\r
-            "MRO",\r
-            "mauritanske ouguiya (1973–2017)",\r
-        }\r
         MRU{\r
             "MRU",\r
             "mauritanske ouguiya",\r
         }\r
-        MTL{\r
-            "MTL",\r
-            "maltesiske lira",\r
-        }\r
-        MTP{\r
-            "MTP",\r
-            "maltesiske pund",\r
-        }\r
         MUR{\r
             "MUR",\r
             "mauritiske rupiar",\r
         }\r
-        MVR{\r
-            "MVR",\r
-            "maldiviske rufiyaa",\r
-        }\r
-        MWK{\r
-            "MWK",\r
-            "malawiske kwacha",\r
-        }\r
-        MXN{\r
-            "MXN",\r
-            "meksikanske pesos",\r
-        }\r
         MXP{\r
             "MXP",\r
             "meksikanske sølvpeso (1861–1992)",\r
         }\r
-        MXV{\r
-            "MXV",\r
-            "meksikanske unidad de inversion (UDI)",\r
-        }\r
-        MYR{\r
-            "MYR",\r
-            "malaysiske ringgit",\r
-        }\r
-        MZE{\r
-            "MZE",\r
-            "mosambikiske escudo",\r
-        }\r
-        MZM{\r
-            "MZM",\r
-            "gamle mosambikiske metical",\r
-        }\r
-        MZN{\r
-            "MZN",\r
-            "mosambikiske metical",\r
-        }\r
-        NAD{\r
-            "NAD",\r
-            "namibiske dollar",\r
-        }\r
-        NGN{\r
-            "NGN",\r
-            "nigerianske naira",\r
-        }\r
         NIC{\r
             "NIC",\r
             "nicaraguanske cordoba",\r
         }\r
-        NIO{\r
-            "NIO",\r
-            "nicaraguanske córdoba",\r
-        }\r
-        NLG{\r
-            "NLG",\r
-            "nederlandske gylden",\r
-        }\r
-        NOK{\r
-            "kr",\r
-            "norske kroner",\r
-        }\r
         NPR{\r
             "NPR",\r
             "nepalske rupiar",\r
@@ -707,46 +244,10 @@ nn{
             "OMR",\r
             "omanske rial",\r
         }\r
-        PAB{\r
-            "PAB",\r
-            "panamanske balboa",\r
-        }\r
-        PEI{\r
-            "PEI",\r
-            "peruanske inti",\r
-        }\r
-        PEN{\r
-            "PEN",\r
-            "peruanske sol",\r
-        }\r
-        PES{\r
-            "PES",\r
-            "peruanske sol (1863–1965)",\r
-        }\r
-        PGK{\r
-            "PGK",\r
-            "papuanske kina",\r
-        }\r
-        PHP{\r
-            "PHP",\r
-            "filippinske pesos",\r
-        }\r
         PKR{\r
             "PKR",\r
             "pakistanske rupiar",\r
         }\r
-        PLN{\r
-            "PLN",\r
-            "polske zloty",\r
-        }\r
-        PLZ{\r
-            "PLZ",\r
-            "polske zloty (1950–1995)",\r
-        }\r
-        PTE{\r
-            "PTE",\r
-            "portugisiske escudo",\r
-        }\r
         PYG{\r
             "PYG",\r
             "paraguayanske guaraní",\r
@@ -755,10 +256,6 @@ nn{
             "QAR",\r
             "qatarske rial",\r
         }\r
-        RHD{\r
-            "RHD",\r
-            "rhodesiske dollar",\r
-        }\r
         ROL{\r
             "ROL",\r
             "gamle rumenske leu",\r
@@ -779,18 +276,10 @@ nn{
             "RUR",\r
             "russiske rublar (1991–1998)",\r
         }\r
-        RWF{\r
-            "RWF",\r
-            "rwandiske franc",\r
-        }\r
         SAR{\r
             "SAR",\r
             "saudiarabiske rial",\r
         }\r
-        SBD{\r
-            "SBD",\r
-            "salomonske dollar",\r
-        }\r
         SCR{\r
             "SCR",\r
             "seychelliske rupiar",\r
@@ -799,154 +288,34 @@ nn{
             "SDD",\r
             "gamle sudanske dinarer",\r
         }\r
-        SDG{\r
-            "SDG",\r
-            "sudanske pund",\r
-        }\r
         SDP{\r
             "SDP",\r
             "gamle sudanske pund",\r
         }\r
-        SEK{\r
-            "SEK",\r
-            "svenske kroner",\r
-        }\r
-        SGD{\r
-            "SGD",\r
-            "singaporske dollar",\r
-        }\r
-        SHP{\r
-            "SHP",\r
-            "sankthelenske pund",\r
-        }\r
-        SIT{\r
-            "SIT",\r
-            "slovenske tolar",\r
-        }\r
-        SKK{\r
-            "SKK",\r
-            "slovakiske koruna",\r
-        }\r
-        SLL{\r
-            "SLL",\r
-            "sierraleonske leone",\r
-        }\r
-        SOS{\r
-            "SOS",\r
-            "somaliske shilling",\r
-        }\r
-        SRD{\r
-            "SRD",\r
-            "surinamske dollar",\r
-        }\r
-        SRG{\r
-            "SRG",\r
-            "surinamske gylden",\r
-        }\r
-        SSP{\r
-            "SSP",\r
-            "sørsudanske pund",\r
-        }\r
-        STD{\r
-            "STD",\r
-            "saotomesiske dobra (1977–2017)",\r
-        }\r
-        STN{\r
-            "STN",\r
-            "saotomesiske dobra",\r
-        }\r
         SUR{\r
             "SUR",\r
             "sovjetiske rublar",\r
         }\r
-        SVC{\r
-            "SVC",\r
-            "salvadoranske colon",\r
-        }\r
-        SYP{\r
-            "SYP",\r
-            "syriske pund",\r
-        }\r
         SZL{\r
             "SZL",\r
             "eswatinisk lilangeni",\r
         }\r
-        THB{\r
-            "THB",\r
-            "thailandske baht",\r
-        }\r
         TJR{\r
             "TJR",\r
             "tadsjikiske rublar",\r
         }\r
-        TJS{\r
-            "TJS",\r
-            "tadsjikiske somoni",\r
-        }\r
         TMM{\r
             "TMM",\r
             "turkmensk manat (1993–2009)",\r
         }\r
-        TMT{\r
-            "TMT",\r
-            "turkmenske manat",\r
-        }\r
         TND{\r
             "TND",\r
             "tunisiske dinarar",\r
         }\r
-        TOP{\r
-            "TOP",\r
-            "tonganske paʻanga",\r
-        }\r
-        TPE{\r
-            "TPE",\r
-            "timoresiske escudo",\r
-        }\r
         TRL{\r
             "TRL",\r
             "gamle tyrkiske lire",\r
         }\r
-        TRY{\r
-            "TRY",\r
-            "tyrkiske lire",\r
-        }\r
-        TTD{\r
-            "TTD",\r
-            "trinidadiske dollar",\r
-        }\r
-        TWD{\r
-            "TWD",\r
-            "nye taiwanske dollar",\r
-        }\r
-        TZS{\r
-            "TZS",\r
-            "tanzanianske shilling",\r
-        }\r
-        UAH{\r
-            "UAH",\r
-            "ukrainske hryvnia",\r
-        }\r
-        UAK{\r
-            "UAK",\r
-            "ukrainske karbovanetz",\r
-        }\r
-        UGS{\r
-            "UGS",\r
-            "ugandiske shilling (1966–1987)",\r
-        }\r
-        UGX{\r
-            "UGX",\r
-            "ugandiske shilling",\r
-        }\r
-        USD{\r
-            "USD",\r
-            "amerikanske dollar",\r
-        }\r
-        USN{\r
-            "USN",\r
-            "amerikanske dollar (neste dag)",\r
-        }\r
         USS{\r
             "USS",\r
             "amerikanske dollar (same dag)",\r
@@ -959,50 +328,14 @@ nn{
             "UYP",\r
             "uruguayanske peso (1975–1993)",\r
         }\r
-        UYU{\r
-            "UYU",\r
-            "uruguayanske pesos",\r
-        }\r
         UZS{\r
             "UZS",\r
             "usbekiske sum",\r
         }\r
-        VEB{\r
-            "VEB",\r
-            "venezuelanske bolivar (1871–2008)",\r
-        }\r
-        VEF{\r
-            "VEF",\r
-            "venezuelanske bolivar (2008–2018)",\r
-        }\r
-        VES{\r
-            "VES",\r
-            "venezuelanske bolivar",\r
-        }\r
-        VND{\r
-            "VND",\r
-            "vietnamesiske dong",\r
-        }\r
         VUV{\r
             "VUV",\r
             "vanuatuiske vatu",\r
         }\r
-        WST{\r
-            "WST",\r
-            "samoanske tala",\r
-        }\r
-        XAF{\r
-            "XAF",\r
-            "sentralafrikanske CFA-franc",\r
-        }\r
-        XAG{\r
-            "XAG",\r
-            "sølv",\r
-        }\r
-        XAU{\r
-            "XAU",\r
-            "gull",\r
-        }\r
         XBA{\r
             "XBA",\r
             "europeiske samansette einingar",\r
@@ -1031,40 +364,8 @@ nn{
             "XEU",\r
             "europeiske valutaeiningar",\r
         }\r
-        XFO{\r
-            "XFO",\r
-            "franske gullfranc",\r
-        }\r
-        XFU{\r
-            "XFU",\r
-            "franske UIC-franc",\r
-        }\r
-        XOF{\r
-            "CFA",\r
-            "vestafrikanske CFA-franc",\r
-        }\r
-        XPD{\r
-            "XPD",\r
-            "palladium",\r
-        }\r
-        XPF{\r
-            "XPF",\r
-            "CFP-franc",\r
-        }\r
-        XPT{\r
-            "XPT",\r
-            "platina",\r
-        }\r
-        XRE{\r
-            "XRE",\r
-            "RINET-fond",\r
-        }\r
-        XTS{\r
-            "XTS",\r
-            "testvalutakode",\r
-        }\r
         XXX{\r
-            "¤",\r
+            "XXX",\r
             "ukjend valuta",\r
         }\r
         YDD{\r
@@ -1091,18 +392,6 @@ nn{
             "ZAL",\r
             "sørafrikanske rand (finansiell)",\r
         }\r
-        ZAR{\r
-            "ZAR",\r
-            "sørafrikanske rand",\r
-        }\r
-        ZMK{\r
-            "ZMK",\r
-            "zambiske kwacha (1968–2012)",\r
-        }\r
-        ZMW{\r
-            "ZMW",\r
-            "zambiske kwacha",\r
-        }\r
         ZRN{\r
             "ZRN",\r
             "zairisk ny zaire",\r
@@ -1117,197 +406,15 @@ nn{
         }\r
     }\r
     Currencies%narrow{\r
-        AOA{"Kz"}\r
-        ARS{"$"}\r
-        AUD{"$"}\r
-        BAM{"KM"}\r
-        BBD{"$"}\r
-        BDT{"৳"}\r
-        BMD{"$"}\r
-        BND{"$"}\r
-        BOB{"Bs"}\r
-        BRL{"R$"}\r
-        BSD{"$"}\r
-        BWP{"P"}\r
-        BYN{"р."}\r
-        BZD{"$"}\r
-        CAD{"$"}\r
-        CLP{"$"}\r
-        CNY{"¥"}\r
-        COP{"$"}\r
-        CRC{"₡"}\r
-        CUC{"$"}\r
-        CUP{"$"}\r
-        CZK{"Kč"}\r
-        DKK{"kr"}\r
-        DOP{"$"}\r
-        EGP{"E£"}\r
-        EUR{"€"}\r
-        FJD{"$"}\r
-        FKP{"£"}\r
-        GBP{"£"}\r
-        GEL{"₾"}\r
-        GIP{"£"}\r
-        GNF{"FG"}\r
-        GTQ{"Q"}\r
-        GYD{"$"}\r
-        HKD{"$"}\r
-        HNL{"L"}\r
-        HRK{"kn"}\r
-        HUF{"Ft"}\r
-        IDR{"Rp"}\r
-        ILS{"₪"}\r
-        INR{"₹"}\r
-        ISK{"kr"}\r
-        JMD{"$"}\r
-        JPY{"¥"}\r
-        KHR{"៛"}\r
-        KMF{"CF"}\r
-        KPW{"₩"}\r
-        KRW{"₩"}\r
-        KYD{"$"}\r
-        KZT{"₸"}\r
-        LAK{"₭"}\r
-        LBP{"L£"}\r
-        LKR{"Rs"}\r
-        LRD{"$"}\r
-        MGA{"Ar"}\r
-        MMK{"K"}\r
-        MNT{"₮"}\r
-        MUR{"Rs"}\r
-        MXN{"$"}\r
-        MYR{"RM"}\r
-        NAD{"$"}\r
-        NGN{"₦"}\r
-        NIO{"C$"}\r
-        NOK{"kr"}\r
-        NPR{"Rs"}\r
-        NZD{"$"}\r
-        PHP{"₱"}\r
-        PKR{"Rs"}\r
-        PLN{"zł"}\r
-        PYG{"₲"}\r
         RON{"lei"}\r
-        RUB{"₽"}\r
-        RWF{"RF"}\r
-        SBD{"$"}\r
-        SEK{"kr"}\r
-        SGD{"$"}\r
-        SHP{"£"}\r
-        SRD{"$"}\r
-        SSP{"£"}\r
         STN{"Db"}\r
-        SYP{"£"}\r
-        THB{"฿"}\r
-        TOP{"T$"}\r
-        TRY{"₺"}\r
-        TTD{"$"}\r
         TWD{"$"}\r
-        UAH{"₴"}\r
-        USD{"$"}\r
-        UYU{"$"}\r
-        VEF{"Bs"}\r
-        VND{"₫"}\r
-        XCD{"$"}\r
-        ZAR{"R"}\r
-        ZMW{"ZK"}\r
-    }\r
-    Currencies%variant{\r
-        TRY{"TL"}\r
     }\r
     CurrencyPlurals{\r
-        AED{\r
-            one{"emiratarabisk dirham"}\r
-            other{"emiratarabiske dirham"}\r
-        }\r
-        AFN{\r
-            one{"afghansk afghani"}\r
-            other{"afghanske afghani"}\r
-        }\r
-        ALL{\r
-            one{"albansk lek"}\r
-            other{"albanske lek"}\r
-        }\r
-        AMD{\r
-            one{"armensk dram"}\r
-            other{"armenske dram"}\r
-        }\r
-        ANG{\r
-            one{"nederlandsk antillegylden"}\r
-            other{"nederlandske antillegylden"}\r
-        }\r
-        AOA{\r
-            one{"angolansk kwanza"}\r
-            other{"angolanske kwanza"}\r
-        }\r
-        ARS{\r
-            one{"argentinsk peso"}\r
-            other{"argentinske pesos"}\r
-        }\r
-        AUD{\r
-            one{"australsk dollar"}\r
-            other{"australske dollar"}\r
-        }\r
-        AWG{\r
-            one{"arubisk florin"}\r
-            other{"arubiske floriner"}\r
-        }\r
-        AZN{\r
-            one{"aserbajdsjansk manat"}\r
-            other{"aserbajdsjanske manat"}\r
-        }\r
-        BAM{\r
-            one{"bosnisk-hercegovinsk konvertibel mark"}\r
-            other{"bosnisk-hercegovinske konvertible mark"}\r
-        }\r
-        BBD{\r
-            one{"barbadisk dollar"}\r
-            other{"barbadiske dollar"}\r
-        }\r
-        BDT{\r
-            one{"bangladeshisk taka"}\r
-            other{"bangladeshiske taka"}\r
-        }\r
-        BGN{\r
-            one{"bulgarsk lev"}\r
-            other{"bulgarske lev"}\r
-        }\r
         BHD{\r
             one{"bahrainsk dinar"}\r
             other{"bahrainske dinarar"}\r
         }\r
-        BIF{\r
-            one{"burundisk franc"}\r
-            other{"burundiske franc"}\r
-        }\r
-        BMD{\r
-            one{"bermudisk dollar"}\r
-            other{"bermudiske dollar"}\r
-        }\r
-        BND{\r
-            one{"bruneisk dollar"}\r
-            other{"bruneiske dollar"}\r
-        }\r
-        BOB{\r
-            one{"boliviansk boliviano"}\r
-            other{"bolivianske boliviano"}\r
-        }\r
-        BRL{\r
-            one{"brasiliansk real"}\r
-            other{"brasilianske real"}\r
-        }\r
-        BSD{\r
-            one{"bahamansk dollar"}\r
-            other{"bahamanske dollar"}\r
-        }\r
-        BTN{\r
-            one{"bhutansk ngultrum"}\r
-            other{"bhutanske ngultrum"}\r
-        }\r
-        BWP{\r
-            one{"botswansk pula"}\r
-            other{"botswanske pula"}\r
-        }\r
         BYB{\r
             one{"kviterussisk ny rubel (BYB)"}\r
             other{"kviterussiske nye rublar (BYB)"}\r
@@ -1320,46 +427,14 @@ nn{
             one{"kviterussisk rubel (2000–2016)"}\r
             other{"kviterussiske rublar (2000–2016)"}\r
         }\r
-        BZD{\r
-            one{"belizisk dollar"}\r
-            other{"beliziske dollar"}\r
-        }\r
-        CAD{\r
-            one{"kanadisk dollar"}\r
-            other{"kanadiske dollar"}\r
-        }\r
-        CDF{\r
-            one{"kongolesisk franc"}\r
-            other{"kongolesiske franc"}\r
-        }\r
         CHE{\r
             one{"WIR euro"}\r
             other{"WIR euro"}\r
         }\r
-        CHF{\r
-            one{"sveitsisk franc"}\r
-            other{"sveitsiske franc"}\r
-        }\r
         CHW{\r
             one{"WIR franc"}\r
             other{"WIR franc"}\r
         }\r
-        CLF{\r
-            one{"chilensk unidades de fomento"}\r
-            other{"chilenske unidades de fomento"}\r
-        }\r
-        CLP{\r
-            one{"chilensk peso"}\r
-            other{"chilenske pesos"}\r
-        }\r
-        CNH{\r
-            one{"kinesisk yuan (offshore)"}\r
-            other{"kinesiske yuan (offshore)"}\r
-        }\r
-        CNY{\r
-            one{"kinesisk yuan"}\r
-            other{"kinesiske yuan"}\r
-        }\r
         COP{\r
             one{"kolombiansk peso"}\r
             other{"kolombianske pesos"}\r
@@ -1376,186 +451,34 @@ nn{
             one{"gammal serbisk dinar"}\r
             other{"gamle serbiske dinarar"}\r
         }\r
-        CSK{\r
-            one{"tsjekkoslovakisk koruna (hard)"}\r
-            other{"tsjekkoslovakiske koruna (hard)"}\r
-        }\r
-        CUC{\r
-            one{"kubansk konvertibel peso"}\r
-            other{"kubanske konvertible pesos"}\r
-        }\r
-        CUP{\r
-            one{"kubansk peso"}\r
-            other{"kubanske pesos"}\r
-        }\r
         CVE{\r
             one{"kappverdisk escudo"}\r
             other{"kappverdiske escudo"}\r
         }\r
-        CYP{\r
-            one{"kypriotisk pund"}\r
-            other{"kypriotiske pund"}\r
-        }\r
-        CZK{\r
-            one{"tsjekkisk koruna"}\r
-            other{"tsjekkiske koruna"}\r
-        }\r
         DDM{\r
             one{"austtysk mark"}\r
             other{"austtyske mark"}\r
         }\r
-        DEM{\r
-            one{"tysk mark"}\r
-            other{"tyske mark"}\r
-        }\r
-        DJF{\r
-            one{"djiboutisk franc"}\r
-            other{"djiboutiske franc"}\r
-        }\r
-        DKK{\r
-            one{"dansk krone"}\r
-            other{"danske kroner"}\r
-        }\r
-        DOP{\r
-            one{"dominikansk peso"}\r
-            other{"dominikanske pesos"}\r
-        }\r
         DZD{\r
             one{"algerisk dinar"}\r
             other{"algeriske dinarar"}\r
         }\r
-        ECS{\r
-            one{"ecuadoriansk sucre"}\r
-            other{"ecuadorianske sucre"}\r
-        }\r
-        ECV{\r
-            one{"ecuadoriansk unidad de valor constante (UVC)"}\r
-            other{"ecuadorianske unidad de valor constante (UVC)"}\r
-        }\r
         EEK{\r
             one{"estisk kroon"}\r
             other{"estiske kroon"}\r
         }\r
-        EGP{\r
-            one{"egyptisk pund"}\r
-            other{"egyptiske pund"}\r
-        }\r
-        ERN{\r
-            one{"eritreisk nakfa"}\r
-            other{"eritreiske nakfa"}\r
-        }\r
-        ESA{\r
-            one{"spansk peseta (A–konto)"}\r
-            other{"spanske peseta (A–konto)"}\r
-        }\r
-        ESB{\r
-            one{"spansk peseta (konvertibel konto)"}\r
-            other{"spanske peseta (konvertibel konto)"}\r
-        }\r
-        ESP{\r
-            one{"spansk peseta"}\r
-            other{"spanske peseta"}\r
-        }\r
-        ETB{\r
-            one{"etiopisk birr"}\r
-            other{"etiopiske birr"}\r
-        }\r
-        EUR{\r
-            one{"euro"}\r
-            other{"euro"}\r
-        }\r
-        FIM{\r
-            one{"finsk mark"}\r
-            other{"finske mark"}\r
-        }\r
-        FJD{\r
-            one{"fijiansk dollar"}\r
-            other{"fijianske dollar"}\r
-        }\r
-        FKP{\r
-            one{"falklandspund"}\r
-            other{"falklandspund"}\r
-        }\r
-        FRF{\r
-            one{"fransk franc"}\r
-            other{"franske franc"}\r
-        }\r
-        GBP{\r
-            one{"britisk pund"}\r
-            other{"britiske pund"}\r
-        }\r
-        GEK{\r
-            one{"georgisk kupon larit"}\r
-            other{"georgiske kupon larit"}\r
-        }\r
-        GEL{\r
-            one{"georgisk lari"}\r
-            other{"georgiske lari"}\r
-        }\r
         GHC{\r
             one{"ghanesisk cedi (GHC)"}\r
             other{"ghanesiske cedi (GHC)"}\r
         }\r
-        GHS{\r
-            one{"ghanesisk cedi"}\r
-            other{"ghanesiske cedi"}\r
-        }\r
-        GIP{\r
-            one{"gibraltarsk pund"}\r
-            other{"gibraltarske pund"}\r
-        }\r
-        GMD{\r
-            one{"gambisk dalasi"}\r
-            other{"gambiske dalasi"}\r
-        }\r
-        GNF{\r
-            one{"guineansk franc"}\r
-            other{"guineanske franc"}\r
-        }\r
-        GNS{\r
-            one{"guineansk syli"}\r
-            other{"guineanske syli"}\r
-        }\r
         GQE{\r
             one{"ekvatorialguineansk ekwele"}\r
             other{"ekvatorialguineanske ekwele"}\r
         }\r
-        GRD{\r
-            one{"gresk drakme"}\r
-            other{"greske drakmer"}\r
-        }\r
-        GTQ{\r
-            one{"guatemalansk quetzal"}\r
-            other{"guatemalanske quetzal"}\r
-        }\r
-        GWE{\r
-            one{"portugisisk guinea escudo"}\r
-            other{"portugisiske guinea escudo"}\r
-        }\r
-        GYD{\r
-            one{"guyansk dollar"}\r
-            other{"guyanske dollar"}\r
-        }\r
-        HKD{\r
-            one{"Hongkong-dollar"}\r
-            other{"Hongkong-dollar"}\r
-        }\r
-        HNL{\r
-            one{"honduransk lempira"}\r
-            other{"honduranske lempira"}\r
-        }\r
         HRD{\r
             one{"kroatisk dinar"}\r
             other{"kroatiske dinarar"}\r
         }\r
-        HRK{\r
-            one{"kroatisk kuna"}\r
-            other{"kroatiske kuna"}\r
-        }\r
-        HTG{\r
-            one{"haitisk gourde"}\r
-            other{"haitiske gourde"}\r
-        }\r
         HUF{\r
             one{"ungarsk forint"}\r
             other{"ungarske forintar"}\r
@@ -1564,14 +487,6 @@ nn{
             one{"indonesisk rupi"}\r
             other{"indonesiske rupiar"}\r
         }\r
-        IEP{\r
-            one{"irsk pund"}\r
-            other{"irske pund"}\r
-        }\r
-        ILP{\r
-            one{"israelsk pund"}\r
-            other{"israelske pund"}\r
-        }\r
         ILS{\r
             one{"ny israelsk shekel"}\r
             other{"nye israelske sheklar"}\r
@@ -1588,102 +503,22 @@ nn{
             one{"iransk rial"}\r
             other{"iranske rial"}\r
         }\r
-        ISK{\r
-            one{"islandsk krone"}\r
-            other{"islandske kroner"}\r
-        }\r
-        ITL{\r
-            one{"italiensk lire"}\r
-            other{"italienske lire"}\r
-        }\r
-        JMD{\r
-            one{"jamaikansk dollar"}\r
-            other{"jamaikanske dollar"}\r
-        }\r
         JOD{\r
             one{"jordansk dinar"}\r
             other{"jordanske dinarar"}\r
         }\r
-        JPY{\r
-            one{"japansk yen"}\r
-            other{"japanske yen"}\r
-        }\r
-        KES{\r
-            one{"kenyansk shilling"}\r
-            other{"kenyanske shilling"}\r
-        }\r
-        KGS{\r
-            one{"kirgisisk som"}\r
-            other{"kirgisiske som"}\r
-        }\r
-        KHR{\r
-            one{"kambodsjansk riel"}\r
-            other{"kambodsjanske riel"}\r
-        }\r
-        KMF{\r
-            one{"komorisk franc"}\r
-            other{"komoriske franc"}\r
-        }\r
-        KPW{\r
-            one{"nordkoreansk won"}\r
-            other{"nordkoreanske won"}\r
-        }\r
-        KRW{\r
-            one{"sørkoreansk won"}\r
-            other{"sørkoreanske won"}\r
-        }\r
         KWD{\r
             one{"kuwaitisk dinar"}\r
             other{"kuwaitiske dinarar"}\r
         }\r
-        KYD{\r
-            one{"caymansk dollar"}\r
-            other{"caymanske dollar"}\r
-        }\r
-        KZT{\r
-            one{"kasakhstansk tenge"}\r
-            other{"kasakhstanske tenge"}\r
-        }\r
-        LAK{\r
-            one{"laotisk kip"}\r
-            other{"laotiske kip"}\r
-        }\r
-        LBP{\r
-            one{"libanesisk pund"}\r
-            other{"libanesiske pund"}\r
-        }\r
         LKR{\r
             one{"srilankisk rupi"}\r
             other{"srilankiske rupiar"}\r
         }\r
-        LRD{\r
-            one{"liberisk dollar"}\r
-            other{"liberiske dollar"}\r
-        }\r
-        LSL{\r
-            one{"lesothisk loti"}\r
-            other{"lesothiske loti"}\r
-        }\r
-        LTL{\r
-            one{"litauisk lita"}\r
-            other{"litauiske lita"}\r
-        }\r
         LTT{\r
             one{"litauisk talona"}\r
             other{"litauiske talona"}\r
         }\r
-        LUC{\r
-            one{"luxemburgsk konvertibel franc"}\r
-            other{"luxemburgske konvertible franc"}\r
-        }\r
-        LUF{\r
-            one{"luxemburgsk franc"}\r
-            other{"luxemburgske franc"}\r
-        }\r
-        LUL{\r
-            one{"luxemburgsk finansiell franc"}\r
-            other{"luxemburgske finansielle franc"}\r
-        }\r
         LVL{\r
             one{"latvisk lat"}\r
             other{"latviske lat"}\r
@@ -1696,126 +531,30 @@ nn{
             one{"libysk dinar"}\r
             other{"libyske dinarar"}\r
         }\r
-        MAD{\r
-            one{"marokkansk dirham"}\r
-            other{"marokkanske dirham"}\r
-        }\r
-        MAF{\r
-            one{"marokkansk franc"}\r
-            other{"marokkanske franc"}\r
-        }\r
         MDL{\r
             one{"moldovsk leu"}\r
             other{"moldovske leuar"}\r
         }\r
-        MGA{\r
-            one{"madagassisk ariary"}\r
-            other{"madagassiske ariary"}\r
-        }\r
-        MGF{\r
-            one{"madagassisk franc"}\r
-            other{"madagassiske franc"}\r
-        }\r
         MKD{\r
             one{"makedonsk denar"}\r
             other{"makedonske denarar"}\r
         }\r
-        MLF{\r
-            one{"malisk franc"}\r
-            other{"maliske franc"}\r
-        }\r
-        MMK{\r
-            one{"myanmarsk kyat"}\r
-            other{"myanmarske kyat"}\r
-        }\r
-        MNT{\r
-            one{"mongolsk tugrik"}\r
-            other{"mongolske tugrik"}\r
-        }\r
-        MOP{\r
-            one{"makaoisk pataca"}\r
-            other{"makaoiske pataca"}\r
-        }\r
-        MRO{\r
-            one{"mauritansk ouguiya (1973–2017)"}\r
-            other{"mauritanske ouguiya (1973–2017)"}\r
-        }\r
-        MRU{\r
-            one{"mauritansk ouguiya"}\r
-            other{"mauritanske ouguiya"}\r
-        }\r
-        MTL{\r
-            one{"maltesisk lira"}\r
-            other{"maltesiske lira"}\r
-        }\r
-        MTP{\r
-            one{"maltesisk pund"}\r
-            other{"maltesiske pund"}\r
-        }\r
         MUR{\r
             one{"mauritisk rupi"}\r
             other{"mauritiske rupiar"}\r
         }\r
-        MVR{\r
-            one{"maldivisk rufiyaa"}\r
-            other{"maldiviske rufiyaa"}\r
-        }\r
-        MWK{\r
-            one{"malawisk kwacha"}\r
-            other{"malawiske kwacha"}\r
-        }\r
-        MXN{\r
-            one{"meksikansk peso"}\r
-            other{"meksikanske pesos"}\r
-        }\r
         MXP{\r
             one{"meksikansk sølvpeso (MXP)"}\r
             other{"meksikanske sølvpeso (MXP)"}\r
         }\r
-        MXV{\r
-            one{"meksikansk unidad de inversion (UDI)"}\r
-            other{"meksikanske unidad de inversion (UDI)"}\r
-        }\r
-        MYR{\r
-            one{"malaysisk ringgit"}\r
-            other{"malaysiske ringgit"}\r
-        }\r
-        MZE{\r
-            one{"mosambikisk escudo"}\r
-            other{"mosambikiske escudo"}\r
-        }\r
         MZM{\r
             one{"gammal mosambikisk metical"}\r
             other{"gamle mosambikiske metical"}\r
         }\r
-        MZN{\r
-            one{"mosambikisk metical"}\r
-            other{"mosambikiske metical"}\r
-        }\r
-        NAD{\r
-            one{"namibisk dollar"}\r
-            other{"namibiske dollar"}\r
-        }\r
-        NGN{\r
-            one{"nigeriansk naira"}\r
-            other{"nigerianske naira"}\r
-        }\r
         NIC{\r
             one{"nicaraguansk cordoba"}\r
             other{"nicaraguanske cordoba"}\r
         }\r
-        NIO{\r
-            one{"nicaraguansk córdoba"}\r
-            other{"nicaraguanske córdoba"}\r
-        }\r
-        NLG{\r
-            one{"nederlandsk gylden"}\r
-            other{"nederlandske gylden"}\r
-        }\r
-        NOK{\r
-            one{"norsk krone"}\r
-            other{"norske kroner"}\r
-        }\r
         NPR{\r
             one{"nepalsk rupi"}\r
             other{"nepalske rupiar"}\r
@@ -1828,46 +567,14 @@ nn{
             one{"omansk rial"}\r
             other{"omanske rial"}\r
         }\r
-        PAB{\r
-            one{"panamansk balboa"}\r
-            other{"panamanske balboa"}\r
-        }\r
-        PEI{\r
-            one{"peruansk inti"}\r
-            other{"peruanske inti"}\r
-        }\r
-        PEN{\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
-        }\r
-        PHP{\r
-            one{"filippinsk peso"}\r
-            other{"filippinske pesos"}\r
-        }\r
         PKR{\r
             one{"pakistansk rupi"}\r
             other{"pakistanske rupiar"}\r
         }\r
-        PLN{\r
-            one{"polsk zloty"}\r
-            other{"polske zloty"}\r
-        }\r
         PLZ{\r
             one{"polsk zloty (PLZ)"}\r
             other{"polske zloty (PLZ)"}\r
         }\r
-        PTE{\r
-            one{"portugisisk escudo"}\r
-            other{"portugisiske escudo"}\r
-        }\r
         PYG{\r
             one{"paraguayansk guaraní"}\r
             other{"paraguayanske guaraní"}\r
@@ -1876,10 +583,6 @@ nn{
             one{"qatarsk rial"}\r
             other{"qatarske rial"}\r
         }\r
-        RHD{\r
-            one{"rhodesisk dollar"}\r
-            other{"rhodesiske dollar"}\r
-        }\r
         ROL{\r
             one{"gammal rumensk leu"}\r
             other{"gamle rumenske lei"}\r
@@ -1900,18 +603,10 @@ nn{
             one{"russisk rubel (RUR)"}\r
             other{"russiske rublar (RUR)"}\r
         }\r
-        RWF{\r
-            one{"rwandisk franc"}\r
-            other{"rwandiske franc"}\r
-        }\r
         SAR{\r
             one{"saudiarabisk rial"}\r
             other{"saudiarabiske rial"}\r
         }\r
-        SBD{\r
-            one{"salomonsk dollar"}\r
-            other{"salomonske dollar"}\r
-        }\r
         SCR{\r
             one{"seychellisk rupi"}\r
             other{"seychelliske rupiar"}\r
@@ -1920,154 +615,34 @@ nn{
             one{"gammal sudansk dinar"}\r
             other{"gamle sudanske dinarar"}\r
         }\r
-        SDG{\r
-            one{"sudansk pund"}\r
-            other{"sudanske pund"}\r
-        }\r
         SDP{\r
             one{"gammalt sudansk pund"}\r
             other{"gamle sudanske pund"}\r
         }\r
-        SEK{\r
-            one{"svensk krone"}\r
-            other{"svenske kroner"}\r
-        }\r
-        SGD{\r
-            one{"singaporsk dollar"}\r
-            other{"singaporske dollar"}\r
-        }\r
-        SHP{\r
-            one{"sankthelensk pund"}\r
-            other{"sankthelenske pund"}\r
-        }\r
-        SIT{\r
-            one{"slovensk tolar"}\r
-            other{"slovenske tolar"}\r
-        }\r
-        SKK{\r
-            one{"slovakisk koruna"}\r
-            other{"slovakiske koruna"}\r
-        }\r
-        SLL{\r
-            one{"sierraleonsk leone"}\r
-            other{"sierraleonske leone"}\r
-        }\r
-        SOS{\r
-            one{"somalisk shilling"}\r
-            other{"somaliske shilling"}\r
-        }\r
-        SRD{\r
-            one{"surinamsk dollar"}\r
-            other{"surinamske dollar"}\r
-        }\r
-        SRG{\r
-            one{"surinamsk gylden"}\r
-            other{"surinamske gylden"}\r
-        }\r
-        SSP{\r
-            one{"sørsudansk pund"}\r
-            other{"sørsudanske pund"}\r
-        }\r
-        STD{\r
-            one{"saotomesisk dobra (1977–2017)"}\r
-            other{"saotomesiske dobra (1977–2017)"}\r
-        }\r
-        STN{\r
-            one{"saotomesisk dobra"}\r
-            other{"saotomesiske dobra"}\r
-        }\r
         SUR{\r
             one{"sovjetisk rubel"}\r
             other{"sovjetiske rublar"}\r
         }\r
-        SVC{\r
-            one{"salvadoransk colon"}\r
-            other{"salvadoranske colon"}\r
-        }\r
-        SYP{\r
-            one{"syrisk pund"}\r
-            other{"syriske pund"}\r
-        }\r
         SZL{\r
             one{"eswatinisk lilangeni"}\r
             other{"eswatiniske emalangeni"}\r
         }\r
-        THB{\r
-            one{"thailandsk baht"}\r
-            other{"thailandske baht"}\r
-        }\r
         TJR{\r
             one{"tadsjikisk rubel"}\r
             other{"tadsjikiske rublar"}\r
         }\r
-        TJS{\r
-            one{"tadsjikisk somoni"}\r
-            other{"tadsjikiske somoni"}\r
-        }\r
-        TMM{\r
-            one{"turkmensk manat (1993–2009)"}\r
-            other{"turkmenske manat (1993–2009)"}\r
-        }\r
-        TMT{\r
-            one{"turkmensk manat"}\r
-            other{"turkmenske manat"}\r
-        }\r
         TND{\r
             one{"tunisisk dinar"}\r
             other{"tunisiske dinarar"}\r
         }\r
-        TOP{\r
-            one{"tongansk paʻanga"}\r
-            other{"tonganske paʻanga"}\r
-        }\r
-        TPE{\r
-            one{"timoresisk escudo"}\r
-            other{"timoresiske escudo"}\r
-        }\r
         TRL{\r
             one{"gammal tyrkisk lire"}\r
             other{"gamle tyrkiske lire"}\r
         }\r
-        TRY{\r
-            one{"tyrkisk lire"}\r
-            other{"tyrkiske lire"}\r
-        }\r
-        TTD{\r
-            one{"trinidadisk dollar"}\r
-            other{"trinidadiske dollar"}\r
-        }\r
-        TWD{\r
-            one{"ny taiwansk dollar"}\r
-            other{"nye taiwanske dollar"}\r
-        }\r
-        TZS{\r
-            one{"tanzaniansk shilling"}\r
-            other{"tanzanianske shilling"}\r
-        }\r
-        UAH{\r
-            one{"ukrainsk hryvnia"}\r
-            other{"ukrainske hryvnia"}\r
-        }\r
-        UAK{\r
-            one{"ukrainsk karbovanetz"}\r
-            other{"ukrainske karbovanetz"}\r
-        }\r
         UGS{\r
             one{"ugandisk shilling (UGS)"}\r
             other{"ugandiske shilling (UGS)"}\r
         }\r
-        UGX{\r
-            one{"ugandisk shilling"}\r
-            other{"ugandiske shilling"}\r
-        }\r
-        USD{\r
-            one{"amerikansk dollar"}\r
-            other{"amerikanske dollar"}\r
-        }\r
-        USN{\r
-            one{"amerikansk dollar (neste dag)"}\r
-            other{"amerikanske dollar (neste dag)"}\r
-        }\r
         USS{\r
             one{"amerikansk dollar (same dag)"}\r
             other{"amerikanske dollar (same dag)"}\r
@@ -2088,34 +663,10 @@ nn{
             one{"usbekisk sum"}\r
             other{"usbekiske sum"}\r
         }\r
-        VEB{\r
-            one{"venezuelansk bolivar (1871–2008)"}\r
-            other{"venezuelanske bolivar (1871–2008)"}\r
-        }\r
-        VEF{\r
-            one{"venezuelansk bolivar (2008–2018)"}\r
-            other{"venezuelanske bolivar (2008–2018)"}\r
-        }\r
-        VES{\r
-            one{"venezuelansk bolivar"}\r
-            other{"venezuelanske bolivar"}\r
-        }\r
-        VND{\r
-            one{"vietnamesisk dong"}\r
-            other{"vietnamesiske dong"}\r
-        }\r
         VUV{\r
             one{"vanuatuisk vatu"}\r
             other{"vanuatuiske vatu"}\r
         }\r
-        WST{\r
-            one{"samoansk tala"}\r
-            other{"samoanske tala"}\r
-        }\r
-        XAF{\r
-            one{"sentralafrikansk CFA-franc"}\r
-            other{"sentralafrikanske CFA-franc"}\r
-        }\r
         XAG{\r
             one{"sølv"}\r
             other{"sølv"}\r
@@ -2152,26 +703,10 @@ nn{
             one{"europeisk valutaeining"}\r
             other{"europeiske valutaeiningar"}\r
         }\r
-        XFO{\r
-            one{"fransk gullfranc"}\r
-            other{"franske gullfranc"}\r
-        }\r
-        XFU{\r
-            one{"fransk UIC-franc"}\r
-            other{"franske UIC-franc"}\r
-        }\r
-        XOF{\r
-            one{"vestafrikansk CFA-franc"}\r
-            other{"vestafrikanske CFA-franc"}\r
-        }\r
         XPD{\r
             one{"palladium"}\r
             other{"palladium"}\r
         }\r
-        XPF{\r
-            one{"CFP-franc"}\r
-            other{"CFP-franc"}\r
-        }\r
         XPT{\r
             one{"platina"}\r
             other{"platina"}\r
@@ -2208,17 +743,5 @@ nn{
             one{"jugoslavisk konvertibel dinar"}\r
             other{"jugoslaviske konvertible dinarar"}\r
         }\r
-        ZAR{\r
-            one{"sørafrikansk rand"}\r
-            other{"sørafrikanske rand"}\r
-        }\r
-        ZMW{\r
-            one{"zambisk kwacha"}\r
-            other{"zambiske kwacha"}\r
-        }\r
-    }\r
-    CurrencyUnitPatterns{\r
-        one{"{0} {1}"}\r
-        other{"{0} {1}"}\r
     }\r
 }\r
index a6eca3c..c38018d 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no{\r
-    "%%ALIAS"{"nb"}\r
+    Currencies{\r
+        ADP{\r
+            "ADP",\r
+            "andorranske pesetas",\r
+        }\r
+        AED{\r
+            "AED",\r
+            "emiratarabiske dirham",\r
+        }\r
+        AFA{\r
+            "AFA",\r
+            "afgansk afghani (1927–2002)",\r
+        }\r
+        AFN{\r
+            "AFN",\r
+            "afghanske afghani",\r
+        }\r
+        ALK{\r
+            "ALK",\r
+            "albanske lek (1946–1965)",\r
+        }\r
+        ALL{\r
+            "ALL",\r
+            "albanske lek",\r
+        }\r
+        AMD{\r
+            "AMD",\r
+            "armenske dram",\r
+        }\r
+        ANG{\r
+            "ANG",\r
+            "nederlandske antillegylden",\r
+        }\r
+        AOA{\r
+            "AOA",\r
+            "angolanske kwanza",\r
+        }\r
+        AOK{\r
+            "AOK",\r
+            "angolanske kwanza (1977–1990)",\r
+        }\r
+        AON{\r
+            "AON",\r
+            "angolanske nye kwanza (1990–2000)",\r
+        }\r
+        AOR{\r
+            "AOR",\r
+            "angolanske omjusterte kwanza (1995–1999)",\r
+        }\r
+        ARA{\r
+            "ARA",\r
+            "argentinske australer",\r
+        }\r
+        ARL{\r
+            "ARL",\r
+            "argentinske peso ley",\r
+        }\r
+        ARM{\r
+            "ARM",\r
+            "argentinsk pesos (1881–1970)",\r
+        }\r
+        ARP{\r
+            "ARP",\r
+            "argentinske pesos (1983–1985)",\r
+        }\r
+        ARS{\r
+            "ARS",\r
+            "argentinske pesos",\r
+        }\r
+        ATS{\r
+            "ATS",\r
+            "østerrikske shilling",\r
+        }\r
+        AUD{\r
+            "AUD",\r
+            "australske dollar",\r
+        }\r
+        AWG{\r
+            "AWG",\r
+            "arubiske floriner",\r
+        }\r
+        AZM{\r
+            "AZM",\r
+            "aserbajdsjanske manat (1993–2006)",\r
+        }\r
+        AZN{\r
+            "AZN",\r
+            "aserbajdsjanske manat",\r
+        }\r
+        BAD{\r
+            "BAD",\r
+            "bosnisk-hercegovinske dinarer (1992–1994)",\r
+        }\r
+        BAM{\r
+            "BAM",\r
+            "bosnisk-hercegovinske konvertible mark",\r
+        }\r
+        BAN{\r
+            "BAN",\r
+            "nye bosnisk-hercegovinske dinarer (1994–1997)",\r
+        }\r
+        BBD{\r
+            "BBD",\r
+            "barbadiske dollar",\r
+        }\r
+        BDT{\r
+            "BDT",\r
+            "bangladeshiske taka",\r
+        }\r
+        BEC{\r
+            "BEC",\r
+            "belgiske franc (konvertible)",\r
+        }\r
+        BEF{\r
+            "BEF",\r
+            "belgiske franc",\r
+        }\r
+        BEL{\r
+            "BEL",\r
+            "belgiske franc (finansielle)",\r
+        }\r
+        BGL{\r
+            "BGL",\r
+            "bulgarske lev (hard)",\r
+        }\r
+        BGM{\r
+            "BGM",\r
+            "bulgarske lev (sosialist)",\r
+        }\r
+        BGN{\r
+            "BGN",\r
+            "bulgarske lev",\r
+        }\r
+        BGO{\r
+            "BGO",\r
+            "bulgarske lev (1879–1952)",\r
+        }\r
+        BHD{\r
+            "BHD",\r
+            "bahrainske dinarer",\r
+        }\r
+        BIF{\r
+            "BIF",\r
+            "burundiske franc",\r
+        }\r
+        BMD{\r
+            "BMD",\r
+            "bermudiske dollar",\r
+        }\r
+        BND{\r
+            "BND",\r
+            "bruneiske dollar",\r
+        }\r
+        BOB{\r
+            "BOB",\r
+            "bolivianske boliviano",\r
+        }\r
+        BOL{\r
+            "BOL",\r
+            "bolivianske boliviano (1863–1963)",\r
+        }\r
+        BOP{\r
+            "BOP",\r
+            "bolivianske pesos",\r
+        }\r
+        BOV{\r
+            "BOV",\r
+            "bolivianske mvdol",\r
+        }\r
+        BRB{\r
+            "BRB",\r
+            "brasilianske cruzeiro novo (1967–1986)",\r
+        }\r
+        BRC{\r
+            "BRC",\r
+            "brasilianske cruzados (1986–1989)",\r
+        }\r
+        BRE{\r
+            "BRE",\r
+            "brasilianske cruzeiro (1990–1993)",\r
+        }\r
+        BRL{\r
+            "BRL",\r
+            "brasilianske real",\r
+        }\r
+        BRN{\r
+            "BRN",\r
+            "brasilianske cruzado novo (1989–1990)",\r
+        }\r
+        BRR{\r
+            "BRR",\r
+            "brasilianske cruzeiro (1993–1994)",\r
+        }\r
+        BRZ{\r
+            "BRZ",\r
+            "brasilianske cruzeiro (1942–1967)",\r
+        }\r
+        BSD{\r
+            "BSD",\r
+            "bahamanske dollar",\r
+        }\r
+        BTN{\r
+            "BTN",\r
+            "bhutanske ngultrum",\r
+        }\r
+        BUK{\r
+            "BUK",\r
+            "burmesiske kyat",\r
+        }\r
+        BWP{\r
+            "BWP",\r
+            "botswanske pula",\r
+        }\r
+        BYB{\r
+            "BYB",\r
+            "hviterussiske nye rubler (1994–1999)",\r
+        }\r
+        BYN{\r
+            "BYN",\r
+            "nye hviterussiske rubler",\r
+        }\r
+        BYR{\r
+            "BYR",\r
+            "hviterussiske rubler (2000–2016)",\r
+        }\r
+        BZD{\r
+            "BZD",\r
+            "beliziske dollar",\r
+        }\r
+        CAD{\r
+            "CAD",\r
+            "kanadiske dollar",\r
+        }\r
+        CDF{\r
+            "CDF",\r
+            "kongolesiske franc",\r
+        }\r
+        CHE{\r
+            "CHE",\r
+            "WIR euro",\r
+        }\r
+        CHF{\r
+            "CHF",\r
+            "sveitsiske franc",\r
+        }\r
+        CHW{\r
+            "CHW",\r
+            "WIR franc",\r
+        }\r
+        CLE{\r
+            "CLE",\r
+            "chilenske escudo",\r
+        }\r
+        CLF{\r
+            "CLF",\r
+            "chilenske unidades de fomento",\r
+        }\r
+        CLP{\r
+            "CLP",\r
+            "chilenske pesos",\r
+        }\r
+        CNH{\r
+            "CNH",\r
+            "kinesiske yuan (offshore)",\r
+        }\r
+        CNX{\r
+            "CNX",\r
+            "Kinas folkebank dollar",\r
+        }\r
+        CNY{\r
+            "CNY",\r
+            "kinesiske yuan",\r
+        }\r
+        COP{\r
+            "COP",\r
+            "colombianske pesos",\r
+        }\r
+        COU{\r
+            "COU",\r
+            "colombianske unidad de valor real",\r
+        }\r
+        CRC{\r
+            "CRC",\r
+            "costaricanske colón",\r
+        }\r
+        CSD{\r
+            "CSD",\r
+            "serbiske dinarer (2002–2006)",\r
+        }\r
+        CSK{\r
+            "CSK",\r
+            "tsjekkoslovakiske koruna (hard)",\r
+        }\r
+        CUC{\r
+            "CUC",\r
+            "kubanske konvertible pesos",\r
+        }\r
+        CUP{\r
+            "CUP",\r
+            "kubanske pesos",\r
+        }\r
+        CVE{\r
+            "CVE",\r
+            "kappverdiske escudos",\r
+        }\r
+        CYP{\r
+            "CYP",\r
+            "kypriotiske pund",\r
+        }\r
+        CZK{\r
+            "CZK",\r
+            "tsjekkiske koruna",\r
+        }\r
+        DDM{\r
+            "DDM",\r
+            "østtyske mark",\r
+        }\r
+        DEM{\r
+            "DEM",\r
+            "tyske mark",\r
+        }\r
+        DJF{\r
+            "DJF",\r
+            "djiboutiske franc",\r
+        }\r
+        DKK{\r
+            "DKK",\r
+            "danske kroner",\r
+        }\r
+        DOP{\r
+            "DOP",\r
+            "dominikanske pesos",\r
+        }\r
+        DZD{\r
+            "DZD",\r
+            "algeriske dinarer",\r
+        }\r
+        ECS{\r
+            "ECS",\r
+            "ecuadorianske sucre",\r
+        }\r
+        ECV{\r
+            "ECV",\r
+            "ecuadorianske unidad de valor constante (UVC)",\r
+        }\r
+        EEK{\r
+            "EEK",\r
+            "estiske kroon",\r
+        }\r
+        EGP{\r
+            "EGP",\r
+            "egyptiske pund",\r
+        }\r
+        ERN{\r
+            "ERN",\r
+            "eritreiske nakfa",\r
+        }\r
+        ESA{\r
+            "ESA",\r
+            "spanske peseta (A–konto)",\r
+        }\r
+        ESB{\r
+            "ESB",\r
+            "spanske peseta (konvertibel konto)",\r
+        }\r
+        ESP{\r
+            "ESP",\r
+            "spanske peseta",\r
+        }\r
+        ETB{\r
+            "ETB",\r
+            "etiopiske birr",\r
+        }\r
+        EUR{\r
+            "€",\r
+            "euro",\r
+        }\r
+        FIM{\r
+            "FIM",\r
+            "finske mark",\r
+        }\r
+        FJD{\r
+            "FJD",\r
+            "fijianske dollar",\r
+        }\r
+        FKP{\r
+            "FKP",\r
+            "falklandspund",\r
+        }\r
+        FRF{\r
+            "FRF",\r
+            "franske franc",\r
+        }\r
+        GBP{\r
+            "£",\r
+            "britiske pund",\r
+        }\r
+        GEK{\r
+            "GEK",\r
+            "georgiske kupon larit",\r
+        }\r
+        GEL{\r
+            "GEL",\r
+            "georgiske lari",\r
+        }\r
+        GHC{\r
+            "GHC",\r
+            "ghanesisk cedi (1979–2007)",\r
+        }\r
+        GHS{\r
+            "GHS",\r
+            "ghanesiske cedi",\r
+        }\r
+        GIP{\r
+            "GIP",\r
+            "gibraltarske pund",\r
+        }\r
+        GMD{\r
+            "GMD",\r
+            "gambiske dalasi",\r
+        }\r
+        GNF{\r
+            "GNF",\r
+            "guineanske franc",\r
+        }\r
+        GNS{\r
+            "GNS",\r
+            "guineanske syli",\r
+        }\r
+        GQE{\r
+            "GQE",\r
+            "ekvatorialguineanske ekwele guineana",\r
+        }\r
+        GRD{\r
+            "GRD",\r
+            "greske drakmer",\r
+        }\r
+        GTQ{\r
+            "GTQ",\r
+            "guatemalanske quetzal",\r
+        }\r
+        GWE{\r
+            "GWE",\r
+            "portugisiske guinea escudo",\r
+        }\r
+        GWP{\r
+            "GWP",\r
+            "Guinea-Bissau-pesos",\r
+        }\r
+        GYD{\r
+            "GYD",\r
+            "guyanske dollar",\r
+        }\r
+        HKD{\r
+            "HKD",\r
+            "Hongkong-dollar",\r
+        }\r
+        HNL{\r
+            "HNL",\r
+            "honduranske lempira",\r
+        }\r
+        HRD{\r
+            "HRD",\r
+            "kroatiske dinarer",\r
+        }\r
+        HRK{\r
+            "HRK",\r
+            "kroatiske kuna",\r
+        }\r
+        HTG{\r
+            "HTG",\r
+            "haitiske gourde",\r
+        }\r
+        HUF{\r
+            "HUF",\r
+            "ungarske forinter",\r
+        }\r
+        IDR{\r
+            "IDR",\r
+            "indonesiske rupier",\r
+        }\r
+        IEP{\r
+            "IEP",\r
+            "irske pund",\r
+        }\r
+        ILP{\r
+            "ILP",\r
+            "israelske pund",\r
+        }\r
+        ILR{\r
+            "ILR",\r
+            "israelske shekler (1980–1985)",\r
+        }\r
+        ILS{\r
+            "ILS",\r
+            "nye israelske shekler",\r
+        }\r
+        INR{\r
+            "INR",\r
+            "indiske rupier",\r
+        }\r
+        IQD{\r
+            "IQD",\r
+            "irakske dinarer",\r
+        }\r
+        IRR{\r
+            "IRR",\r
+            "iranske rialer",\r
+        }\r
+        ISJ{\r
+            "ISJ",\r
+            "islandske kroner (1918–1981)",\r
+        }\r
+        ISK{\r
+            "ISK",\r
+            "islandske kroner",\r
+        }\r
+        ITL{\r
+            "ITL",\r
+            "italienske lire",\r
+        }\r
+        JMD{\r
+            "JMD",\r
+            "jamaikanske dollar",\r
+        }\r
+        JOD{\r
+            "JOD",\r
+            "jordanske dinarer",\r
+        }\r
+        JPY{\r
+            "JPY",\r
+            "japanske yen",\r
+        }\r
+        KES{\r
+            "KES",\r
+            "kenyanske shilling",\r
+        }\r
+        KGS{\r
+            "KGS",\r
+            "kirgisiske som",\r
+        }\r
+        KHR{\r
+            "KHR",\r
+            "kambodsjanske riel",\r
+        }\r
+        KMF{\r
+            "KMF",\r
+            "komoriske franc",\r
+        }\r
+        KPW{\r
+            "KPW",\r
+            "nordkoreanske won",\r
+        }\r
+        KRH{\r
+            "KRH",\r
+            "sørkoreanske hwan (1953–1962)",\r
+        }\r
+        KRO{\r
+            "KRO",\r
+            "sørkoreanske won (1945–1953)",\r
+        }\r
+        KRW{\r
+            "KRW",\r
+            "sørkoreanske won",\r
+        }\r
+        KWD{\r
+            "KWD",\r
+            "kuwaitiske dinarer",\r
+        }\r
+        KYD{\r
+            "KYD",\r
+            "caymanske dollar",\r
+        }\r
+        KZT{\r
+            "KZT",\r
+            "kasakhstanske tenge",\r
+        }\r
+        LAK{\r
+            "LAK",\r
+            "laotiske kip",\r
+        }\r
+        LBP{\r
+            "LBP",\r
+            "libanesiske pund",\r
+        }\r
+        LKR{\r
+            "LKR",\r
+            "srilankiske rupier",\r
+        }\r
+        LRD{\r
+            "LRD",\r
+            "liberiske dollar",\r
+        }\r
+        LSL{\r
+            "LSL",\r
+            "lesothiske loti",\r
+        }\r
+        LTL{\r
+            "LTL",\r
+            "litauiske litas",\r
+        }\r
+        LTT{\r
+            "LTT",\r
+            "litauiske talonas",\r
+        }\r
+        LUC{\r
+            "LUC",\r
+            "luxemburgske konvertible franc",\r
+        }\r
+        LUF{\r
+            "LUF",\r
+            "luxemburgske franc",\r
+        }\r
+        LUL{\r
+            "LUL",\r
+            "luxemburgske finansielle franc",\r
+        }\r
+        LVL{\r
+            "LVL",\r
+            "latviske lats",\r
+        }\r
+        LVR{\r
+            "LVR",\r
+            "latviske rubler",\r
+        }\r
+        LYD{\r
+            "LYD",\r
+            "libyske dinarer",\r
+        }\r
+        MAD{\r
+            "MAD",\r
+            "marokkanske dirham",\r
+        }\r
+        MAF{\r
+            "MAF",\r
+            "marokkanske franc",\r
+        }\r
+        MCF{\r
+            "MCF",\r
+            "monegaskiske franc",\r
+        }\r
+        MDC{\r
+            "MDC",\r
+            "moldovske cupon",\r
+        }\r
+        MDL{\r
+            "MDL",\r
+            "moldovske leu",\r
+        }\r
+        MGA{\r
+            "MGA",\r
+            "madagassiske ariary",\r
+        }\r
+        MGF{\r
+            "MGF",\r
+            "madagassiske franc",\r
+        }\r
+        MKD{\r
+            "MKD",\r
+            "makedonske denarer",\r
+        }\r
+        MKN{\r
+            "MKN",\r
+            "makedonske denarer (1992–1993)",\r
+        }\r
+        MLF{\r
+            "MLF",\r
+            "maliske franc",\r
+        }\r
+        MMK{\r
+            "MMK",\r
+            "myanmarske kyat",\r
+        }\r
+        MNT{\r
+            "MNT",\r
+            "mongolske tugrik",\r
+        }\r
+        MOP{\r
+            "MOP",\r
+            "makaoiske pataca",\r
+        }\r
+        MRO{\r
+            "MRO",\r
+            "mauritanske ouguiya (1973–2017)",\r
+        }\r
+        MRU{\r
+            "MRU",\r
+            "mauritanske ouguiya",\r
+        }\r
+        MTL{\r
+            "MTL",\r
+            "maltesiske lira",\r
+        }\r
+        MTP{\r
+            "MTP",\r
+            "maltesiske pund",\r
+        }\r
+        MUR{\r
+            "MUR",\r
+            "mauritiske rupier",\r
+        }\r
+        MVP{\r
+            "MVP",\r
+            "maldiviske rupier",\r
+        }\r
+        MVR{\r
+            "MVR",\r
+            "maldiviske rufiyaa",\r
+        }\r
+        MWK{\r
+            "MWK",\r
+            "malawiske kwacha",\r
+        }\r
+        MXN{\r
+            "MXN",\r
+            "meksikanske pesos",\r
+        }\r
+        MXP{\r
+            "MXP",\r
+            "meksikanske sølvpesos (1861–1992)",\r
+        }\r
+        MXV{\r
+            "MXV",\r
+            "meksikanske unidad de inversion (UDI)",\r
+        }\r
+        MYR{\r
+            "MYR",\r
+            "malaysiske ringgit",\r
+        }\r
+        MZE{\r
+            "MZE",\r
+            "mosambikiske escudo",\r
+        }\r
+        MZM{\r
+            "MZM",\r
+            "gamle mosambikiske metical",\r
+        }\r
+        MZN{\r
+            "MZN",\r
+            "mosambikiske metical",\r
+        }\r
+        NAD{\r
+            "NAD",\r
+            "namibiske dollar",\r
+        }\r
+        NGN{\r
+            "NGN",\r
+            "nigerianske naira",\r
+        }\r
+        NIC{\r
+            "NIC",\r
+            "nicaraguanske cordoba (1988–1991)",\r
+        }\r
+        NIO{\r
+            "NIO",\r
+            "nicaraguanske córdoba",\r
+        }\r
+        NLG{\r
+            "NLG",\r
+            "nederlandske gylden",\r
+        }\r
+        NOK{\r
+            "kr",\r
+            "norske kroner",\r
+        }\r
+        NPR{\r
+            "NPR",\r
+            "nepalske rupier",\r
+        }\r
+        NZD{\r
+            "NZD",\r
+            "newzealandske dollar",\r
+        }\r
+        OMR{\r
+            "OMR",\r
+            "omanske rialer",\r
+        }\r
+        PAB{\r
+            "PAB",\r
+            "panamanske balboa",\r
+        }\r
+        PEI{\r
+            "PEI",\r
+            "peruanske inti",\r
+        }\r
+        PEN{\r
+            "PEN",\r
+            "peruanske sol",\r
+        }\r
+        PES{\r
+            "PES",\r
+            "peruanske sol (1863–1965)",\r
+        }\r
+        PGK{\r
+            "PGK",\r
+            "papuanske kina",\r
+        }\r
+        PHP{\r
+            "PHP",\r
+            "filippinske pesos",\r
+        }\r
+        PKR{\r
+            "PKR",\r
+            "pakistanske rupier",\r
+        }\r
+        PLN{\r
+            "PLN",\r
+            "polske zloty",\r
+        }\r
+        PLZ{\r
+            "PLZ",\r
+            "polske zloty (1950–1995)",\r
+        }\r
+        PTE{\r
+            "PTE",\r
+            "portugisiske escudo",\r
+        }\r
+        PYG{\r
+            "PYG",\r
+            "paraguayanske guarani",\r
+        }\r
+        QAR{\r
+            "QAR",\r
+            "qatarske rialer",\r
+        }\r
+        RHD{\r
+            "RHD",\r
+            "rhodesiske dollar",\r
+        }\r
+        ROL{\r
+            "ROL",\r
+            "rumenske leu (1952–2006)",\r
+        }\r
+        RON{\r
+            "RON",\r
+            "rumenske leu",\r
+        }\r
+        RSD{\r
+            "RSD",\r
+            "serbiske dinarer",\r
+        }\r
+        RUB{\r
+            "RUB",\r
+            "russiske rubler",\r
+        }\r
+        RUR{\r
+            "RUR",\r
+            "russiske rubler (1991–1998)",\r
+        }\r
+        RWF{\r
+            "RWF",\r
+            "rwandiske franc",\r
+        }\r
+        SAR{\r
+            "SAR",\r
+            "saudiarabiske riyaler",\r
+        }\r
+        SBD{\r
+            "SBD",\r
+            "salomonske dollar",\r
+        }\r
+        SCR{\r
+            "SCR",\r
+            "seychelliske rupier",\r
+        }\r
+        SDD{\r
+            "SDD",\r
+            "sudanesiske dinarer (1992–2007)",\r
+        }\r
+        SDG{\r
+            "SDG",\r
+            "sudanske pund",\r
+        }\r
+        SDP{\r
+            "SDP",\r
+            "sudanesiske pund",\r
+        }\r
+        SEK{\r
+            "SEK",\r
+            "svenske kroner",\r
+        }\r
+        SGD{\r
+            "SGD",\r
+            "singaporske dollar",\r
+        }\r
+        SHP{\r
+            "SHP",\r
+            "sankthelenske pund",\r
+        }\r
+        SIT{\r
+            "SIT",\r
+            "slovenske tolar",\r
+        }\r
+        SKK{\r
+            "SKK",\r
+            "slovakiske koruna",\r
+        }\r
+        SLL{\r
+            "SLL",\r
+            "sierraleonske leone",\r
+        }\r
+        SOS{\r
+            "SOS",\r
+            "somaliske shilling",\r
+        }\r
+        SRD{\r
+            "SRD",\r
+            "surinamske dollar",\r
+        }\r
+        SRG{\r
+            "SRG",\r
+            "surinamske gylden",\r
+        }\r
+        SSP{\r
+            "SSP",\r
+            "sørsudanske pund",\r
+        }\r
+        STD{\r
+            "STD",\r
+            "saotomesiske dobra (1977–2017)",\r
+        }\r
+        STN{\r
+            "STN",\r
+            "saotomesiske dobra",\r
+        }\r
+        SUR{\r
+            "SUR",\r
+            "sovjetiske rubler",\r
+        }\r
+        SVC{\r
+            "SVC",\r
+            "salvadoranske colon",\r
+        }\r
+        SYP{\r
+            "SYP",\r
+            "syriske pund",\r
+        }\r
+        SZL{\r
+            "SZL",\r
+            "swazilandske lilangeni",\r
+        }\r
+        THB{\r
+            "THB",\r
+            "thailandske baht",\r
+        }\r
+        TJR{\r
+            "TJR",\r
+            "tadsjikiske rubler",\r
+        }\r
+        TJS{\r
+            "TJS",\r
+            "tadsjikiske somoni",\r
+        }\r
+        TMM{\r
+            "TMM",\r
+            "turkmenske manat (1993–2009)",\r
+        }\r
+        TMT{\r
+            "TMT",\r
+            "turkmenske manat",\r
+        }\r
+        TND{\r
+            "TND",\r
+            "tunisiske dinarer",\r
+        }\r
+        TOP{\r
+            "TOP",\r
+            "tonganske paʻanga",\r
+        }\r
+        TPE{\r
+            "TPE",\r
+            "timoresiske escudo",\r
+        }\r
+        TRL{\r
+            "TRL",\r
+            "tyrkiske lire (1922–2005)",\r
+        }\r
+        TRY{\r
+            "TRY",\r
+            "tyrkiske lire",\r
+        }\r
+        TTD{\r
+            "TTD",\r
+            "trinidadiske dollar",\r
+        }\r
+        TWD{\r
+            "TWD",\r
+            "nye taiwanske dollar",\r
+        }\r
+        TZS{\r
+            "TZS",\r
+            "tanzanianske shilling",\r
+        }\r
+        UAH{\r
+            "UAH",\r
+            "ukrainske hryvnia",\r
+        }\r
+        UAK{\r
+            "UAK",\r
+            "ukrainske karbovanetz",\r
+        }\r
+        UGS{\r
+            "UGS",\r
+            "ugandiske shilling (1966–1987)",\r
+        }\r
+        UGX{\r
+            "UGX",\r
+            "ugandiske shilling",\r
+        }\r
+        USD{\r
+            "USD",\r
+            "amerikanske dollar",\r
+        }\r
+        USN{\r
+            "USN",\r
+            "amerikanske dollar (neste dag)",\r
+        }\r
+        USS{\r
+            "USS",\r
+            "amerikanske dollar (samme dag)",\r
+        }\r
+        UYI{\r
+            "UYI",\r
+            "uruguyanske pesos (indekserte enheter)",\r
+        }\r
+        UYP{\r
+            "UYP",\r
+            "uruguayanske pesos (1975–1993)",\r
+        }\r
+        UYU{\r
+            "UYU",\r
+            "uruguayanske pesos",\r
+        }\r
+        UZS{\r
+            "UZS",\r
+            "usbekiske som",\r
+        }\r
+        VEB{\r
+            "VEB",\r
+            "venezuelanske bolivar (1871–2008)",\r
+        }\r
+        VEF{\r
+            "VEF",\r
+            "venezuelanske bolivar (2008–2018)",\r
+        }\r
+        VES{\r
+            "VES",\r
+            "venezuelanske bolivar",\r
+        }\r
+        VND{\r
+            "VND",\r
+            "vietnamesiske dong",\r
+        }\r
+        VNN{\r
+            "VNN",\r
+            "vietnamesiske dong (1978–1985)",\r
+        }\r
+        VUV{\r
+            "VUV",\r
+            "vanuatiske vatu",\r
+        }\r
+        WST{\r
+            "WST",\r
+            "samoanske tala",\r
+        }\r
+        XAF{\r
+            "XAF",\r
+            "sentralafrikanske CFA-franc",\r
+        }\r
+        XAG{\r
+            "XAG",\r
+            "sølv",\r
+        }\r
+        XAU{\r
+            "XAU",\r
+            "gull",\r
+        }\r
+        XBA{\r
+            "XBA",\r
+            "europeisk sammensatt enhet",\r
+        }\r
+        XBB{\r
+            "XBB",\r
+            "europeisk monetær enhet",\r
+        }\r
+        XBC{\r
+            "XBC",\r
+            "europeisk kontoenhet (XBC)",\r
+        }\r
+        XBD{\r
+            "XBD",\r
+            "europeisk kontoenhet (XBD)",\r
+        }\r
+        XCD{\r
+            "XCD",\r
+            "østkaribiske dollar",\r
+        }\r
+        XDR{\r
+            "XDR",\r
+            "spesielle trekkrettigheter",\r
+        }\r
+        XEU{\r
+            "XEU",\r
+            "europeisk valutaenhet",\r
+        }\r
+        XFO{\r
+            "XFO",\r
+            "franske gullfranc",\r
+        }\r
+        XFU{\r
+            "XFU",\r
+            "franske UIC-franc",\r
+        }\r
+        XOF{\r
+            "F CFA",\r
+            "vestafrikanske CFA-franc",\r
+        }\r
+        XPD{\r
+            "XPD",\r
+            "palladium",\r
+        }\r
+        XPF{\r
+            "XPF",\r
+            "CFP-franc",\r
+        }\r
+        XPT{\r
+            "XPT",\r
+            "platina",\r
+        }\r
+        XRE{\r
+            "XRE",\r
+            "RINET-fond",\r
+        }\r
+        XSU{\r
+            "XSU",\r
+            "sucre",\r
+        }\r
+        XTS{\r
+            "XTS",\r
+            "testvalutakode",\r
+        }\r
+        XUA{\r
+            "XUA",\r
+            "ADB-kontoenhet",\r
+        }\r
+        XXX{\r
+            "XXX",\r
+            "ukjent valuta",\r
+        }\r
+        YDD{\r
+            "YDD",\r
+            "jemenittiske dinarer",\r
+        }\r
+        YER{\r
+            "YER",\r
+            "jemenittiske rialer",\r
+        }\r
+        YUD{\r
+            "YUD",\r
+            "jugoslaviske dinarer (hard)",\r
+        }\r
+        YUM{\r
+            "YUM",\r
+            "jugoslaviske noviy-dinarer",\r
+        }\r
+        YUN{\r
+            "YUN",\r
+            "jugoslaviske konvertible dinarer",\r
+        }\r
+        YUR{\r
+            "YUR",\r
+            "jugoslaviske reformerte dinarer (1992–1993)",\r
+        }\r
+        ZAL{\r
+            "ZAL",\r
+            "sørafrikanske rand (finansielle)",\r
+        }\r
+        ZAR{\r
+            "ZAR",\r
+            "sørafrikanske rand",\r
+        }\r
+        ZMK{\r
+            "ZMK",\r
+            "zambiske kwacha (1968–2012)",\r
+        }\r
+        ZMW{\r
+            "ZMW",\r
+            "zambiske kwacha",\r
+        }\r
+        ZRN{\r
+            "ZRN",\r
+            "zairiske nye zaire",\r
+        }\r
+        ZRZ{\r
+            "ZRZ",\r
+            "zairiske zaire",\r
+        }\r
+        ZWD{\r
+            "ZWD",\r
+            "zimbabwiske dollar (1980–2008)",\r
+        }\r
+        ZWL{\r
+            "ZWL",\r
+            "zimbabwisk dollar (2009)",\r
+        }\r
+        ZWR{\r
+            "ZWR",\r
+            "zimbabwisk dollar (2008)",\r
+        }\r
+    }\r
+    Currencies%narrow{\r
+        AOA{"Kz"}\r
+        ARS{"$"}\r
+        AUD{"$"}\r
+        BAM{"KM"}\r
+        BBD{"$"}\r
+        BDT{"৳"}\r
+        BMD{"$"}\r
+        BND{"$"}\r
+        BOB{"Bs"}\r
+        BRL{"R$"}\r
+        BSD{"$"}\r
+        BWP{"P"}\r
+        BYN{"р."}\r
+        BZD{"$"}\r
+        CAD{"$"}\r
+        CLP{"$"}\r
+        CNY{"¥"}\r
+        COP{"$"}\r
+        CRC{"₡"}\r
+        CUC{"$"}\r
+        CUP{"$"}\r
+        CZK{"Kč"}\r
+        DKK{"kr"}\r
+        DOP{"$"}\r
+        EGP{"E£"}\r
+        EUR{"€"}\r
+        FJD{"$"}\r
+        FKP{"£"}\r
+        GBP{"£"}\r
+        GEL{"₾"}\r
+        GIP{"£"}\r
+        GNF{"FG"}\r
+        GTQ{"Q"}\r
+        GYD{"$"}\r
+        HKD{"$"}\r
+        HNL{"L"}\r
+        HRK{"kn"}\r
+        HUF{"Ft"}\r
+        IDR{"Rp"}\r
+        ILS{"₪"}\r
+        INR{"₹"}\r
+        ISK{"kr"}\r
+        JMD{"$"}\r
+        JPY{"¥"}\r
+        KHR{"៛"}\r
+        KMF{"CF"}\r
+        KPW{"₩"}\r
+        KRW{"₩"}\r
+        KYD{"$"}\r
+        KZT{"₸"}\r
+        LAK{"₭"}\r
+        LBP{"L£"}\r
+        LKR{"Rs"}\r
+        LRD{"$"}\r
+        LTL{"Lt"}\r
+        LVL{"Ls"}\r
+        MGA{"Ar"}\r
+        MMK{"K"}\r
+        MNT{"₮"}\r
+        MUR{"Rs"}\r
+        MXN{"$"}\r
+        MYR{"RM"}\r
+        NAD{"$"}\r
+        NGN{"₦"}\r
+        NIO{"C$"}\r
+        NOK{"kr"}\r
+        NPR{"Rs"}\r
+        NZD{"$"}\r
+        PHP{"₱"}\r
+        PKR{"Rs"}\r
+        PLN{"zł"}\r
+        PYG{"₲"}\r
+        RON{"L"}\r
+        RUB{"₽"}\r
+        RWF{"RF"}\r
+        SBD{"$"}\r
+        SEK{"kr"}\r
+        SGD{"$"}\r
+        SHP{"£"}\r
+        SRD{"$"}\r
+        SSP{"£"}\r
+        SYP{"£"}\r
+        THB{"฿"}\r
+        TOP{"T$"}\r
+        TRY{"₺"}\r
+        TTD{"$"}\r
+        TWD{"NT$"}\r
+        UAH{"₴"}\r
+        USD{"$"}\r
+        UYU{"$"}\r
+        VEF{"Bs"}\r
+        VND{"₫"}\r
+        XCD{"$"}\r
+        ZAR{"R"}\r
+        ZMW{"ZK"}\r
+    }\r
+    Currencies%variant{\r
+        GEL{"₾"}\r
+        TRY{"TL"}\r
+    }\r
+    CurrencyPlurals{\r
+        ADP{\r
+            one{"andorransk pesetas"}\r
+            other{"andorranske pesetas"}\r
+        }\r
+        AED{\r
+            one{"emiratarabisk dirham"}\r
+            other{"emiratarabiske dirham"}\r
+        }\r
+        AFA{\r
+            one{"afghansk afghani (1927–2002)"}\r
+            other{"afghanske afghani (1927–2002)"}\r
+        }\r
+        AFN{\r
+            one{"afghansk afghani"}\r
+            other{"afghanske afghani"}\r
+        }\r
+        ALK{\r
+            one{"albansk lek (1946–1965)"}\r
+            other{"albanske lek (1946–1965)"}\r
+        }\r
+        ALL{\r
+            one{"albansk lek"}\r
+            other{"albanske lek"}\r
+        }\r
+        AMD{\r
+            one{"armensk dram"}\r
+            other{"armenske dram"}\r
+        }\r
+        ANG{\r
+            one{"nederlandsk antillegylden"}\r
+            other{"nederlandske antillegylden"}\r
+        }\r
+        AOA{\r
+            one{"angolansk kwanza"}\r
+            other{"angolanske kwanza"}\r
+        }\r
+        AOK{\r
+            one{"angolansk kwanza (1977–1990)"}\r
+            other{"angolanske kwanza (1977–1990)"}\r
+        }\r
+        AON{\r
+            one{"angolansk ny kwanza"}\r
+            other{"angolanske nye kwanza (1990–2000)"}\r
+        }\r
+        AOR{\r
+            one{"angolansk kwanza reajustado (1995–1999)"}\r
+            other{"angolanske omjusterte kwanza (1995–1999)"}\r
+        }\r
+        ARA{\r
+            one{"argentinsk austral"}\r
+            other{"argentinske australer"}\r
+        }\r
+        ARL{\r
+            one{"argentinsk peso ley"}\r
+            other{"argentinske peso ley"}\r
+        }\r
+        ARM{\r
+            one{"argentinsk pesos (1881–1970)"}\r
+            other{"argentinske pesos (1881–1970)"}\r
+        }\r
+        ARP{\r
+            one{"argentinsk pesos (1983–1985)"}\r
+            other{"argentinske pesos (1983–1985)"}\r
+        }\r
+        ARS{\r
+            one{"argentinsk peso"}\r
+            other{"argentinske pesos"}\r
+        }\r
+        ATS{\r
+            one{"østerriksk schilling"}\r
+            other{"østerrikske schilling"}\r
+        }\r
+        AUD{\r
+            one{"australsk dollar"}\r
+            other{"australske dollar"}\r
+        }\r
+        AWG{\r
+            one{"arubisk florin"}\r
+            other{"arubiske floriner"}\r
+        }\r
+        AZM{\r
+            one{"aserbajdsjansk manat (1993–2006)"}\r
+            other{"aserbajdsjanske manat (1993–2006)"}\r
+        }\r
+        AZN{\r
+            one{"aserbajdsjansk manat"}\r
+            other{"aserbajdsjanske manat"}\r
+        }\r
+        BAD{\r
+            one{"bosnisk-hercegovinsk dinar (1992–1994)"}\r
+            other{"bosnisk-hercegovinske dinarer (1992–1994)"}\r
+        }\r
+        BAM{\r
+            one{"bosnisk-hercegovinsk konvertibel mark"}\r
+            other{"bosnisk-hercegovinske konvertible mark"}\r
+        }\r
+        BAN{\r
+            one{"ny bosnisk-hercegovinsk dinar (1994–1997)"}\r
+            other{"nye bosnisk-hercegovinske dinarer (1994–1997)"}\r
+        }\r
+        BBD{\r
+            one{"barbadisk dollar"}\r
+            other{"barbadiske dollar"}\r
+        }\r
+        BDT{\r
+            one{"bangladeshisk taka"}\r
+            other{"bangladeshiske taka"}\r
+        }\r
+        BEC{\r
+            one{"belgisk franc (konvertibel)"}\r
+            other{"belgiske franc (konvertible)"}\r
+        }\r
+        BEF{\r
+            one{"belgisk franc"}\r
+            other{"belgiske franc"}\r
+        }\r
+        BEL{\r
+            one{"belgisk franc (finansiell)"}\r
+            other{"belgiske franc (finansielle)"}\r
+        }\r
+        BGL{\r
+            one{"bulgarsk lev (hard)"}\r
+            other{"bulgarske lev (hard)"}\r
+        }\r
+        BGM{\r
+            one{"bulgarsk lev (sosialist)"}\r
+            other{"bulgarske lev (sosialist)"}\r
+        }\r
+        BGN{\r
+            one{"bulgarsk lev"}\r
+            other{"bulgarske lev"}\r
+        }\r
+        BGO{\r
+            one{"bulgarsk lev (1879–1952)"}\r
+            other{"bulgarske lev (1879–1952)"}\r
+        }\r
+        BHD{\r
+            one{"bahrainsk dinar"}\r
+            other{"bahrainske dinarer"}\r
+        }\r
+        BIF{\r
+            one{"burundisk franc"}\r
+            other{"burundiske franc"}\r
+        }\r
+        BMD{\r
+            one{"bermudisk dollar"}\r
+            other{"bermudiske dollar"}\r
+        }\r
+        BND{\r
+            one{"bruneisk dollar"}\r
+            other{"bruneiske dollar"}\r
+        }\r
+        BOB{\r
+            one{"boliviansk boliviano"}\r
+            other{"bolivianske boliviano"}\r
+        }\r
+        BOL{\r
+            one{"boliviansk boliviano (1863–1963)"}\r
+            other{"bolivianske boliviano (1863–1963)"}\r
+        }\r
+        BOP{\r
+            one{"boliviansk pesos"}\r
+            other{"bolivianske pesos"}\r
+        }\r
+        BOV{\r
+            one{"bolivianske mvdol"}\r
+            other{"bolivianske mvdol"}\r
+        }\r
+        BRB{\r
+            one{"brasiliansk cruzeiro novo (1967–1986)"}\r
+            other{"brasilianske cruzeiro novo (1967–1986)"}\r
+        }\r
+        BRC{\r
+            one{"brasiliansk cruzado (1986–1989)"}\r
+            other{"brasilianske cruzado (1986–1989)"}\r
+        }\r
+        BRE{\r
+            one{"brasiliansk cruzeiro (1990–1993)"}\r
+            other{"brasilianske cruzeiro (1990–1993)"}\r
+        }\r
+        BRL{\r
+            one{"brasiliansk real"}\r
+            other{"brasilianske real"}\r
+        }\r
+        BRN{\r
+            one{"brasiliansk cruzado novo (1989–1990)"}\r
+            other{"brasilianske cruzado novo (1989–1990)"}\r
+        }\r
+        BRR{\r
+            one{"brasiliansk cruzeiro (1993–1994)"}\r
+            other{"brasilianske cruzeiro (1993–1994)"}\r
+        }\r
+        BRZ{\r
+            one{"brasiliansk cruzeiro (1942–1967)"}\r
+            other{"brasilianske cruzeiro (1942–1967)"}\r
+        }\r
+        BSD{\r
+            one{"bahamansk dollar"}\r
+            other{"bahamanske dollar"}\r
+        }\r
+        BTN{\r
+            one{"bhutansk ngultrum"}\r
+            other{"bhutanske ngultrum"}\r
+        }\r
+        BUK{\r
+            one{"burmesisk kyat"}\r
+            other{"burmesiske kyat"}\r
+        }\r
+        BWP{\r
+            one{"botswansk pula"}\r
+            other{"botswanske pula"}\r
+        }\r
+        BYB{\r
+            one{"hviterussisk ny rubel (1994–1999)"}\r
+            other{"hviterussiske nye rubler (1994–1999)"}\r
+        }\r
+        BYN{\r
+            one{"ny hviterussisk rubel"}\r
+            other{"nye hviterussiske rubler"}\r
+        }\r
+        BYR{\r
+            one{"hviterussisk rubel (2000–2016)"}\r
+            other{"hviterussiske rubler (2000–2016)"}\r
+        }\r
+        BZD{\r
+            one{"belizisk dollar"}\r
+            other{"beliziske dollar"}\r
+        }\r
+        CAD{\r
+            one{"kanadisk dollar"}\r
+            other{"kanadiske dollar"}\r
+        }\r
+        CDF{\r
+            one{"kongolesisk franc"}\r
+            other{"kongolesiske franc"}\r
+        }\r
+        CHF{\r
+            one{"sveitsisk franc"}\r
+            other{"sveitsiske franc"}\r
+        }\r
+        CLE{\r
+            one{"chilensk escudo"}\r
+            other{"chilenske escudo"}\r
+        }\r
+        CLF{\r
+            one{"chilensk unidades de fomento"}\r
+            other{"chilenske unidades de fomento"}\r
+        }\r
+        CLP{\r
+            one{"chilensk peso"}\r
+            other{"chilenske pesos"}\r
+        }\r
+        CNH{\r
+            one{"kinesisk yuan (offshore)"}\r
+            other{"kinesiske yuan (offshore)"}\r
+        }\r
+        CNX{\r
+            one{"Kinas folkebank dollar"}\r
+            other{"Kinas folkebank dollar"}\r
+        }\r
+        CNY{\r
+            one{"kinesisk yuan"}\r
+            other{"kinesiske yuan"}\r
+        }\r
+        COP{\r
+            one{"colombiansk peso"}\r
+            other{"colombianske pesos"}\r
+        }\r
+        COU{\r
+            one{"colombiansk unidad de valor real"}\r
+            other{"colombianske unidad de valor real"}\r
+        }\r
+        CRC{\r
+            one{"costaricansk colón"}\r
+            other{"costaricanske colón"}\r
+        }\r
+        CSD{\r
+            one{"serbisk dinar (2002–2006)"}\r
+            other{"serbiske dinarer (2002–2006)"}\r
+        }\r
+        CSK{\r
+            one{"tsjekkoslovakisk koruna (hard)"}\r
+            other{"tsjekkoslovakiske koruna (hard)"}\r
+        }\r
+        CUC{\r
+            one{"kubansk konvertibel peso"}\r
+            other{"kubanske konvertible pesos"}\r
+        }\r
+        CUP{\r
+            one{"kubansk peso"}\r
+            other{"kubanske pesos"}\r
+        }\r
+        CVE{\r
+            one{"kappverdisk escudo"}\r
+            other{"kappverdiske escudos"}\r
+        }\r
+        CYP{\r
+            one{"kypriotisk pund"}\r
+            other{"kypriotiske pund"}\r
+        }\r
+        CZK{\r
+            one{"tsjekkisk koruna"}\r
+            other{"tsjekkiske koruna"}\r
+        }\r
+        DDM{\r
+            one{"østtysk mark"}\r
+            other{"østtyske mark"}\r
+        }\r
+        DEM{\r
+            one{"tysk mark"}\r
+            other{"tyske mark"}\r
+        }\r
+        DJF{\r
+            one{"djiboutisk franc"}\r
+            other{"djiboutiske franc"}\r
+        }\r
+        DKK{\r
+            one{"dansk krone"}\r
+            other{"danske kroner"}\r
+        }\r
+        DOP{\r
+            one{"dominikansk peso"}\r
+            other{"dominikanske pesos"}\r
+        }\r
+        DZD{\r
+            one{"algerisk dinar"}\r
+            other{"algeriske dinarer"}\r
+        }\r
+        ECS{\r
+            one{"ecuadoriansk sucre"}\r
+            other{"ecuadorianske sucre"}\r
+        }\r
+        ECV{\r
+            one{"ecuadoriansk unidad de valor constante (UVC)"}\r
+            other{"ecuadorianske unidad de valor constante (UVC)"}\r
+        }\r
+        EEK{\r
+            one{"estisk kroon"}\r
+            other{"estiske kroner"}\r
+        }\r
+        EGP{\r
+            one{"egyptisk pund"}\r
+            other{"egyptiske pund"}\r
+        }\r
+        ERN{\r
+            one{"eritreisk nakfa"}\r
+            other{"eritreiske nakfa"}\r
+        }\r
+        ESA{\r
+            one{"spansk peseta (A–konto)"}\r
+            other{"spanske peseta (A–konto)"}\r
+        }\r
+        ESB{\r
+            one{"spansk peseta (konvertibel konto)"}\r
+            other{"spanske peseta (konvertibel konto)"}\r
+        }\r
+        ESP{\r
+            one{"spansk peseta"}\r
+            other{"spanske peseta"}\r
+        }\r
+        ETB{\r
+            one{"etiopisk birr"}\r
+            other{"etiopiske birr"}\r
+        }\r
+        EUR{\r
+            one{"euro"}\r
+            other{"euro"}\r
+        }\r
+        FIM{\r
+            one{"finsk mark"}\r
+            other{"finske mark"}\r
+        }\r
+        FJD{\r
+            one{"fijiansk dollar"}\r
+            other{"fijianske dollar"}\r
+        }\r
+        FKP{\r
+            one{"falklandspund"}\r
+            other{"falklandspund"}\r
+        }\r
+        FRF{\r
+            one{"fransk franc"}\r
+            other{"franske franc"}\r
+        }\r
+        GBP{\r
+            one{"britisk pund"}\r
+            other{"britiske pund"}\r
+        }\r
+        GEK{\r
+            one{"georgisk kupon larit"}\r
+            other{"georgiske kupon larit"}\r
+        }\r
+        GEL{\r
+            one{"georgisk lari"}\r
+            other{"georgiske lari"}\r
+        }\r
+        GHC{\r
+            one{"ghanesisk cedi (1979–2007)"}\r
+            other{"ghanesiske cedi (1979–2007)"}\r
+        }\r
+        GHS{\r
+            one{"ghanesisk cedi"}\r
+            other{"ghanesiske cedi"}\r
+        }\r
+        GIP{\r
+            one{"gibraltarsk pund"}\r
+            other{"gibraltarske pund"}\r
+        }\r
+        GMD{\r
+            one{"gambisk dalasi"}\r
+            other{"gambiske dalasi"}\r
+        }\r
+        GNF{\r
+            one{"guineansk franc"}\r
+            other{"guineanske franc"}\r
+        }\r
+        GNS{\r
+            one{"guineansk syli"}\r
+            other{"guineanske syli"}\r
+        }\r
+        GQE{\r
+            one{"ekvatorialguineansk ekwele guineana"}\r
+            other{"ekvatorialguineanske ekwele guineana"}\r
+        }\r
+        GRD{\r
+            one{"gresk drakme"}\r
+            other{"greske drakmer"}\r
+        }\r
+        GTQ{\r
+            one{"guatemalansk quetzal"}\r
+            other{"guatemalanske quetzal"}\r
+        }\r
+        GWE{\r
+            one{"portugisisk guinea escudo"}\r
+            other{"portugisiske guinea escudo"}\r
+        }\r
+        GWP{\r
+            one{"Guinea-Bissau-pesos"}\r
+            other{"Guinea-Bissau-pesos"}\r
+        }\r
+        GYD{\r
+            one{"guyansk dollar"}\r
+            other{"guyanske dollar"}\r
+        }\r
+        HKD{\r
+            one{"Hongkong-dollar"}\r
+            other{"Hongkong-dollar"}\r
+        }\r
+        HNL{\r
+            one{"honduransk lempira"}\r
+            other{"honduranske lempira"}\r
+        }\r
+        HRD{\r
+            one{"kroatisk dinar"}\r
+            other{"kroatiske dinarer"}\r
+        }\r
+        HRK{\r
+            one{"kroatisk kuna"}\r
+            other{"kroatiske kuna"}\r
+        }\r
+        HTG{\r
+            one{"haitisk gourde"}\r
+            other{"haitiske gourde"}\r
+        }\r
+        HUF{\r
+            one{"ungarsk forint"}\r
+            other{"ungarske forinter"}\r
+        }\r
+        IDR{\r
+            one{"indonesisk rupi"}\r
+            other{"indonesiske rupier"}\r
+        }\r
+        IEP{\r
+            one{"irsk pund"}\r
+            other{"irske pund"}\r
+        }\r
+        ILP{\r
+            one{"israelsk pund"}\r
+            other{"israelske pund"}\r
+        }\r
+        ILR{\r
+            one{"israelsk shekel (1980–1985)"}\r
+            other{"israelske shekler (1980–1985)"}\r
+        }\r
+        ILS{\r
+            one{"ny israelsk shekel"}\r
+            other{"nye israelske shekler"}\r
+        }\r
+        INR{\r
+            one{"indisk rupi"}\r
+            other{"indiske rupier"}\r
+        }\r
+        IQD{\r
+            one{"iraksk dinar"}\r
+            other{"irakske dinarer"}\r
+        }\r
+        IRR{\r
+            one{"iransk rial"}\r
+            other{"iranske rialer"}\r
+        }\r
+        ISJ{\r
+            one{"islandsk krone (1918–1981)"}\r
+            other{"islandske kroner (1918–1981)"}\r
+        }\r
+        ISK{\r
+            one{"islandsk krone"}\r
+            other{"islandske kroner"}\r
+        }\r
+        ITL{\r
+            one{"italiensk lire"}\r
+            other{"italienske lire"}\r
+        }\r
+        JMD{\r
+            one{"jamaikansk dollar"}\r
+            other{"jamaikanske dollar"}\r
+        }\r
+        JOD{\r
+            one{"jordansk dinar"}\r
+            other{"jordanske dinarer"}\r
+        }\r
+        JPY{\r
+            one{"japansk yen"}\r
+            other{"japanske yen"}\r
+        }\r
+        KES{\r
+            one{"kenyansk shilling"}\r
+            other{"kenyanske shilling"}\r
+        }\r
+        KGS{\r
+            one{"kirgisisk som"}\r
+            other{"kirgisiske som"}\r
+        }\r
+        KHR{\r
+            one{"kambodsjansk riel"}\r
+            other{"kambodsjanske riel"}\r
+        }\r
+        KMF{\r
+            one{"komorisk franc"}\r
+            other{"komoriske franc"}\r
+        }\r
+        KPW{\r
+            one{"nordkoreansk won"}\r
+            other{"nordkoreanske won"}\r
+        }\r
+        KRH{\r
+            one{"sørkoreansk hwan (1953–1962)"}\r
+            other{"sørkoreanske hwan (1953–1962)"}\r
+        }\r
+        KRO{\r
+            one{"sørkoreansk won (1945–1953)"}\r
+            other{"sørkoreanske won (1945–1953)"}\r
+        }\r
+        KRW{\r
+            one{"sørkoreansk won"}\r
+            other{"sørkoreanske won"}\r
+        }\r
+        KWD{\r
+            one{"kuwaitisk dinar"}\r
+            other{"kuwaitiske dinarer"}\r
+        }\r
+        KYD{\r
+            one{"caymansk dollar"}\r
+            other{"caymanske dollar"}\r
+        }\r
+        KZT{\r
+            one{"kasakhstansk tenge"}\r
+            other{"kasakhstanske tenge"}\r
+        }\r
+        LAK{\r
+            one{"laotisk kip"}\r
+            other{"laotiske kip"}\r
+        }\r
+        LBP{\r
+            one{"libanesisk pund"}\r
+            other{"libanesiske pund"}\r
+        }\r
+        LKR{\r
+            one{"srilankisk rupi"}\r
+            other{"srilankiske rupier"}\r
+        }\r
+        LRD{\r
+            one{"liberisk dollar"}\r
+            other{"liberiske dollar"}\r
+        }\r
+        LSL{\r
+            one{"lesothisk loti"}\r
+            other{"lesothiske loti"}\r
+        }\r
+        LTL{\r
+            one{"litauisk lita"}\r
+            other{"litauiske lita"}\r
+        }\r
+        LTT{\r
+            one{"litauisk talonas"}\r
+            other{"litauiske talonas"}\r
+        }\r
+        LUC{\r
+            one{"luxemburgsk konvertibel franc"}\r
+            other{"luxemburgske konvertible franc"}\r
+        }\r
+        LUF{\r
+            one{"luxemburgsk franc"}\r
+            other{"luxemburgske franc"}\r
+        }\r
+        LUL{\r
+            one{"luxemburgsk finansiell franc"}\r
+            other{"luxemburgske finansielle franc"}\r
+        }\r
+        LVL{\r
+            one{"latvisk lats"}\r
+            other{"latviske lats"}\r
+        }\r
+        LVR{\r
+            one{"latvisk rubel"}\r
+            other{"latviske rubler"}\r
+        }\r
+        LYD{\r
+            one{"libysk dinar"}\r
+            other{"libyske dinarer"}\r
+        }\r
+        MAD{\r
+            one{"marokkansk dirham"}\r
+            other{"marokkanske dirham"}\r
+        }\r
+        MAF{\r
+            one{"marokkansk franc"}\r
+            other{"marokkanske franc"}\r
+        }\r
+        MCF{\r
+            one{"monegaskisk franc"}\r
+            other{"monegaskiske franc"}\r
+        }\r
+        MDC{\r
+            one{"moldovsk cupon"}\r
+            other{"moldovske cupon"}\r
+        }\r
+        MDL{\r
+            one{"moldovsk leu"}\r
+            other{"moldovske lei"}\r
+        }\r
+        MGA{\r
+            one{"madagassisk ariary"}\r
+            other{"madagassiske ariary"}\r
+        }\r
+        MGF{\r
+            one{"madagassisk franc"}\r
+            other{"madagassiske franc"}\r
+        }\r
+        MKD{\r
+            one{"makedonsk denar"}\r
+            other{"makedonske denarer"}\r
+        }\r
+        MKN{\r
+            one{"makedonsk denar (1992–1993)"}\r
+            other{"makedonske denarer (1992–1993)"}\r
+        }\r
+        MLF{\r
+            one{"malisk franc"}\r
+            other{"maliske franc"}\r
+        }\r
+        MMK{\r
+            one{"myanmarsk kyat"}\r
+            other{"myanmarske kyat"}\r
+        }\r
+        MNT{\r
+            one{"mongolsk tugrik"}\r
+            other{"mongolske tugrik"}\r
+        }\r
+        MOP{\r
+            one{"makaoisk pataca"}\r
+            other{"makaoiske pataca"}\r
+        }\r
+        MRO{\r
+            one{"mauritansk ouguiya (1973–2017)"}\r
+            other{"mauritanske ouguiya (1973–2017)"}\r
+        }\r
+        MRU{\r
+            one{"mauritansk ouguiya"}\r
+            other{"mauritanske ouguiya"}\r
+        }\r
+        MTL{\r
+            one{"maltesisk lira"}\r
+            other{"maltesiske lira"}\r
+        }\r
+        MTP{\r
+            one{"maltesisk pund"}\r
+            other{"maltesiske pund"}\r
+        }\r
+        MUR{\r
+            one{"mauritisk rupi"}\r
+            other{"mauritiske rupier"}\r
+        }\r
+        MVP{\r
+            one{"maldivisk rupi"}\r
+            other{"maldiviske rupier"}\r
+        }\r
+        MVR{\r
+            one{"maldivisk rufiyaa"}\r
+            other{"maldiviske rufiyaa"}\r
+        }\r
+        MWK{\r
+            one{"malawisk kwacha"}\r
+            other{"malawiske kwacha"}\r
+        }\r
+        MXN{\r
+            one{"meksikansk peso"}\r
+            other{"meksikanske pesos"}\r
+        }\r
+        MXP{\r
+            one{"meksikansk sølvpesos (1860–1992)"}\r
+            other{"meksikanske sølvpesos (1860–1992)"}\r
+        }\r
+        MXV{\r
+            one{"meksikansk unidad de inversion (UDI)"}\r
+            other{"meksikanske unidad de inversion (UDI)"}\r
+        }\r
+        MYR{\r
+            one{"malaysisk ringgit"}\r
+            other{"malaysiske ringgit"}\r
+        }\r
+        MZE{\r
+            one{"mosambikisk escudo"}\r
+            other{"mosambikiske escudo"}\r
+        }\r
+        MZM{\r
+            one{"gammel mosambikisk metical"}\r
+            other{"gamle mosambikiske metical"}\r
+        }\r
+        MZN{\r
+            one{"mosambikisk metical"}\r
+            other{"mosambikiske metical"}\r
+        }\r
+        NAD{\r
+            one{"namibisk dollar"}\r
+            other{"namibiske dollar"}\r
+        }\r
+        NGN{\r
+            one{"nigeriansk naira"}\r
+            other{"nigerianske naira"}\r
+        }\r
+        NIC{\r
+            one{"nicaraguansk cordoba (1988–1991)"}\r
+            other{"nicaraguanske cordoba (1988–1991)"}\r
+        }\r
+        NIO{\r
+            one{"nicaraguansk córdoba"}\r
+            other{"nicaraguanske córdoba"}\r
+        }\r
+        NLG{\r
+            one{"nederlandsk gylden"}\r
+            other{"nederlandske gylden"}\r
+        }\r
+        NOK{\r
+            one{"norsk krone"}\r
+            other{"norske kroner"}\r
+        }\r
+        NPR{\r
+            one{"nepalsk rupi"}\r
+            other{"nepalske rupier"}\r
+        }\r
+        NZD{\r
+            one{"newzealandsk dollar"}\r
+            other{"newzealandske dollar"}\r
+        }\r
+        OMR{\r
+            one{"omansk rial"}\r
+            other{"omanske rialer"}\r
+        }\r
+        PAB{\r
+            one{"panamansk balboa"}\r
+            other{"panamanske balboa"}\r
+        }\r
+        PEI{\r
+            one{"peruansk inti"}\r
+            other{"peruanske inti"}\r
+        }\r
+        PEN{\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
+        }\r
+        PHP{\r
+            one{"filippinsk peso"}\r
+            other{"filippinske pesos"}\r
+        }\r
+        PKR{\r
+            one{"pakistansk rupi"}\r
+            other{"pakistanske rupier"}\r
+        }\r
+        PLN{\r
+            one{"polsk zloty"}\r
+            other{"polske zloty"}\r
+        }\r
+        PLZ{\r
+            one{"polsk zloty (1950–1995)"}\r
+            other{"polske zloty (1950–1995)"}\r
+        }\r
+        PTE{\r
+            one{"portugisisk escudo"}\r
+            other{"portugisiske escudo"}\r
+        }\r
+        PYG{\r
+            one{"paraguayansk guarani"}\r
+            other{"paraguayanske guarani"}\r
+        }\r
+        QAR{\r
+            one{"qatarsk rial"}\r
+            other{"qatarske rialer"}\r
+        }\r
+        RHD{\r
+            one{"rhodesisk dollar"}\r
+            other{"rhodesiske dollar"}\r
+        }\r
+        ROL{\r
+            one{"rumensk leu (1952–2006)"}\r
+            other{"rumenske leu (1952–2006)"}\r
+        }\r
+        RON{\r
+            one{"rumensk leu"}\r
+            other{"rumenske lei"}\r
+        }\r
+        RSD{\r
+            one{"serbisk dinar"}\r
+            other{"serbiske dinarer"}\r
+        }\r
+        RUB{\r
+            one{"russisk rubel"}\r
+            other{"russiske rubler"}\r
+        }\r
+        RUR{\r
+            one{"russisk rubel (1991–1998)"}\r
+            other{"russiske rubler (1991–1998)"}\r
+        }\r
+        RWF{\r
+            one{"rwandisk franc"}\r
+            other{"rwandiske franc"}\r
+        }\r
+        SAR{\r
+            one{"saudiarabisk riyal"}\r
+            other{"saudiarabiske riyaler"}\r
+        }\r
+        SBD{\r
+            one{"salomonsk dollar"}\r
+            other{"salomonske dollar"}\r
+        }\r
+        SCR{\r
+            one{"seychellisk rupi"}\r
+            other{"seychelliske rupier"}\r
+        }\r
+        SDD{\r
+            one{"sudanesisk dinar (1992–2007)"}\r
+            other{"sudanesiske dinarer (1992–2007)"}\r
+        }\r
+        SDG{\r
+            one{"sudansk pund"}\r
+            other{"sudanske pund"}\r
+        }\r
+        SDP{\r
+            one{"sudansk pund (1957–1998)"}\r
+            other{"sudanske pund (1957–1998)"}\r
+        }\r
+        SEK{\r
+            one{"svensk krone"}\r
+            other{"svenske kroner"}\r
+        }\r
+        SGD{\r
+            one{"singaporsk dollar"}\r
+            other{"singaporske dollar"}\r
+        }\r
+        SHP{\r
+            one{"sankthelensk pund"}\r
+            other{"sankthelenske pund"}\r
+        }\r
+        SIT{\r
+            one{"slovensk tolar"}\r
+            other{"slovenske tolar"}\r
+        }\r
+        SKK{\r
+            one{"slovakisk koruna"}\r
+            other{"slovakiske koruna"}\r
+        }\r
+        SLL{\r
+            one{"sierraleonsk leone"}\r
+            other{"sierraleonske leone"}\r
+        }\r
+        SOS{\r
+            one{"somalisk shilling"}\r
+            other{"somaliske shilling"}\r
+        }\r
+        SRD{\r
+            one{"surinamsk dollar"}\r
+            other{"surinamske dollar"}\r
+        }\r
+        SRG{\r
+            one{"surinamsk gylden"}\r
+            other{"surinamske gylden"}\r
+        }\r
+        SSP{\r
+            one{"sørsudansk pund"}\r
+            other{"sørsudanske pund"}\r
+        }\r
+        STD{\r
+            one{"saotomesisk dobra (1977–2017)"}\r
+            other{"saotomesiske dobra (1977–2017)"}\r
+        }\r
+        STN{\r
+            one{"saotomesisk dobra"}\r
+            other{"saotomesiske dobra"}\r
+        }\r
+        SUR{\r
+            one{"sovjetisk rubel"}\r
+            other{"sovjetiske rubler"}\r
+        }\r
+        SVC{\r
+            one{"salvadoransk colon"}\r
+            other{"salvadoranske colon"}\r
+        }\r
+        SYP{\r
+            one{"syrisk pund"}\r
+            other{"syriske pund"}\r
+        }\r
+        SZL{\r
+            one{"swazilandsk lilangeni"}\r
+            other{"swazilandske lilangeni"}\r
+        }\r
+        THB{\r
+            one{"thailandsk baht"}\r
+            other{"thailandske baht"}\r
+        }\r
+        TJR{\r
+            one{"tadsjikisk rubel"}\r
+            other{"tadsjikiske rubler"}\r
+        }\r
+        TJS{\r
+            one{"tadsjikisk somoni"}\r
+            other{"tadsjikiske somoni"}\r
+        }\r
+        TMM{\r
+            one{"turkmensk manat (1993–2009)"}\r
+            other{"turkmenske manat (1993–2009)"}\r
+        }\r
+        TMT{\r
+            one{"turkmensk manat"}\r
+            other{"turkmenske manat"}\r
+        }\r
+        TND{\r
+            one{"tunisisk dinar"}\r
+            other{"tunisiske dinarer"}\r
+        }\r
+        TOP{\r
+            one{"tongansk paʻanga"}\r
+            other{"tonganske paʻanga"}\r
+        }\r
+        TPE{\r
+            one{"timoresisk escudo"}\r
+            other{"timoresiske escudo"}\r
+        }\r
+        TRL{\r
+            one{"tyrkisk lire (1922–2005)"}\r
+            other{"tyrkiske lire (1922–2005)"}\r
+        }\r
+        TRY{\r
+            one{"tyrkisk lire"}\r
+            other{"tyrkiske lire"}\r
+        }\r
+        TTD{\r
+            one{"trinidadisk dollar"}\r
+            other{"trinidadiske dollar"}\r
+        }\r
+        TWD{\r
+            one{"ny taiwansk dollar"}\r
+            other{"nye taiwanske dollar"}\r
+        }\r
+        TZS{\r
+            one{"tanzaniansk shilling"}\r
+            other{"tanzanianske shilling"}\r
+        }\r
+        UAH{\r
+            one{"ukrainsk hryvnia"}\r
+            other{"ukrainske hryvnia"}\r
+        }\r
+        UAK{\r
+            one{"ukrainsk karbovanetz"}\r
+            other{"ukrainske karbovanetz"}\r
+        }\r
+        UGS{\r
+            one{"ugandisk shilling (1966–1987)"}\r
+            other{"ugandiske shilling (1966–1987)"}\r
+        }\r
+        UGX{\r
+            one{"ugandisk shilling"}\r
+            other{"ugandiske shilling"}\r
+        }\r
+        USD{\r
+            one{"amerikansk dollar"}\r
+            other{"amerikanske dollar"}\r
+        }\r
+        USN{\r
+            one{"amerikansk dollar (neste dag)"}\r
+            other{"amerikanske dollar (neste dag)"}\r
+        }\r
+        USS{\r
+            one{"amerikansk dollar (samme dag)"}\r
+            other{"amerikanske dollar (samme dag)"}\r
+        }\r
+        UYI{\r
+            one{"uruguyanske pesos (indekserte enheter)"}\r
+            other{"uruguyanske pesos (indekserte enheter)"}\r
+        }\r
+        UYP{\r
+            one{"uruguayansk peso (1975–1993)"}\r
+            other{"uruguayanske pesos (1975–1993)"}\r
+        }\r
+        UYU{\r
+            one{"uruguyansk peso"}\r
+            other{"uruguayanske pesos"}\r
+        }\r
+        UZS{\r
+            one{"usbekisk som"}\r
+            other{"usbekiske som"}\r
+        }\r
+        VEB{\r
+            one{"venezuelansk bolivar (1871–2008)"}\r
+            other{"venezuelanske bolivar (1871–2008)"}\r
+        }\r
+        VEF{\r
+            one{"venezuelansk bolivar (2008–2018)"}\r
+            other{"venezuelanske bolivar (2008–2018)"}\r
+        }\r
+        VES{\r
+            one{"venezuelansk bolivar"}\r
+            other{"venezuelanske bolivar"}\r
+        }\r
+        VND{\r
+            one{"vietnamesisk dong"}\r
+            other{"vietnamesiske dong"}\r
+        }\r
+        VNN{\r
+            one{"vietnamesisk dong (1978–1985)"}\r
+            other{"vietnamesiske dong (1978–1985)"}\r
+        }\r
+        VUV{\r
+            one{"vanuatisk vatu"}\r
+            other{"vanuatiske vatu"}\r
+        }\r
+        WST{\r
+            one{"samoansk tala"}\r
+            other{"samoanske tala"}\r
+        }\r
+        XAF{\r
+            one{"sentralafrikansk CFA-franc"}\r
+            other{"sentralafrikanske CFA-franc"}\r
+        }\r
+        XAG{\r
+            one{"unse sølv"}\r
+            other{"unser sølv"}\r
+        }\r
+        XAU{\r
+            one{"unse gull"}\r
+            other{"unser gull"}\r
+        }\r
+        XBA{\r
+            one{"europeisk sammensatt enhet"}\r
+            other{"europeiske sammensatte enheter"}\r
+        }\r
+        XBB{\r
+            one{"europeisk monetær enhet"}\r
+            other{"europeiske monetære enheter"}\r
+        }\r
+        XBC{\r
+            one{"europeisk kontoenhet (XBC)"}\r
+            other{"europeiske kontoenheter"}\r
+        }\r
+        XBD{\r
+            one{"europeisk kontoenhet (XBD)"}\r
+            other{"europeiske kontoenheter (XBD)"}\r
+        }\r
+        XCD{\r
+            one{"østkaribisk dollar"}\r
+            other{"østkaribiske dollar"}\r
+        }\r
+        XDR{\r
+            one{"spesiell trekkrettighet"}\r
+            other{"spesielle trekkrettigheter"}\r
+        }\r
+        XEU{\r
+            one{"europeisk valutaenhet"}\r
+            other{"europeiske valutaenheter"}\r
+        }\r
+        XFO{\r
+            one{"fransk gullfranc"}\r
+            other{"franske gullfranc"}\r
+        }\r
+        XFU{\r
+            one{"fransk UIC-franc"}\r
+            other{"franske UIC-franc"}\r
+        }\r
+        XOF{\r
+            one{"vestafrikansk CFA-franc"}\r
+            other{"vestafrikanske CFA-franc"}\r
+        }\r
+        XPD{\r
+            one{"unse palladium"}\r
+            other{"unser palladium"}\r
+        }\r
+        XPF{\r
+            one{"CFP-franc"}\r
+            other{"CFP-franc"}\r
+        }\r
+        XPT{\r
+            one{"unse platina"}\r
+            other{"unser platina"}\r
+        }\r
+        XSU{\r
+            one{"sucre"}\r
+            other{"sucre"}\r
+        }\r
+        XTS{\r
+            one{"testvaluta"}\r
+            other{"testvaluta"}\r
+        }\r
+        XUA{\r
+            one{"ADB-kontoenhet"}\r
+            other{"ADB-kontoenheter"}\r
+        }\r
+        XXX{\r
+            one{"(ukjent valuta)"}\r
+            other{"(ukjent valuta)"}\r
+        }\r
+        YDD{\r
+            one{"jemenittisk dinar"}\r
+            other{"jemenittiske dinarer"}\r
+        }\r
+        YER{\r
+            one{"jemenittisk rial"}\r
+            other{"jemenittiske rialer"}\r
+        }\r
+        YUD{\r
+            one{"jugoslavisk dinar (hard)"}\r
+            other{"jugoslaviske dinarer (hard)"}\r
+        }\r
+        YUM{\r
+            one{"jugoslavisk noviy-dinar"}\r
+            other{"jugoslaviske noviy-dinarer"}\r
+        }\r
+        YUN{\r
+            one{"jugoslavisk konvertibel dinar"}\r
+            other{"jugoslaviske konvertible dinarer"}\r
+        }\r
+        YUR{\r
+            one{"jugoslavisk reformert dinar (1992–1993)"}\r
+            other{"jugoslaviske reformerte dinarer (1992–1993)"}\r
+        }\r
+        ZAL{\r
+            one{"sørafrikansk rand (finansiell)"}\r
+            other{"sørafrikanske rand (finansielle)"}\r
+        }\r
+        ZAR{\r
+            one{"sørafrikansk rand"}\r
+            other{"sørafrikanske rand"}\r
+        }\r
+        ZMK{\r
+            one{"zambisk kwacha (1968–2012)"}\r
+            other{"zambiske kwacha (1968–2012)"}\r
+        }\r
+        ZMW{\r
+            one{"zambisk kwacha"}\r
+            other{"zambiske kwacha"}\r
+        }\r
+        ZRN{\r
+            one{"zairisk ny zaire"}\r
+            other{"zairiske nye zaire"}\r
+        }\r
+        ZRZ{\r
+            one{"zairisk zaire"}\r
+            other{"zairiske zaire"}\r
+        }\r
+        ZWD{\r
+            one{"zimbabwisk dollar (1980–2008)"}\r
+            other{"zimbabwiske dollar (1980–2008)"}\r
+        }\r
+        ZWL{\r
+            one{"zimbabwisk dollar (2009)"}\r
+            other{"zimbabwiske dollar (2009)"}\r
+        }\r
+        ZWR{\r
+            one{"zimbabwisk dollar (2008)"}\r
+            other{"zimbabwiske dollar (2008)"}\r
+        }\r
+    }\r
+    CurrencyUnitPatterns{\r
+        one{"{0} {1}"}\r
+        other{"{0} {1}"}\r
+    }\r
 }\r
index 40a8b61..312565f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no_NO{\r
-    "%%ALIAS"{"nb_NO"}\r
+    "%%ALIAS"{"no"}\r
 }\r
index e637b34..7fb14d1 100644 (file)
@@ -216,7 +216,7 @@ nyn{
             "Faranga ya CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga ya CFA BCEAO",\r
         }\r
         ZAR{\r
index 5fc9993..90e3a72 100644 (file)
@@ -616,7 +616,7 @@ or{
             "ପୂର୍ବ କାରିବୀୟ ଡଲାର୍",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ପଶ୍ଚିମ ଆଫ୍ରିକିୟ CFA ଫ୍ରାଙ୍କ୍",\r
         }\r
         XPF{\r
index e1a9f0b..e365c10 100644 (file)
@@ -740,7 +740,7 @@ pa{
             "ਯੂਰਪੀ ਮੁਦਰਾ ਇਕਾਈ",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ਪੱਛਮੀ ਅਫ਼ਰੀਕੀ (CFA) ਫ੍ਰੈਂਕ",\r
         }\r
         XPF{\r
index bf600c1..853f119 100644 (file)
@@ -604,7 +604,7 @@ pcm{
             "Íst Karíbián Dọla",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Wẹ́st Afríká Sẹ́fa Frank",\r
         }\r
         XPF{\r
index 0910534..80f2e6d 100644 (file)
@@ -996,7 +996,7 @@ pl{
             "UIC-frank francuski",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "frank CFA",\r
         }\r
         XPD{\r
index ecc68b8..3d6f16f 100644 (file)
@@ -436,7 +436,7 @@ ps{
             "پاپوا نيوګاني کينا",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "فلپاينۍ پسو",\r
         }\r
         PKR{\r
@@ -608,7 +608,7 @@ ps{
             "ختيځ کربين ډالر",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ختيځ افريقايي CFA فرانک",\r
         }\r
         XPF{\r
index 4698a62..897ec15 100644 (file)
@@ -1112,7 +1112,7 @@ pt{
             "Franco UIC francês",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franco CFA de BCEAO",\r
         }\r
         XPD{\r
index 5a11256..2fa9078 100644 (file)
@@ -665,7 +665,7 @@ pt_PT{
             "dólar das Caraíbas Orientais",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "franco CFA (BCEAO)",\r
         }\r
         XPF{\r
index 255a50f..c6e553f 100644 (file)
@@ -604,7 +604,7 @@ qu{
             "Dólar del Caribe Oriental",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franco CFA de África Occidental",\r
         }\r
         XPF{\r
index bb927c7..255828d 100644 (file)
@@ -796,7 +796,7 @@ rm{
             "kina da la Papua Nova Guinea",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "peso filippin",\r
         }\r
         PKR{\r
@@ -1104,7 +1104,7 @@ rm{
             "franc UIC franzos",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "franc CFA da l’Africa dal Vest",\r
         }\r
         XPD{\r
index 5404a29..6c52486 100644 (file)
@@ -932,7 +932,7 @@ ro{
             "franc UIC francez",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "franc CFA BCEAO",\r
         }\r
         XPD{\r
index adec816..5d6db39 100644 (file)
@@ -212,7 +212,7 @@ rof{
             "heleri sa CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "heleri sa CFA BCEAO",\r
         }\r
         ZAR{\r
index d54ff71..e8e8bf8 100644 (file)
@@ -55,6 +55,10 @@ root{
             "NZ$",\r
             "NZD",\r
         }\r
+        PHP{\r
+            "₱",\r
+            "PHP",\r
+        }\r
         TWD{\r
             "NT$",\r
             "TWD",\r
@@ -76,7 +80,7 @@ root{
             "XCD",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "XOF",\r
         }\r
         XPF{\r
@@ -198,7 +202,7 @@ root{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"38.1"}\r
+    Version{"39"}\r
     currencySpacing{\r
         afterCurrency{\r
             currencyMatch{"[[:^S:]&[:^Z:]]"}\r
index 9204f7e..39b788a 100644 (file)
@@ -1040,7 +1040,7 @@ ru{
             "Французский UIC-франк",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "франк КФА ВСЕАО",\r
         }\r
         XPD{\r
index 7cb67a2..9b8de44 100644 (file)
@@ -216,7 +216,7 @@ rwk{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index a22b75b..34667f4 100644 (file)
@@ -212,7 +212,7 @@ saq{
             "Njilingi eel CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Njilingi eel CFA BCEAO",\r
         }\r
         ZAR{\r
index cd8faaf..6f90c2b 100644 (file)
@@ -212,7 +212,7 @@ sbp{
             "Ihela ya CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Ihela ya CFA BCEAO",\r
         }\r
         ZAR{\r
index d1c3580..cbe3fba 100644 (file)
@@ -620,7 +620,7 @@ sd{
             "اوڀر ڪيريبين ڊالر",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "اولهه آفريڪا فرينڪ",\r
         }\r
         XPF{\r
index 9db42e6..a5804a4 100644 (file)
@@ -220,7 +220,7 @@ seh{
             "Franco CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franco CFA BCEAO",\r
         }\r
         ZAR{\r
index 6d60ff6..6e92ace 100644 (file)
@@ -216,7 +216,7 @@ ses{
             "CFA Fraŋ (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA Fraŋ (BCEAO)",\r
         }\r
         ZAR{\r
index f32bdef..33efc28 100644 (file)
@@ -212,7 +212,7 @@ sg{
             "farânga CFA (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "farânga CFA (BCEAO)",\r
         }\r
         ZAR{\r
index 9412274..7e463d0 100644 (file)
@@ -216,7 +216,7 @@ shi{
             "ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ ⴱⵉⵙⴰⵡ",\r
         }\r
         ZAR{\r
index 8bfd65e..3dc2ef0 100644 (file)
@@ -217,7 +217,7 @@ shi_Latn{
             "frank ṣifa",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "frank ṣifa bisaw",\r
         }\r
         ZAR{\r
index e9f225d..d67937e 100644 (file)
@@ -1116,7 +1116,7 @@ sk{
             "francúzsky UIC frank",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "západoafrický frank",\r
         }\r
         XPD{\r
index 0d0fc61..1b18034 100644 (file)
@@ -1036,7 +1036,7 @@ sl{
             "frank UIC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "zahodnoafriški frank CFA",\r
         }\r
         XPD{\r
index 6ea9198..49f1b91 100644 (file)
@@ -216,7 +216,7 @@ sn{
             "Furenki CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Furenki CFA BCEAO",\r
         }\r
         ZAR{\r
index 1d8560e..604cae0 100644 (file)
@@ -476,7 +476,7 @@ so{
             "Kinada Babua Niyuu Gini",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Biso Filibin",\r
         }\r
         PKR{\r
@@ -652,7 +652,7 @@ so{
             "Doolarka Iist Kaaribyan",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranka CFA Galbeedka Afrika",\r
         }\r
         XPF{\r
index 03d495b..f29a1fe 100644 (file)
@@ -628,7 +628,7 @@ sq{
             "Dollari i Karaibeve Lindore",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franga e Bregut të Fildishtë",\r
         }\r
         XPF{\r
index d50e6cf..d105aec 100644 (file)
@@ -1052,7 +1052,7 @@ sr{
             "Француски UIC-франак",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ЦФА франак БЦЕАО",\r
         }\r
         XPD{\r
index 1c9c1c7..048b4aa 100644 (file)
@@ -1053,7 +1053,7 @@ sr_Latn{
             "Francuski UIC-franak",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA franak BCEAO",\r
         }\r
         XPD{\r
index 3ca3ed5..9fa124c 100644 (file)
@@ -1120,7 +1120,7 @@ sv{
             "internationella järnvägsunionens franc",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "västafrikansk franc",\r
         }\r
         XPD{\r
index a613006..0eafd3a 100644 (file)
@@ -648,7 +648,7 @@ sw{
             "Dola ya Karibi Mashariki",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga ya Afrika Magharibi CFA",\r
         }\r
         XPF{\r
index 2e4bfeb..6b2f5dd 100644 (file)
@@ -40,7 +40,7 @@ sw_CD{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
     }\r
index 2ea906a..2f01865 100644 (file)
@@ -256,7 +256,7 @@ sw_KE{
             "Faranga ya CFA ya Afrika ya Kati",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga ya CFA ya Afrika Magharibi",\r
         }\r
         XXX{\r
index a34794a..74283a9 100644 (file)
@@ -632,7 +632,7 @@ ta{
             "கிழக்கு கரீபியன் டாலர்",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "மேற்கு ஆப்பிரிக்க CFA ஃப்ராங்க்",\r
         }\r
         XPF{\r
index 939601a..ab4dff7 100644 (file)
@@ -632,7 +632,7 @@ te{
             "తూర్పు కరీబియన్ డాలర్",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "పశ్చిమ ఆఫ్రికన్ సిఏఫ్ఏ ఫ్రాంక్",\r
         }\r
         XPF{\r
index 5a9b010..04cc06d 100644 (file)
@@ -212,7 +212,7 @@ teo{
             "Ango’otol lok’ CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Ango’otol lok’ CFA BCEAO",\r
         }\r
         ZAR{\r
index 68e946d..c8454bb 100644 (file)
@@ -1096,7 +1096,7 @@ th{
             "ฟรังก์ยูไอซีฝรั่งเศส",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ฟรังก์เซฟาธนาคารกลางรัฐแอฟริกาตะวันตก",\r
         }\r
         XPD{\r
index 28e245f..f05074c 100644 (file)
@@ -620,7 +620,7 @@ tk{
             "Gündogar karib dollary",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "KFA BCEAO franky",\r
         }\r
         XPF{\r
index c380f4a..aa057c1 100644 (file)
@@ -1121,7 +1121,7 @@ tr{
             "Fransız UIC-Frangı",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Batı Afrika CFA Frangı",\r
         }\r
         XPD{\r
index 22bab87..8d80381 100644 (file)
@@ -216,7 +216,7 @@ twq{
             "CFA Fraŋ (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "CFA Fraŋ (BCEAO)",\r
         }\r
         ZAR{\r
index f27523f..4976ddf 100644 (file)
@@ -216,7 +216,7 @@ tzm{
             "Frank CFA (BEAC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Frank CFA (BCEAO)",\r
         }\r
         ZAR{\r
index 8ca5e99..6ad6e68 100644 (file)
@@ -796,7 +796,7 @@ ug{
             "پاپۇئا يېڭى گىۋىنېيە كىناسى",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "فىلىپپىن پېسوسى",\r
         }\r
         PKR{\r
@@ -1112,7 +1112,7 @@ ug{
             "فىرانسىيە UIC فرانكى",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ئافرىقا قىتئەسى پۇل-مۇئامىلە ئىتتىپاقى فرانكى (BCEAO)",\r
         }\r
         XPD{\r
index bd9976b..b37d361 100644 (file)
@@ -1040,7 +1040,7 @@ uk{
             "французький франк UIC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "західноафриканський франк",\r
         }\r
         XPD{\r
index a1e537f..13321af 100644 (file)
@@ -652,7 +652,7 @@ ur{
             "مشرقی کریبیا کا ڈالر",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "مغربی افریقی [CFA] فرانک",\r
         }\r
         XPF{\r
index 5ca7de6..c247575 100644 (file)
@@ -628,7 +628,7 @@ uz{
             "Sharqiy Karib dollari",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "G‘arbiy Afrika CFA franki",\r
         }\r
         XPF{\r
index ac47eb1..da163c0 100644 (file)
@@ -229,7 +229,7 @@ uz_Cyrl{
             "Шарқий Кариб доллари",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "XOF",\r
         }\r
         XPF{\r
index 99d75ea..0cc3f5e 100644 (file)
@@ -209,7 +209,7 @@ vai_Latn{
             "Áfíríka Tɛ Sifa",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Áfíríka Tele Jíí Sifa",\r
         }\r
         ZAR{\r
index 7f52a4d..ed490f9 100644 (file)
@@ -1096,7 +1096,7 @@ vi{
             "Đồng UIC-Franc Pháp",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franc CFA Tây Phi",\r
         }\r
         XPD{\r
index 8186c21..103c4d5 100644 (file)
@@ -216,7 +216,7 @@ vun{
             "Faranga CFA BEAC",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga CFA BCEAO",\r
         }\r
         ZAR{\r
index 5674afe..8deb0c4 100644 (file)
@@ -36,7 +36,7 @@ wo{
             "Dolaaru US",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Franc CFA bu Afrik Sowwu-jant",\r
         }\r
         XXX{\r
index 3b9e672..20b5333 100644 (file)
@@ -212,7 +212,7 @@ xog{
             "Faranga yamu Afirika ya wakati",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faranga yamu Afirika ya bugwanjuba",\r
         }\r
         ZAR{\r
index 3760d57..df19b23 100644 (file)
@@ -452,7 +452,7 @@ yo{
             "Kínà Papua Guinea Tuntun",\r
         }\r
         PHP{\r
-            "PHP",\r
+            "",\r
             "Písò Fílípìnì",\r
         }\r
         PKR{\r
@@ -632,7 +632,7 @@ yo{
             "Dọ́là Ilà Oòrùn Karíbíà",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faransì ìwọ̀-oorùn Afíríkà",\r
         }\r
         XPF{\r
index 9df1e43..3ba5354 100644 (file)
@@ -392,7 +392,7 @@ yo_BJ{
             "Dɔ́là Ilà Oòrùn Karíbíà",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "Faransì ìwɔ̀-oorùn Afíríkà",\r
         }\r
         XXX{\r
index 42a24c0..106f1cc 100644 (file)
@@ -1116,7 +1116,7 @@ yue{
             "法國法郎 (UIC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "法郎 (CFA–BCEAO)",\r
         }\r
         XPD{\r
index f287341..92f4be8 100644 (file)
@@ -1117,7 +1117,7 @@ yue_Hans{
             "法国法郎 (UIC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "法郎 (CFA–BCEAO)",\r
         }\r
         XPD{\r
index 096bc39..7e852b5 100644 (file)
@@ -212,7 +212,7 @@ zgh{
             "ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ ⴱⵉⵙⴰⵡ",\r
         }\r
         ZAR{\r
index 5751d65..64d4e41 100644 (file)
@@ -1120,7 +1120,7 @@ zh{
             "法国法郎 (UIC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "西非法郎",\r
         }\r
         XPD{\r
index 18cff81..626643a 100644 (file)
@@ -1117,7 +1117,7 @@ zh_Hant{
             "法國法郎 (UIC)",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "法郎 (CFA–BCEAO)",\r
         }\r
         XPD{\r
index 5ae50c0..124fe53 100644 (file)
@@ -256,7 +256,7 @@ zh_Hant_HK{
             "東加勒比元",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "多哥非洲共同體法郎",\r
         }\r
         XPF{\r
index bdf7aaa..e927bb4 100644 (file)
@@ -632,7 +632,7 @@ zu{
             "i-East Caribbean Dollar",\r
         }\r
         XOF{\r
-            "CFA",\r
+            "F CFA",\r
             "i-West African CFA Franc",\r
         }\r
         XPF{\r
index 05851c8..edb72ea 100644 (file)
@@ -3,7 +3,7 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 \r
 {\r
-    "cldrVersion": "38.1",\r
+    "cldrVersion": "39",\r
     "aliases": {\r
         "ars": "ar_SA",\r
         "az_AZ": "az_Latn_AZ",\r
@@ -21,8 +21,7 @@
         "ks_IN": "ks_Arab_IN",\r
         "mni_IN": "mni_Beng_IN",\r
         "mo": "ro",\r
-        "no": "nb",\r
-        "no_NO": "nb_NO",\r
+        "no_NO": "no",\r
         "no_NO_NY": "nn_NO",\r
         "pa_IN": "pa_Guru_IN",\r
         "pa_PK": "pa_Arab_PK",\r
         "es_UY": "es_419",\r
         "es_VE": "es_419",\r
         "ff_Adlm": "root",\r
+        "nb": "no",\r
+        "nn": "no",\r
         "pa_Arab": "root",\r
         "pt_AO": "pt_PT",\r
         "pt_CH": "pt_PT",\r
index 8139c98..92211dd 100644 (file)
@@ -319,7 +319,6 @@ af{
         rn{"Rundi"}\r
         ro{"Roemeens"}\r
         rof{"Rombo"}\r
-        root{"Root"}\r
         ru{"Russies"}\r
         rup{"Aromanies"}\r
         rw{"Rwandees"}\r
index a21f4bc..271a40e 100644 (file)
@@ -376,7 +376,6 @@ am{
         ro{"ሮማኒያን"}\r
         ro_MD{"ሞልዳቪያንኛ"}\r
         rof{"ሮምቦ"}\r
-        root{"ሩት"}\r
         ru{"ራሽያኛ"}\r
         rup{"አሮማንያን"}\r
         rw{"ኪንያርዋንድኛ"}\r
index f6cb284..43dc9eb 100644 (file)
@@ -418,7 +418,6 @@ ar{
         ro_MD{"المولدوفية"}\r
         rof{"الرومبو"}\r
         rom{"الغجرية"}\r
-        root{"الجذر"}\r
         ru{"الروسية"}\r
         rup{"الأرومانيان"}\r
         rw{"الكينيارواندا"}\r
index 976062d..cb49940 100644 (file)
@@ -302,7 +302,6 @@ as{
         ro{"ৰোমানীয়"}\r
         ro_MD{"মোল্ডাভিয়ান"}\r
         rof{"ৰোম্বো"}\r
-        root{"ৰুট"}\r
         ru{"ৰাছিয়ান"}\r
         rup{"আৰোমানীয়"}\r
         rw{"কিনয়াৰোৱাণ্ডা"}\r
index bbf7695..1d06b18 100644 (file)
@@ -393,7 +393,6 @@ az{
         ro_MD{"moldav"}\r
         rof{"rombo"}\r
         rom{"roman"}\r
-        root{"rut"}\r
         ru{"rus"}\r
         rup{"aroman"}\r
         rw{"kinyarvanda"}\r
index 0b68f78..5b4750a 100644 (file)
@@ -289,7 +289,6 @@ az_Cyrl{
         rn{"рунди"}\r
         ro{"румын"}\r
         rof{"ромбо"}\r
-        root{"рут"}\r
         ru{"рус"}\r
         rup{"ароман"}\r
         rw{"кинјарванда"}\r
index 69ec15c..3df0e17 100644 (file)
@@ -325,7 +325,6 @@ be{
         ro{"румынская"}\r
         ro_MD{"малдаўская"}\r
         rof{"ромба"}\r
-        root{"корань"}\r
         ru{"руская"}\r
         rup{"арумунская"}\r
         rw{"руанда"}\r
index 8c87368..8e48434 100644 (file)
@@ -392,7 +392,6 @@ bg{
         ro_MD{"молдовски"}\r
         rof{"ромбо"}\r
         rom{"ромски"}\r
-        root{"роот"}\r
         ru{"руски"}\r
         rup{"арумънски"}\r
         rw{"киняруанда"}\r
index b375639..379ff27 100644 (file)
@@ -405,7 +405,6 @@ bn{
         ro_MD{"মলদাভিয়"}\r
         rof{"রম্বো"}\r
         rom{"রোমানি"}\r
-        root{"মূল"}\r
         ru{"রুশ"}\r
         rup{"আরমেনিয়ান"}\r
         rw{"কিনয়ারোয়ান্ডা"}\r
index 495867d..9a73ac4 100644 (file)
@@ -414,7 +414,6 @@ br{
         ro_MD{"moldoveg"}\r
         rof{"rombo"}\r
         rom{"romanieg"}\r
-        root{"gwrizienn"}\r
         ru{"rusianeg"}\r
         rup{"aroumaneg"}\r
         rw{"kinyarwanda"}\r
index 5aa8ed9..967a203 100644 (file)
@@ -329,7 +329,6 @@ brx{
         ro{"रूमानीयन्"}\r
         ro_MD{"मोल्डेवियन्"}\r
         rom{"रुमानी"}\r
-        root{"रुट"}\r
         ru{"रुसी"}\r
         rup{"आरोमानी"}\r
         rw{"किन्यारुआण्डा"}\r
index fee9a4a..4daea99 100644 (file)
@@ -402,7 +402,6 @@ bs{
         ro_MD{"moldavski"}\r
         rof{"rombo"}\r
         rom{"romani"}\r
-        root{"korijenski"}\r
         ru{"ruski"}\r
         rup{"arumunski"}\r
         rw{"kinjaruanda"}\r
index 1a7ca6c..8568349 100644 (file)
@@ -371,7 +371,6 @@ bs_Cyrl{
         ro_MD{"молдавски"}\r
         rof{"ромбо"}\r
         rom{"романи"}\r
-        root{"рут"}\r
         ru{"руски"}\r
         rup{"ароманијски"}\r
         rw{"кинјаруанда"}\r
index c2d9ce9..d753599 100644 (file)
@@ -450,7 +450,6 @@ ca{
         ro_MD{"moldau"}\r
         rof{"rombo"}\r
         rom{"romaní"}\r
-        root{"arrel"}\r
         ru{"rus"}\r
         rup{"aromanès"}\r
         rw{"ruandès"}\r
index 5477687..9037f9e 100644 (file)
@@ -407,7 +407,6 @@ ccp{
         ro_MD{"𑄟𑄧𑄣𑄴𑄘𑄞𑄨𑄠𑄧"}\r
         rof{"𑄢𑄧𑄟𑄴𑄝𑄮"}\r
         rom{"𑄢𑄮𑄟𑄚𑄨"}\r
-        root{"𑄥𑄨𑄠𑄮𑄢𑄴"}\r
         ru{"𑄢𑄪𑄌𑄴"}\r
         rup{"𑄃𑄢𑄴𑄟𑄬𑄚𑄨𑄠𑄚𑄴"}\r
         rw{"𑄇𑄨𑄚𑄴𑄠𑄢𑄮𑄠𑄚𑄴𑄓"}\r
index 42302c2..37892b2 100644 (file)
@@ -298,7 +298,6 @@ ce{
         ro{"румынийн"}\r
         ro_MD{"молдавийн"}\r
         rof{"ромбо"}\r
-        root{"ораман мотт"}\r
         ru{"оьрсийн"}\r
         rup{"аруминийн"}\r
         rw{"киньяруанда"}\r
index 120e4b4..43b4c44 100644 (file)
@@ -304,7 +304,6 @@ chr{
         ro{"ᎶᎹᏂᎠᏂ"}\r
         ro_MD{"ᎹᎵᏙᏫᎠ ᏣᎹᏂᎠᏂ"}\r
         rof{"ᎶᎹᏉ"}\r
-        root{"ᎤᎾᏍᎦᎸ"}\r
         ru{"ᏲᏅᎯ"}\r
         rup{"ᎠᏬᎹᏂᎠᏂ"}\r
         rw{"ᎩᏂᏯᏩᏂᏓ"}\r
index 796518c..e35d650 100644 (file)
@@ -282,7 +282,6 @@ ckb{
         ro{"ڕۆمانی"}\r
         ro_MD{"مۆڵداڤی"}\r
         rof{"ڕۆمبۆ"}\r
-        root{"ڕووت"}\r
         ru{"ڕووسی"}\r
         rup{"ئارمۆمانی"}\r
         rw{"کینیارواندا"}\r
index 3246d09..2c546f1 100644 (file)
@@ -471,7 +471,6 @@ cs{
         ro_MD{"moldavština"}\r
         rof{"rombo"}\r
         rom{"romština"}\r
-        root{"kořen"}\r
         rtm{"rotumanština"}\r
         ru{"ruština"}\r
         rue{"rusínština"}\r
index 733ff24..3651b28 100644 (file)
@@ -403,7 +403,6 @@ cy{
         ro_MD{"Moldofeg"}\r
         rof{"Rombo"}\r
         rom{"Romani"}\r
-        root{"Y Gwraidd"}\r
         rtm{"Rotumaneg"}\r
         ru{"Rwseg"}\r
         rup{"Aromaneg"}\r
index 8cff69c..7ba7855 100644 (file)
@@ -419,7 +419,6 @@ da{
         ro_MD{"moldovisk"}\r
         rof{"rombo"}\r
         rom{"romani"}\r
-        root{"rod"}\r
         ru{"russisk"}\r
         rup{"arumænsk"}\r
         rw{"kinyarwanda"}\r
index 8ea0f67..87f0c14 100644 (file)
@@ -468,7 +468,6 @@ de{
         ro_MD{"Moldauisch"}\r
         rof{"Rombo"}\r
         rom{"Romani"}\r
-        root{"Root"}\r
         rtm{"Rotumanisch"}\r
         ru{"Russisch"}\r
         rue{"Russinisch"}\r
index e6149e3..571896a 100644 (file)
@@ -416,7 +416,6 @@ el{
         ro_MD{"Μολδαβικά"}\r
         rof{"Ρόμπο"}\r
         rom{"Ρομανί"}\r
-        root{"Ρίζα"}\r
         ru{"Ρωσικά"}\r
         rup{"Αρομανικά"}\r
         rw{"Κινιαρουάντα"}\r
index 106b75a..2018b46 100644 (file)
@@ -498,7 +498,6 @@ en{
         ro_MD{"Moldavian"}\r
         rof{"Rombo"}\r
         rom{"Romany"}\r
-        root{"Root"}\r
         rtm{"Rotuman"}\r
         ru{"Russian"}\r
         rue{"Rusyn"}\r
index 7259956..239da18 100644 (file)
@@ -420,7 +420,6 @@ es{
         ro_MD{"moldavo"}\r
         rof{"rombo"}\r
         rom{"romaní"}\r
-        root{"raíz"}\r
         ru{"ruso"}\r
         rup{"arrumano"}\r
         rw{"kinyarwanda"}\r
index 8425651..097f7d4 100644 (file)
@@ -319,7 +319,6 @@ eu{
         ro{"errumaniera"}\r
         ro_MD{"moldaviera"}\r
         rof{"rombo"}\r
-        root{"erroa"}\r
         ru{"errusiera"}\r
         rup{"aromaniera"}\r
         rw{"kinyaruanda"}\r
index 5558f65..d5cd3b4 100644 (file)
@@ -416,7 +416,6 @@ fa{
         ro_MD{"مولداویایی"}\r
         rof{"رومبویی"}\r
         rom{"رومانویی"}\r
-        root{"ریشه"}\r
         ru{"روسی"}\r
         rup{"آرومانی"}\r
         rw{"کینیارواندایی"}\r
index a918961..ef0df66 100644 (file)
@@ -479,7 +479,6 @@ fi{
         ro_MD{"moldova"}\r
         rof{"rombo"}\r
         rom{"romani"}\r
-        root{"juuri"}\r
         rtm{"rotuma"}\r
         ru{"venäjä"}\r
         rue{"ruteeni"}\r
index e2db733..a12349a 100644 (file)
@@ -322,7 +322,6 @@ fil{
         ro{"Romanian"}\r
         ro_MD{"Moldavian"}\r
         rof{"Rombo"}\r
-        root{"Root"}\r
         ru{"Russian"}\r
         rup{"Aromanian"}\r
         rw{"Kinyarwanda"}\r
index 1472dba..646cd7e 100644 (file)
@@ -479,7 +479,6 @@ fr{
         ro_MD{"moldave"}\r
         rof{"rombo"}\r
         rom{"romani"}\r
-        root{"racine"}\r
         rtm{"rotuman"}\r
         ru{"russe"}\r
         rue{"ruthène"}\r
index 29b6653..e73a6d2 100644 (file)
@@ -397,7 +397,6 @@ fy{
         ro_MD{"Moldavysk"}\r
         rof{"Rombo"}\r
         rom{"Romani"}\r
-        root{"Root"}\r
         ru{"Russysk"}\r
         rup{"Aromaniaansk"}\r
         rw{"Kinyarwanda"}\r
index a0e0f0d..dcb71aa 100644 (file)
@@ -286,7 +286,6 @@ ga{
         ro_MD{"Moldáivis"}\r
         rof{"Rombo"}\r
         rom{"Romainis"}\r
-        root{"Root"}\r
         ru{"Rúisis"}\r
         rup{"Arómáinis"}\r
         rw{"Ciniaruaindis"}\r
index b8b3111..91041e3 100644 (file)
@@ -458,7 +458,6 @@ gd{
         ro_MD{"Moldobhais"}\r
         rof{"Rombo"}\r
         rom{"Romanais"}\r
-        root{"Root"}\r
         ru{"Ruisis"}\r
         rue{"Rusyn"}\r
         rug{"Roviana"}\r
index 43f837b..8caf9a9 100644 (file)
@@ -322,7 +322,6 @@ gl{
         ro{"romanés"}\r
         ro_MD{"moldavo"}\r
         rof{"rombo"}\r
-        root{"raíz"}\r
         ru{"ruso"}\r
         rup{"aromanés"}\r
         rw{"kiñaruanda"}\r
index 24ab5f8..d6d98ea 100644 (file)
@@ -336,7 +336,6 @@ gsw{
         ro{"Rumänisch"}\r
         ro_MD{"Moldawisch"}\r
         rom{"Zigüünerschpraach"}\r
-        root{"Root"}\r
         ru{"Russisch"}\r
         rup{"Aromunisch"}\r
         rw{"Ruandisch"}\r
index 2a30fa4..ba163ee 100644 (file)
@@ -415,7 +415,6 @@ gu{
         ro_MD{"મોલડાવિયન"}\r
         rof{"રોમ્બો"}\r
         rom{"રોમાની"}\r
-        root{"રૂટ"}\r
         ru{"રશિયન"}\r
         rup{"અરોમેનિયન"}\r
         rw{"કિન્યારવાન્ડા"}\r
index 0529a6e..f6df92e 100644 (file)
@@ -410,7 +410,6 @@ he{
         ro_MD{"מולדבית"}\r
         rof{"רומבו"}\r
         rom{"רומאני"}\r
-        root{"רוט"}\r
         ru{"רוסית"}\r
         rup{"ארומנית"}\r
         rw{"קנירואנדית"}\r
index f995ade..51a81a2 100644 (file)
@@ -405,7 +405,6 @@ hi{
         ro_MD{"मोलडावियन"}\r
         rof{"रोम्बो"}\r
         rom{"रोमानी"}\r
-        root{"रूट"}\r
         ru{"रूसी"}\r
         rup{"अरोमानियन"}\r
         rw{"किन्यारवांडा"}\r
index 115f973..4107929 100644 (file)
@@ -421,7 +421,6 @@ hr{
         ro_MD{"moldavski"}\r
         rof{"rombo"}\r
         rom{"romski"}\r
-        root{"korijenski"}\r
         ru{"ruski"}\r
         rup{"aromunski"}\r
         rw{"kinyarwanda"}\r
index 4280d7b..91fe8f1 100644 (file)
@@ -420,7 +420,6 @@ hu{
         ro_MD{"moldvai"}\r
         rof{"rombo"}\r
         rom{"roma"}\r
-        root{"ősi"}\r
         ru{"orosz"}\r
         rup{"aromán"}\r
         rw{"kinyarvanda"}\r
index 6784045..f8feafe 100644 (file)
@@ -350,7 +350,6 @@ hy{
         ro_MD{"մոլդովերեն"}\r
         rof{"ռոմբո"}\r
         rom{"ռոմաներեն"}\r
-        root{"ռուտերեն"}\r
         rtm{"ռոտուման"}\r
         ru{"ռուսերեն"}\r
         rue{"ռուսիներեն"}\r
index 19ec18d..4a39825 100644 (file)
@@ -299,7 +299,6 @@ ia{
         ro{"romaniano"}\r
         ro_MD{"moldavo"}\r
         rof{"rombo"}\r
-        root{"radice"}\r
         ru{"russo"}\r
         rup{"aromaniano"}\r
         rw{"kinyarwanda"}\r
index 3459f15..c8f836d 100644 (file)
@@ -424,7 +424,6 @@ id{
         ro_MD{"Moldavia"}\r
         rof{"Rombo"}\r
         rom{"Romani"}\r
-        root{"Root"}\r
         rtm{"Rotuma"}\r
         ru{"Rusia"}\r
         rup{"Aromania"}\r
index 7d7fd6c..a8500c1 100644 (file)
@@ -407,7 +407,6 @@ is{
         ro_MD{"moldóvska"}\r
         rof{"rombó"}\r
         rom{"romaní"}\r
-        root{"rót"}\r
         ru{"rússneska"}\r
         rup{"arúmenska"}\r
         rw{"kínjarvanda"}\r
index 1898ae2..030a1a0 100644 (file)
@@ -472,7 +472,6 @@ ja{
         ro_MD{"モルダビア語"}\r
         rof{"ロンボ語"}\r
         rom{"ロマーニー語"}\r
-        root{"ルート"}\r
         rtm{"ロツマ語"}\r
         ru{"ロシア語"}\r
         rue{"ルシン語"}\r
index c968079..e9609a6 100644 (file)
@@ -375,7 +375,6 @@ ka{
         ro_MD{"მოლდავური"}\r
         rof{"რომბო"}\r
         rom{"ბოშური"}\r
-        root{"ძირეული ენა"}\r
         ru{"რუსული"}\r
         rup{"არომანული"}\r
         rw{"კინიარუანდა"}\r
index 2888e6e..ee24cc6 100644 (file)
@@ -308,7 +308,6 @@ kk{
         ro{"румын тілі"}\r
         ro_MD{"молдован тілі"}\r
         rof{"ромбо тілі"}\r
-        root{"ата тіл"}\r
         ru{"орыс тілі"}\r
         rup{"арумын тілі"}\r
         rw{"киньяруанда тілі"}\r
index 6338d11..a791429 100644 (file)
@@ -298,7 +298,6 @@ km{
         ro{"រូម៉ានី"}\r
         ro_MD{"ម៉ុលដាវី"}\r
         rof{"រុមបូ"}\r
-        root{"រូត"}\r
         ru{"រុស្ស៊ី"}\r
         rup{"អារ៉ូម៉ានី"}\r
         rw{"គិនយ៉ាវ៉ាន់ដា"}\r
index 409766a..ae8749a 100644 (file)
@@ -407,7 +407,6 @@ kn{
         ro_MD{"ಮಾಲ್ಡೇವಿಯನ್"}\r
         rof{"ರೊಂಬೊ"}\r
         rom{"ರೋಮಾನಿ"}\r
-        root{"ರೂಟ್"}\r
         ru{"ರಷ್ಯನ್"}\r
         rup{"ಅರೋಮಾನಿಯನ್"}\r
         rw{"ಕಿನ್ಯಾರ್‌ವಾಂಡಾ"}\r
index 0590b7f..6b4eef9 100644 (file)
@@ -423,7 +423,6 @@ ko{
         ro_MD{"몰도바어"}\r
         rof{"롬보어"}\r
         rom{"집시어"}\r
-        root{"어근"}\r
         ru{"러시아어"}\r
         rue{"루신어"}\r
         rup{"아로마니아어"}\r
index 93525d6..fa6bb94 100644 (file)
@@ -305,7 +305,6 @@ kok{
         ro{"रोमानियन"}\r
         ro_MD{"मोल्डावियन्"}\r
         rof{"रोम्बो"}\r
-        root{"रूट"}\r
         ru{"रशियन"}\r
         rup{"आरोमेनियन"}\r
         rw{"किन्यार्वान्डा"}\r
index eaae25d..1a10de6 100644 (file)
@@ -335,7 +335,6 @@ ks{
         ro{"رومٲنی"}\r
         ro_MD{"مولداوِیَن"}\r
         rom{"رومَنی"}\r
-        root{"روٗٹ"}\r
         ru{"روٗسی"}\r
         rup{"اَرومانی"}\r
         rw{"کِنیاوِندا"}\r
index 6db479f..7291f61 100644 (file)
@@ -301,7 +301,6 @@ ky{
         ro{"румынча"}\r
         ro_MD{"молдованча"}\r
         rof{"ромбочо"}\r
-        root{"түпкү"}\r
         ru{"орусча"}\r
         rup{"аромунча"}\r
         rw{"руандача"}\r
index 6550ce9..065640e 100644 (file)
@@ -456,7 +456,6 @@ lb{
         ro_MD{"Moldawesch"}\r
         rof{"Rombo"}\r
         rom{"Romani"}\r
-        root{"Root"}\r
         rtm{"Rotumanesch"}\r
         ru{"Russesch"}\r
         rue{"Russinesch"}\r
index 3589f33..82c8974 100644 (file)
@@ -403,7 +403,6 @@ lo{
         ro_MD{"ໂມດາວຽນ"}\r
         rof{"ຣົມໂບ"}\r
         rom{"ໂຣເມນີ"}\r
-        root{"ລູດ"}\r
         ru{"ລັດເຊຍ"}\r
         rup{"ອາໂຣມານຽນ"}\r
         rw{"ຄິນຢາວານດາ"}\r
index 86a8c43..15722f2 100644 (file)
@@ -477,7 +477,6 @@ lt{
         ro_MD{"moldavų"}\r
         rof{"rombo"}\r
         rom{"romų"}\r
-        root{"rūt"}\r
         rtm{"rotumanų"}\r
         ru{"rusų"}\r
         rue{"rusinų"}\r
index 5a1f092..31500db 100644 (file)
@@ -405,7 +405,6 @@ lv{
         ro_MD{"moldāvu"}\r
         rof{"rombo"}\r
         rom{"čigānu"}\r
-        root{"sakne"}\r
         ru{"krievu"}\r
         rup{"aromūnu"}\r
         rw{"kiņaruanda"}\r
index 4623283..1932f32 100644 (file)
@@ -467,7 +467,6 @@ mk{
         ro_MD{"молдавски"}\r
         rof{"ромбо"}\r
         rom{"ромски"}\r
-        root{"корен"}\r
         rtm{"ротумански"}\r
         ru{"руски"}\r
         rue{"русински"}\r
index b18c54f..88d3a0d 100644 (file)
@@ -419,7 +419,6 @@ ml{
         ro_MD{"മോൾഡാവിയൻ"}\r
         rof{"റോംബോ"}\r
         rom{"റൊമാനി"}\r
-        root{"മൂലഭാഷ"}\r
         ru{"റഷ്യൻ"}\r
         rup{"ആരോമാനിയൻ"}\r
         rw{"കിന്യാർവാണ്ട"}\r
index 96a9e92..d1bbf02 100644 (file)
@@ -306,7 +306,6 @@ mn{
         ro{"румын"}\r
         ro_MD{"молдав"}\r
         rof{"ромбо"}\r
-        root{"рут"}\r
         ru{"орос"}\r
         rup{"ароманы"}\r
         rw{"киньяруанда"}\r
index c5f95cd..da83970 100644 (file)
@@ -407,7 +407,6 @@ mr{
         ro_MD{"मोल्डाव्हियन"}\r
         rof{"रोम्बो"}\r
         rom{"रोमानी"}\r
-        root{"रूट"}\r
         ru{"रशियन"}\r
         rup{"अरोमानियन"}\r
         rw{"किन्यार्वान्डा"}\r
index f9b84e3..087382a 100644 (file)
@@ -358,7 +358,6 @@ ms{
         ro{"Romania"}\r
         ro_MD{"Moldavia"}\r
         rof{"Rombo"}\r
-        root{"Root"}\r
         ru{"Rusia"}\r
         rup{"Aromanian"}\r
         rw{"Kinyarwanda"}\r
index 019de8c..b75dba0 100644 (file)
@@ -379,7 +379,6 @@ mt{
         ro_MD{"Moldovan"}\r
         rof{"Rombo"}\r
         rom{"Romanesk"}\r
-        root{"Root"}\r
         ru{"Russu"}\r
         rup{"Aromanjan"}\r
         rw{"Kinjarwanda"}\r
index f500f7b..7ed2c1a 100644 (file)
@@ -325,7 +325,6 @@ my{
         ro{"ရိုမေနီယား"}\r
         ro_MD{"မော်လဒိုဗာ"}\r
         rof{"ရွမ်ဘို"}\r
-        root{"မူလရင်းမြစ်"}\r
         ru{"ရုရှ"}\r
         rup{"အာရိုမန်းနီးယန်း"}\r
         rw{"ကင်ရာဝန်ဒါ"}\r
index c1826b0..eedd825 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nb{\r
-    Keys{\r
-        calendar{"kalender"}\r
-        cf{"valutaformat"}\r
-        colAlternate{"Ignorer sortering etter symboler"}\r
-        colBackwards{"omvendt sortering etter aksent"}\r
-        colCaseFirst{"Organisering av store og små bokstaver"}\r
-        colCaseLevel{"Sortering av store og små bokstaver"}\r
-        colNormalization{"Normalisert sortering"}\r
-        colNumeric{"Numerisk sortering"}\r
-        colStrength{"Sorteringsstyrke"}\r
-        collation{"sorteringsrekkefølge"}\r
-        currency{"valuta"}\r
-        hc{"timesyklus (12 eller 24)"}\r
-        lb{"linjeskiftstil"}\r
-        ms{"målesystem"}\r
-        numbers{"tall"}\r
-        timezone{"tidssone"}\r
-        va{"språkvariant"}\r
-        x{"privat bruk"}\r
-    }\r
-    Languages{\r
-        aa{"afar"}\r
-        ab{"abkhasisk"}\r
-        ace{"achinesisk"}\r
-        ach{"acoli"}\r
-        ada{"adangme"}\r
-        ady{"adygeisk"}\r
-        ae{"avestisk"}\r
-        aeb{"tunisisk-arabisk"}\r
-        af{"afrikaans"}\r
-        afh{"afrihili"}\r
-        agq{"aghem"}\r
-        ain{"ainu"}\r
-        ak{"akan"}\r
-        akk{"akkadisk"}\r
-        akz{"alabama"}\r
-        ale{"aleutisk"}\r
-        aln{"gegisk-albansk"}\r
-        alt{"søraltaisk"}\r
-        am{"amharisk"}\r
-        an{"aragonsk"}\r
-        ang{"gammelengelsk"}\r
-        anp{"angika"}\r
-        ar{"arabisk"}\r
-        ar_001{"moderne standardarabisk"}\r
-        arc{"arameisk"}\r
-        arn{"mapudungun"}\r
-        aro{"araona"}\r
-        arp{"arapaho"}\r
-        arq{"algerisk arabisk"}\r
-        ars{"najdi-arabisk"}\r
-        arw{"arawak"}\r
-        ary{"marokkansk-arabisk"}\r
-        arz{"egyptisk arabisk"}\r
-        as{"assamesisk"}\r
-        asa{"asu"}\r
-        ase{"amerikansk tegnspråk"}\r
-        ast{"asturisk"}\r
-        av{"avarisk"}\r
-        avk{"kotava"}\r
-        awa{"avadhi"}\r
-        ay{"aymara"}\r
-        az{"aserbajdsjansk"}\r
-        ba{"basjkirsk"}\r
-        bal{"baluchi"}\r
-        ban{"balinesisk"}\r
-        bar{"bairisk"}\r
-        bas{"basaa"}\r
-        bax{"bamun"}\r
-        bbc{"batak toba"}\r
-        bbj{"ghomala"}\r
-        be{"hviterussisk"}\r
-        bej{"beja"}\r
-        bem{"bemba"}\r
-        bew{"betawi"}\r
-        bez{"bena"}\r
-        bfd{"bafut"}\r
-        bfq{"badaga"}\r
-        bg{"bulgarsk"}\r
-        bgn{"vestbalutsji"}\r
-        bho{"bhojpuri"}\r
-        bi{"bislama"}\r
-        bik{"bikol"}\r
-        bin{"bini"}\r
-        bjn{"banjar"}\r
-        bkm{"kom"}\r
-        bla{"siksika"}\r
-        bm{"bambara"}\r
-        bn{"bengali"}\r
-        bo{"tibetansk"}\r
-        bpy{"bishnupriya"}\r
-        bqi{"bakhtiari"}\r
-        br{"bretonsk"}\r
-        bra{"braj"}\r
-        brh{"brahui"}\r
-        brx{"bodo"}\r
-        bs{"bosnisk"}\r
-        bss{"akose"}\r
-        bua{"burjatisk"}\r
-        bug{"buginesisk"}\r
-        bum{"bulu"}\r
-        byn{"blin"}\r
-        byv{"medumba"}\r
-        ca{"katalansk"}\r
-        cad{"caddo"}\r
-        car{"karibisk"}\r
-        cay{"cayuga"}\r
-        cch{"atsam"}\r
-        ccp{"chakma"}\r
-        ce{"tsjetsjensk"}\r
-        ceb{"cebuansk"}\r
-        cgg{"kiga"}\r
-        ch{"chamorro"}\r
-        chb{"chibcha"}\r
-        chg{"tsjagatai"}\r
-        chk{"chuukesisk"}\r
-        chm{"mari"}\r
-        chn{"chinook"}\r
-        cho{"choctaw"}\r
-        chp{"chipewiansk"}\r
-        chr{"cherokesisk"}\r
-        chy{"cheyenne"}\r
-        ckb{"kurdisk (sorani)"}\r
-        co{"korsikansk"}\r
-        cop{"koptisk"}\r
-        cps{"kapiz"}\r
-        cr{"cree"}\r
-        crh{"krimtatarisk"}\r
-        crs{"seselwa"}\r
-        cs{"tsjekkisk"}\r
-        csb{"kasjubisk"}\r
-        cu{"kirkeslavisk"}\r
-        cv{"tsjuvasjisk"}\r
-        cy{"walisisk"}\r
-        da{"dansk"}\r
-        dak{"dakota"}\r
-        dar{"dargwa"}\r
-        dav{"taita"}\r
-        de{"tysk"}\r
-        del{"delaware"}\r
-        den{"slavey"}\r
-        dgr{"dogrib"}\r
-        din{"dinka"}\r
-        dje{"zarma"}\r
-        doi{"dogri"}\r
-        dsb{"lavsorbisk"}\r
-        dtp{"sentraldusun"}\r
-        dua{"duala"}\r
-        dum{"mellomnederlandsk"}\r
-        dv{"divehi"}\r
-        dyo{"jola-fonyi"}\r
-        dyu{"dyula"}\r
-        dz{"dzongkha"}\r
-        dzg{"dazaga"}\r
-        ebu{"kiembu"}\r
-        ee{"ewe"}\r
-        efi{"efik"}\r
-        egl{"emiliansk"}\r
-        egy{"gammelegyptisk"}\r
-        eka{"ekajuk"}\r
-        el{"gresk"}\r
-        elx{"elamittisk"}\r
-        en{"engelsk"}\r
-        enm{"mellomengelsk"}\r
-        eo{"esperanto"}\r
-        es{"spansk"}\r
-        esu{"sentralyupik"}\r
-        et{"estisk"}\r
-        eu{"baskisk"}\r
-        ewo{"ewondo"}\r
-        ext{"ekstremaduransk"}\r
-        fa{"persisk"}\r
-        fa_AF{"dari"}\r
-        fan{"fang"}\r
-        fat{"fanti"}\r
-        ff{"fulfulde"}\r
-        fi{"finsk"}\r
-        fil{"filipino"}\r
-        fit{"tornedalsfinsk"}\r
-        fj{"fijiansk"}\r
-        fo{"færøysk"}\r
-        fon{"fon"}\r
-        fr{"fransk"}\r
-        frc{"cajunfransk"}\r
-        frm{"mellomfransk"}\r
-        fro{"gammelfransk"}\r
-        frp{"arpitansk"}\r
-        frr{"nordfrisisk"}\r
-        frs{"østfrisisk"}\r
-        fur{"friuliansk"}\r
-        fy{"vestfrisisk"}\r
-        ga{"irsk"}\r
-        gaa{"ga"}\r
-        gag{"gagausisk"}\r
-        gan{"gan"}\r
-        gay{"gayo"}\r
-        gba{"gbaya"}\r
-        gbz{"zoroastrisk dari"}\r
-        gd{"skotsk-gælisk"}\r
-        gez{"geez"}\r
-        gil{"kiribatisk"}\r
-        gl{"galisisk"}\r
-        glk{"gileki"}\r
-        gmh{"mellomhøytysk"}\r
-        gn{"guarani"}\r
-        goh{"gammelhøytysk"}\r
-        gom{"goansk konkani"}\r
-        gon{"gondi"}\r
-        gor{"gorontalo"}\r
-        got{"gotisk"}\r
-        grb{"grebo"}\r
-        grc{"gammelgresk"}\r
-        gsw{"sveitsertysk"}\r
-        gu{"gujarati"}\r
-        guc{"wayuu"}\r
-        gur{"frafra"}\r
-        guz{"gusii"}\r
-        gv{"mansk"}\r
-        gwi{"gwichin"}\r
-        ha{"hausa"}\r
-        hai{"haida"}\r
-        hak{"hakka"}\r
-        haw{"hawaiisk"}\r
-        he{"hebraisk"}\r
-        hi{"hindi"}\r
-        hif{"fijiansk hindi"}\r
-        hil{"hiligaynon"}\r
-        hit{"hettittisk"}\r
-        hmn{"hmong"}\r
-        ho{"hiri motu"}\r
-        hr{"kroatisk"}\r
-        hsb{"høysorbisk"}\r
-        hsn{"xiang"}\r
-        ht{"haitisk"}\r
-        hu{"ungarsk"}\r
-        hup{"hupa"}\r
-        hy{"armensk"}\r
-        hz{"herero"}\r
-        ia{"interlingua"}\r
-        iba{"iban"}\r
-        ibb{"ibibio"}\r
-        id{"indonesisk"}\r
-        ie{"interlingue"}\r
-        ig{"ibo"}\r
-        ii{"sichuan-yi"}\r
-        ik{"inupiak"}\r
-        ilo{"iloko"}\r
-        inh{"ingusjisk"}\r
-        io{"ido"}\r
-        is{"islandsk"}\r
-        it{"italiensk"}\r
-        iu{"inuktitut"}\r
-        izh{"ingrisk"}\r
-        ja{"japansk"}\r
-        jam{"jamaicansk kreolengelsk"}\r
-        jbo{"lojban"}\r
-        jgo{"ngomba"}\r
-        jmc{"machame"}\r
-        jpr{"jødepersisk"}\r
-        jrb{"jødearabisk"}\r
-        jut{"jysk"}\r
-        jv{"javanesisk"}\r
-        ka{"georgisk"}\r
-        kaa{"karakalpakisk"}\r
-        kab{"kabylsk"}\r
-        kac{"kachin"}\r
-        kaj{"jju"}\r
-        kam{"kamba"}\r
-        kaw{"kawi"}\r
-        kbd{"kabardisk"}\r
-        kbl{"kanembu"}\r
-        kcg{"tyap"}\r
-        kde{"makonde"}\r
-        kea{"kappverdisk"}\r
-        ken{"kenyang"}\r
-        kfo{"koro"}\r
-        kg{"kikongo"}\r
-        kgp{"kaingang"}\r
-        kha{"khasi"}\r
-        kho{"khotanesisk"}\r
-        khq{"koyra chiini"}\r
-        khw{"khowar"}\r
-        ki{"kikuyu"}\r
-        kiu{"kirmancki"}\r
-        kj{"kuanyama"}\r
-        kk{"kasakhisk"}\r
-        kkj{"kako"}\r
-        kl{"grønlandsk"}\r
-        kln{"kalenjin"}\r
-        km{"khmer"}\r
-        kmb{"kimbundu"}\r
-        kn{"kannada"}\r
-        ko{"koreansk"}\r
-        koi{"komipermjakisk"}\r
-        kok{"konkani"}\r
-        kos{"kosraeansk"}\r
-        kpe{"kpelle"}\r
-        kr{"kanuri"}\r
-        krc{"karatsjajbalkarsk"}\r
-        kri{"krio"}\r
-        krj{"kinaray-a"}\r
-        krl{"karelsk"}\r
-        kru{"kurukh"}\r
-        ks{"kasjmiri"}\r
-        ksb{"shambala"}\r
-        ksf{"bafia"}\r
-        ksh{"kølnsk"}\r
-        ku{"kurdisk"}\r
-        kum{"kumykisk"}\r
-        kut{"kutenai"}\r
-        kv{"komi"}\r
-        kw{"kornisk"}\r
-        ky{"kirgisisk"}\r
-        la{"latin"}\r
-        lad{"ladinsk"}\r
-        lag{"langi"}\r
-        lah{"lahnda"}\r
-        lam{"lamba"}\r
-        lb{"luxemburgsk"}\r
-        lez{"lesgisk"}\r
-        lfn{"lingua franca nova"}\r
-        lg{"ganda"}\r
-        li{"limburgsk"}\r
-        lij{"ligurisk"}\r
-        liv{"livisk"}\r
-        lkt{"lakota"}\r
-        lmo{"lombardisk"}\r
-        ln{"lingala"}\r
-        lo{"laotisk"}\r
-        lol{"mongo"}\r
-        lou{"louisianakreolsk"}\r
-        loz{"lozi"}\r
-        lrc{"nord-luri"}\r
-        lt{"litauisk"}\r
-        ltg{"latgallisk"}\r
-        lu{"luba-katanga"}\r
-        lua{"luba-lulua"}\r
-        lui{"luiseno"}\r
-        lun{"lunda"}\r
-        luo{"luo"}\r
-        lus{"mizo"}\r
-        luy{"luhya"}\r
-        lv{"latvisk"}\r
-        lzh{"klassisk kinesisk"}\r
-        lzz{"lazisk"}\r
-        mad{"maduresisk"}\r
-        maf{"mafa"}\r
-        mag{"magahi"}\r
-        mai{"maithili"}\r
-        mak{"makasar"}\r
-        man{"mandingo"}\r
-        mas{"masai"}\r
-        mde{"maba"}\r
-        mdf{"moksja"}\r
-        mdr{"mandar"}\r
-        men{"mende"}\r
-        mer{"meru"}\r
-        mfe{"mauritisk-kreolsk"}\r
-        mg{"gassisk"}\r
-        mga{"mellomirsk"}\r
-        mgh{"makhuwa-meetto"}\r
-        mgo{"meta’"}\r
-        mh{"marshallesisk"}\r
-        mi{"maori"}\r
-        mic{"micmac"}\r
-        min{"minangkabau"}\r
-        mk{"makedonsk"}\r
-        ml{"malayalam"}\r
-        mn{"mongolsk"}\r
-        mnc{"mandsju"}\r
-        mni{"manipuri"}\r
-        moh{"mohawk"}\r
-        mos{"mossi"}\r
-        mr{"marathi"}\r
-        mrj{"vestmarisk"}\r
-        ms{"malayisk"}\r
-        mt{"maltesisk"}\r
-        mua{"mundang"}\r
-        mul{"flere språk"}\r
-        mus{"creek"}\r
-        mwl{"mirandesisk"}\r
-        mwr{"marwari"}\r
-        mwv{"mentawai"}\r
-        my{"burmesisk"}\r
-        mye{"myene"}\r
-        myv{"erzia"}\r
-        mzn{"mazandarani"}\r
-        na{"nauru"}\r
-        nan{"minnan"}\r
-        nap{"napolitansk"}\r
-        naq{"nama"}\r
-        nb{"norsk bokmål"}\r
-        nd{"nord-ndebele"}\r
-        nds{"nedertysk"}\r
-        nds_NL{"nedersaksisk"}\r
-        ne{"nepali"}\r
-        new{"newari"}\r
-        ng{"ndonga"}\r
-        nia{"nias"}\r
-        niu{"niueansk"}\r
-        njo{"ao naga"}\r
-        nl{"nederlandsk"}\r
-        nl_BE{"flamsk"}\r
-        nmg{"kwasio"}\r
-        nn{"norsk nynorsk"}\r
-        nnh{"ngiemboon"}\r
-        no{"norsk"}\r
-        nog{"nogaisk"}\r
-        non{"gammelnorsk"}\r
-        nov{"novial"}\r
-        nqo{"nʼko"}\r
-        nr{"sør-ndebele"}\r
-        nso{"nord-sotho"}\r
-        nus{"nuer"}\r
-        nv{"navajo"}\r
-        nwc{"klassisk newari"}\r
-        ny{"nyanja"}\r
-        nym{"nyamwezi"}\r
-        nyn{"nyankole"}\r
-        nyo{"nyoro"}\r
-        nzi{"nzima"}\r
-        oc{"oksitansk"}\r
-        oj{"ojibwa"}\r
-        om{"oromo"}\r
-        or{"odia"}\r
-        os{"ossetisk"}\r
-        osa{"osage"}\r
-        ota{"ottomansk tyrkisk"}\r
-        pa{"panjabi"}\r
-        pag{"pangasinan"}\r
-        pal{"pahlavi"}\r
-        pam{"pampanga"}\r
-        pap{"papiamento"}\r
-        pau{"palauisk"}\r
-        pcd{"pikardisk"}\r
-        pcm{"nigeriansk pidginspråk"}\r
-        pdc{"pennsylvaniatysk"}\r
-        pdt{"plautdietsch"}\r
-        peo{"gammelpersisk"}\r
-        pfl{"palatintysk"}\r
-        phn{"fønikisk"}\r
-        pi{"pali"}\r
-        pl{"polsk"}\r
-        pms{"piemontesisk"}\r
-        pnt{"pontisk"}\r
-        pon{"ponapisk"}\r
-        prg{"prøyssisk"}\r
-        pro{"gammelprovençalsk"}\r
-        ps{"pashto"}\r
-        pt{"portugisisk"}\r
-        qu{"quechua"}\r
-        quc{"k’iche’"}\r
-        qug{"kichwa (Chimborazo-høylandet)"}\r
-        raj{"rajasthani"}\r
-        rap{"rapanui"}\r
-        rar{"rarotongansk"}\r
-        rgn{"romagnolsk"}\r
-        rif{"riff"}\r
-        rm{"retoromansk"}\r
-        rn{"rundi"}\r
-        ro{"rumensk"}\r
-        ro_MD{"moldovsk"}\r
-        rof{"rombo"}\r
-        rom{"romani"}\r
-        root{"rot"}\r
-        rtm{"rotumansk"}\r
-        ru{"russisk"}\r
-        rue{"rusinsk"}\r
-        rug{"roviana"}\r
-        rup{"aromansk"}\r
-        rw{"kinyarwanda"}\r
-        rwk{"rwa"}\r
-        sa{"sanskrit"}\r
-        sad{"sandawe"}\r
-        sah{"sakha"}\r
-        sam{"samaritansk arameisk"}\r
-        saq{"samburu"}\r
-        sas{"sasak"}\r
-        sat{"santali"}\r
-        saz{"saurashtra"}\r
-        sba{"ngambay"}\r
-        sbp{"sangu"}\r
-        sc{"sardisk"}\r
-        scn{"siciliansk"}\r
-        sco{"skotsk"}\r
-        sd{"sindhi"}\r
-        sdc{"sassaresisk sardisk"}\r
-        sdh{"sørkurdisk"}\r
-        se{"nordsamisk"}\r
-        see{"seneca"}\r
-        seh{"sena"}\r
-        sei{"seri"}\r
-        sel{"selkupisk"}\r
-        ses{"koyraboro senni"}\r
-        sg{"sango"}\r
-        sga{"gammelirsk"}\r
-        sgs{"samogitisk"}\r
-        sh{"serbokroatisk"}\r
-        shi{"tachelhit"}\r
-        shn{"shan"}\r
-        shu{"tsjadisk arabisk"}\r
-        si{"singalesisk"}\r
-        sid{"sidamo"}\r
-        sk{"slovakisk"}\r
-        sl{"slovensk"}\r
-        sli{"lavschlesisk"}\r
-        sly{"selayar"}\r
-        sm{"samoansk"}\r
-        sma{"sørsamisk"}\r
-        smj{"lulesamisk"}\r
-        smn{"enaresamisk"}\r
-        sms{"skoltesamisk"}\r
-        sn{"shona"}\r
-        snk{"soninke"}\r
-        so{"somali"}\r
-        sog{"sogdisk"}\r
-        sq{"albansk"}\r
-        sr{"serbisk"}\r
-        srn{"sranan"}\r
-        srr{"serer"}\r
-        ss{"swati"}\r
-        ssy{"saho"}\r
-        st{"sør-sotho"}\r
-        stq{"saterfrisisk"}\r
-        su{"sundanesisk"}\r
-        suk{"sukuma"}\r
-        sus{"susu"}\r
-        sux{"sumerisk"}\r
-        sv{"svensk"}\r
-        sw{"swahili"}\r
-        sw_CD{"kongolesisk swahili"}\r
-        swb{"komorisk"}\r
-        syc{"klassisk syrisk"}\r
-        syr{"syriakisk"}\r
-        szl{"schlesisk"}\r
-        ta{"tamil"}\r
-        tcy{"tulu"}\r
-        te{"telugu"}\r
-        tem{"temne"}\r
-        teo{"teso"}\r
-        ter{"tereno"}\r
-        tet{"tetum"}\r
-        tg{"tadsjikisk"}\r
-        th{"thai"}\r
-        ti{"tigrinja"}\r
-        tig{"tigré"}\r
-        tiv{"tiv"}\r
-        tk{"turkmensk"}\r
-        tkl{"tokelauisk"}\r
-        tkr{"tsakhursk"}\r
-        tl{"tagalog"}\r
-        tlh{"klingon"}\r
-        tli{"tlingit"}\r
-        tly{"talysj"}\r
-        tmh{"tamasjek"}\r
-        tn{"setswana"}\r
-        to{"tongansk"}\r
-        tog{"nyasa-tongansk"}\r
-        tpi{"tok pisin"}\r
-        tr{"tyrkisk"}\r
-        tru{"turoyo"}\r
-        trv{"taroko"}\r
-        ts{"tsonga"}\r
-        tsd{"tsakonisk"}\r
-        tsi{"tsimshian"}\r
-        tt{"tatarisk"}\r
-        ttt{"muslimsk tat"}\r
-        tum{"tumbuka"}\r
-        tvl{"tuvalsk"}\r
-        tw{"twi"}\r
-        twq{"tasawaq"}\r
-        ty{"tahitisk"}\r
-        tyv{"tuvinsk"}\r
-        tzm{"sentralmarokkansk tamazight"}\r
-        udm{"udmurtisk"}\r
-        ug{"uigurisk"}\r
-        uga{"ugaritisk"}\r
-        uk{"ukrainsk"}\r
-        umb{"umbundu"}\r
-        und{"ukjent språk"}\r
-        ur{"urdu"}\r
-        uz{"usbekisk"}\r
-        vai{"vai"}\r
-        ve{"venda"}\r
-        vec{"venetiansk"}\r
-        vep{"vepsisk"}\r
-        vi{"vietnamesisk"}\r
-        vls{"vestflamsk"}\r
-        vmf{"Main-frankisk"}\r
-        vo{"volapyk"}\r
-        vot{"votisk"}\r
-        vro{"sørestisk"}\r
-        vun{"vunjo"}\r
-        wa{"vallonsk"}\r
-        wae{"walsertysk"}\r
-        wal{"wolaytta"}\r
-        war{"waray-waray"}\r
-        was{"washo"}\r
-        wbp{"warlpiri"}\r
-        wo{"wolof"}\r
-        wuu{"wu"}\r
-        xal{"kalmukkisk"}\r
-        xh{"xhosa"}\r
-        xmf{"mingrelsk"}\r
-        xog{"soga"}\r
-        yao{"yao"}\r
-        yap{"yapesisk"}\r
-        yav{"yangben"}\r
-        ybb{"yemba"}\r
-        yi{"jiddisk"}\r
-        yo{"joruba"}\r
-        yrl{"nheengatu"}\r
-        yue{"kantonesisk"}\r
-        za{"zhuang"}\r
-        zap{"zapotekisk"}\r
-        zbl{"blissymboler"}\r
-        zea{"zeeuws"}\r
-        zen{"zenaga"}\r
-        zgh{"standard marrokansk tamazight"}\r
-        zh{"kinesisk"}\r
-        zh_Hans{"forenklet kinesisk"}\r
-        zh_Hant{"tradisjonell kinesisk"}\r
-        zu{"zulu"}\r
-        zun{"zuni"}\r
-        zxx{"uten språklig innhold"}\r
-        zza{"zazaisk"}\r
-    }\r
-    Languages%long{\r
-        zh_Hans{"forenklet mandarinkinesisk"}\r
-        zh_Hant{"tradisjonell mandarinkinesisk"}\r
-    }\r
-    Languages%menu{\r
-        ars{"arabisk (najd)"}\r
-        ckb{"kurdisk (sentral)"}\r
-        zh{"kinesisk, mandarin"}\r
-    }\r
-    Languages%short{\r
-        az{"azeri"}\r
-    }\r
-    Languages%variant{\r
-        ps{"pushto"}\r
-    }\r
-    Scripts{\r
-        Afak{"afaka"}\r
-        Aghb{"kaukasus-albansk"}\r
-        Ahom{"ahom"}\r
-        Arab{"arabisk"}\r
-        Aran{"nastaliq"}\r
-        Armi{"arameisk"}\r
-        Armn{"armensk"}\r
-        Avst{"avestisk"}\r
-        Bali{"balinesisk"}\r
-        Bamu{"bamum"}\r
-        Bass{"bassa vah"}\r
-        Batk{"batak"}\r
-        Beng{"bengalsk"}\r
-        Blis{"blissymbol"}\r
-        Bopo{"bopomofo"}\r
-        Brah{"brahmi"}\r
-        Brai{"punktskrift"}\r
-        Bugi{"buginesisk"}\r
-        Buhd{"buhid"}\r
-        Cakm{"chakma"}\r
-        Cans{"felles kanadiske urspråksstavelser"}\r
-        Cari{"karisk"}\r
-        Cham{"cham"}\r
-        Cher{"cherokee"}\r
-        Cirt{"cirth"}\r
-        Copt{"koptisk"}\r
-        Cprt{"kypriotisk"}\r
-        Cyrl{"kyrillisk"}\r
-        Cyrs{"kirkeslavisk kyrillisk"}\r
-        Deva{"devanagari"}\r
-        Dsrt{"deseret"}\r
-        Dupl{"duployan stenografi"}\r
-        Egyd{"egyptisk demotisk"}\r
-        Egyh{"egyptisk hieratisk"}\r
-        Egyp{"egyptiske hieroglyfer"}\r
-        Elba{"elbasisk"}\r
-        Ethi{"etiopisk"}\r
-        Geok{"georgisk khutsuri"}\r
-        Geor{"georgisk"}\r
-        Glag{"glagolittisk"}\r
-        Goth{"gotisk"}\r
-        Gran{"gammeltamilsk"}\r
-        Grek{"gresk"}\r
-        Gujr{"gujarati"}\r
-        Guru{"gurmukhi"}\r
-        Hanb{"han-kinesisk med bopomofo"}\r
-        Hang{"hangul"}\r
-        Hani{"han"}\r
-        Hano{"hanunoo"}\r
-        Hans{"forenklet"}\r
-        Hant{"tradisjonell"}\r
-        Hatr{"hatransk armensk"}\r
-        Hebr{"hebraisk"}\r
-        Hira{"hiragana"}\r
-        Hluw{"anatoliske hieroglyfer"}\r
-        Hmng{"pahawh hmong"}\r
-        Hrkt{"japanske stavelsesskrifter"}\r
-        Hung{"gammelungarsk"}\r
-        Inds{"indus"}\r
-        Ital{"gammelitalisk"}\r
-        Jamo{"jamo"}\r
-        Java{"javanesisk"}\r
-        Jpan{"japansk"}\r
-        Jurc{"jurchen"}\r
-        Kali{"kayah li"}\r
-        Kana{"katakana"}\r
-        Khar{"kharoshthi"}\r
-        Khmr{"khmer"}\r
-        Khoj{"khojki"}\r
-        Knda{"kannada"}\r
-        Kore{"koreansk"}\r
-        Kpel{"kpelle"}\r
-        Kthi{"kaithisk"}\r
-        Lana{"lanna"}\r
-        Laoo{"laotisk"}\r
-        Latf{"frakturlatinsk"}\r
-        Latg{"gælisk latinsk"}\r
-        Latn{"latinsk"}\r
-        Lepc{"lepcha"}\r
-        Limb{"limbu"}\r
-        Lina{"lineær A"}\r
-        Linb{"lineær B"}\r
-        Lisu{"fraser"}\r
-        Loma{"loma"}\r
-        Lyci{"lykisk"}\r
-        Lydi{"lydisk"}\r
-        Mahj{"mahajani"}\r
-        Mand{"mandaisk"}\r
-        Mani{"manikeisk"}\r
-        Maya{"maya-hieroglyfer"}\r
-        Mend{"mende"}\r
-        Merc{"meroitisk kursiv"}\r
-        Mero{"meroitisk"}\r
-        Mlym{"malayalam"}\r
-        Modi{"modi"}\r
-        Mong{"mongolsk"}\r
-        Moon{"moon"}\r
-        Mroo{"mro"}\r
-        Mtei{"meitei-mayek"}\r
-        Mult{"multani"}\r
-        Mymr{"burmesisk"}\r
-        Narb{"gammelnordarabisk"}\r
-        Nbat{"nabataeansk"}\r
-        Nkgb{"naxi geba"}\r
-        Nkoo{"n’ko"}\r
-        Nshu{"nüshu"}\r
-        Ogam{"ogham"}\r
-        Olck{"ol-chiki"}\r
-        Orkh{"orkhon"}\r
-        Orya{"odia"}\r
-        Osma{"osmanya"}\r
-        Palm{"palmyrensk"}\r
-        Pauc{"pau cin hau"}\r
-        Perm{"gammelpermisk"}\r
-        Phag{"phags-pa"}\r
-        Phli{"inskripsjonspahlavi"}\r
-        Phlp{"psalter pahlavi"}\r
-        Phlv{"pahlavi"}\r
-        Phnx{"fønikisk"}\r
-        Plrd{"pollard-fonetisk"}\r
-        Prti{"inskripsjonsparthisk"}\r
-        Qaag{"zawgyi"}\r
-        Rjng{"rejang"}\r
-        Roro{"rongorongo"}\r
-        Runr{"runer"}\r
-        Samr{"samaritansk"}\r
-        Sara{"sarati"}\r
-        Sarb{"gammelsørarabisk"}\r
-        Saur{"saurashtra"}\r
-        Sgnw{"tegnskrift"}\r
-        Shaw{"shavisk"}\r
-        Shrd{"sharada"}\r
-        Sidd{"siddham"}\r
-        Sind{"khudawadi"}\r
-        Sinh{"singalesisk"}\r
-        Sora{"sora sompeng"}\r
-        Sund{"sundanesisk"}\r
-        Sylo{"syloti nagri"}\r
-        Syrc{"syrisk"}\r
-        Syre{"estrangelosyriakisk"}\r
-        Syrj{"vestlig syriakisk"}\r
-        Syrn{"østlig syriakisk"}\r
-        Tagb{"tagbanwa"}\r
-        Takr{"takri"}\r
-        Tale{"tai le"}\r
-        Talu{"ny tai lue"}\r
-        Taml{"tamilsk"}\r
-        Tang{"tangut"}\r
-        Tavt{"tai viet"}\r
-        Telu{"telugu"}\r
-        Teng{"tengwar"}\r
-        Tfng{"tifinagh"}\r
-        Tglg{"tagalog"}\r
-        Thaa{"taana"}\r
-        Thai{"thai"}\r
-        Tibt{"tibetansk"}\r
-        Tirh{"tirhuta"}\r
-        Ugar{"ugaritisk"}\r
-        Vaii{"vai"}\r
-        Visp{"synlig tale"}\r
-        Wara{"varang kshiti"}\r
-        Wole{"woleai"}\r
-        Xpeo{"gammelpersisk"}\r
-        Xsux{"sumersk-akkadisk kileskrift"}\r
-        Yiii{"yi"}\r
-        Zinh{"nedarvet"}\r
-        Zmth{"matematisk notasjon"}\r
-        Zsye{"emoji"}\r
-        Zsym{"symboler"}\r
-        Zxxx{"språk uten skrift"}\r
-        Zyyy{"felles"}\r
-        Zzzz{"ukjent skrift"}\r
-    }\r
-    Scripts%stand-alone{\r
-        Hans{"forenklet han"}\r
-        Hant{"tradisjonell han"}\r
-    }\r
-    Scripts%variant{\r
-        Arab{"persisk-arabisk"}\r
-    }\r
-    Types{\r
-        calendar{\r
-            buddhist{"buddhistisk kalender"}\r
-            chinese{"kinesisk kalender"}\r
-            coptic{"koptisk kalender"}\r
-            dangi{"dangisk kalender"}\r
-            ethiopic{"etiopisk kalender"}\r
-            ethiopic-amete-alem{"etiopisk amete-alem-kalender"}\r
-            gregorian{"gregoriansk kalender"}\r
-            hebrew{"hebraisk kalender"}\r
-            indian{"indisk nasjonalkalender"}\r
-            islamic{"islamsk kalender"}\r
-            islamic-civil{"islamsk kalender (tabell, sivil)"}\r
-            islamic-rgsa{"islamsk kalender (Saudi-Arabia, observasjon)"}\r
-            islamic-tbla{"islamsk kalender (tabell, astronomisk)"}\r
-            islamic-umalqura{"islamsk kalender (Umm al-Qura)"}\r
-            iso8601{"ISO 8601-kalender"}\r
-            japanese{"japansk kalender"}\r
-            persian{"persisk kalender"}\r
-            roc{"minguo-kalender"}\r
-        }\r
-        cf{\r
-            account{"valutaformat for regnskapsføring"}\r
-            standard{"standard valutaformat"}\r
-        }\r
-        colAlternate{\r
-            non-ignorable{"sortér symboler"}\r
-            shifted{"Ignorer symboler under sortering"}\r
-        }\r
-        colBackwards{\r
-            no{"sortér aksenttegn normalt"}\r
-            yes{"sortér aksenttegn i motsatt rekkefølge"}\r
-        }\r
-        colCaseFirst{\r
-            lower{"Sortér små bokstaver først"}\r
-            no{"Sortér store og små bokstaver i vanlig rekkefølge"}\r
-            upper{"Sortér store bokstaver først"}\r
-        }\r
-        colCaseLevel{\r
-            no{"Sortér uavhengig av store og små bokstaver."}\r
-            yes{"Sortér med skille mellom små og store bokstaver"}\r
-        }\r
-        colNormalization{\r
-            no{"Sortér uten normalisering"}\r
-            yes{"Sortér Unicode normalisert"}\r
-        }\r
-        colNumeric{\r
-            no{"Sortér sifre individuelt"}\r
-            yes{"Sortér sifre numerisk"}\r
-        }\r
-        colStrength{\r
-            identical{"Sortér alle"}\r
-            primary{"Sortér bare basisbokstaver"}\r
-            quaternary{"Sortér aksenttegn / små og store bokstaver / bredde / kana"}\r
-            secondary{"Sortér aksenttegn"}\r
-            tertiary{"Sortér aksenttegn / små og store bokstaver / bredde"}\r
-        }\r
-        collation{\r
-            big5han{"tradisjonell kinesisk sortering - Big 5"}\r
-            compat{"forrige sorteringsrekkefølge (for kompatibilitet)"}\r
-            dictionary{"ordlistesortering"}\r
-            ducet{"standard Unicode-sorteringsrekkefølge"}\r
-            emoji{"emoji-sorteringsrekkefølge"}\r
-            eor{"sorteringsrekkefølge for flerspråklige europeiske dokumenter"}\r
-            gb2312han{"forenklet kinesisk sortering - GB2312"}\r
-            phonebook{"telefonkatalogsortering"}\r
-            phonetic{"Fonetisk sorteringsrekkefølge"}\r
-            pinyin{"pinyinsortering"}\r
-            reformed{"reformert sortering"}\r
-            search{"generelt søk"}\r
-            searchjl{"Søk etter første konsonant i hangul"}\r
-            standard{"standard sorteringsrekkefølge"}\r
-            stroke{"streksortering"}\r
-            traditional{"tradisjonell sortering"}\r
-            unihan{"radikal-strek-sortering"}\r
-            zhuyin{"zhuyin-sortering"}\r
-        }\r
-        d0{\r
-            fwidth{"full bredde"}\r
-            hwidth{"halv bredde"}\r
-            npinyin{"Numerisk"}\r
-        }\r
-        hc{\r
-            h11{"12-timers system (0–11)"}\r
-            h12{"12-timers system (1–12)"}\r
-            h23{"24-timers system (0–23)"}\r
-            h24{"24-timers system (1–24)"}\r
-        }\r
-        lb{\r
-            loose{"løs linjeskiftstil"}\r
-            normal{"normal linjeskiftstil"}\r
-            strict{"streng linjeskiftstil"}\r
-        }\r
-        m0{\r
-            bgn{"USBGN-translitterasjon"}\r
-            ungegn{"UNGEGN-translitterasjon"}\r
-        }\r
-        ms{\r
-            metric{"metrisk system"}\r
-            uksystem{"britisk målesystem"}\r
-            ussystem{"amerikansk målesystem"}\r
-        }\r
-        numbers{\r
-            arab{"arabisk-indiske sifre"}\r
-            arabext{"utvidede arabisk-indiske sifre"}\r
-            armn{"armenske tall"}\r
-            armnlow{"små armenske tall"}\r
-            bali{"baliske tall"}\r
-            beng{"bengalske sifre"}\r
-            brah{"brahmiske tall"}\r
-            cakm{"chakma-tall"}\r
-            cham{"cham-tall"}\r
-            deva{"devanagari-sifre"}\r
-            ethi{"etiopiske tall"}\r
-            finance{"Finansielle tall"}\r
-            fullwide{"sifre med full bredde"}\r
-            geor{"georgiske tall"}\r
-            grek{"greske tall"}\r
-            greklow{"små greske tall"}\r
-            gujr{"gujarati-sifre"}\r
-            guru{"gurmukhi-sifre"}\r
-            hanidec{"kinesiske desimaltall"}\r
-            hans{"forenklet kinesisk-tall"}\r
-            hansfin{"forenklet kinesisk-finanstall"}\r
-            hant{"tradisjonell kinesisk-tall"}\r
-            hantfin{"tradisjonell kinesisk-finanstall"}\r
-            hebr{"hebraiske tall"}\r
-            java{"java-tall"}\r
-            jpan{"japanske tall"}\r
-            jpanfin{"japanske finanstall"}\r
-            kali{"kayah li-tall"}\r
-            khmr{"khmer-sifre"}\r
-            knda{"kannada-sifre"}\r
-            lana{"thai tham hora-tall"}\r
-            lanatham{"tai tham tham-tall"}\r
-            laoo{"laotiske sifre"}\r
-            latn{"vestlige sifre"}\r
-            lepc{"lepecha-tall"}\r
-            limb{"limbu-tall"}\r
-            mlym{"malayalam-sifre"}\r
-            mong{"mongolske tall"}\r
-            mtei{"meetei mayek-tall"}\r
-            mymr{"burmesiske sifre"}\r
-            mymrshan{"myanmar shan-tall"}\r
-            native{"Språkspesifikke sifre"}\r
-            nkoo{"n’ko-tall"}\r
-            olck{"ol chiki-tall"}\r
-            orya{"odia-sifre"}\r
-            osma{"osmanya-tall"}\r
-            roman{"romertall"}\r
-            romanlow{"små romertall"}\r
-            saur{"sarushatra-tall"}\r
-            shrd{"sharada-tall"}\r
-            sora{"sora sompeng-tall"}\r
-            sund{"sundanese-tall"}\r
-            takr{"takri-tall"}\r
-            talu{"ny tai lue-tall"}\r
-            taml{"tamilske tall"}\r
-            tamldec{"tamilske sifre"}\r
-            telu{"telugu-sifre"}\r
-            thai{"thailandske sifre"}\r
-            tibt{"tibetanske sifre"}\r
-            traditional{"Tradisjonelle tall"}\r
-            vaii{"vai-sifre"}\r
-        }\r
-    }\r
-    Variants{\r
-        1606NICT{"nyere mellomfransk til 1606"}\r
-        1694ACAD{"eldre nyfransk"}\r
-        1901{"tradisjonell tysk ortografi"}\r
-        1959ACAD{"akademisk"}\r
-        1994{"standardisert resisk ortografi"}\r
-        1996{"tysk ortografi fra 1996"}\r
-        ALALC97{"ALA-LC-romanisering, 1997-utgaven"}\r
-        ALUKU{"Aluku-dialekt"}\r
-        AREVELA{"øst-armensk"}\r
-        AREVMDA{"vest-armensk"}\r
-        BAKU1926{"samlet tyrkisk-latinsk alfabet"}\r
-        BALANKA{"balankadialekten av anii"}\r
-        BARLA{"barlaventa-dialektgruppen av kappverdiansk"}\r
-        BAUDDHA{"bauddha"}\r
-        BISCAYAN{"biscayan"}\r
-        BISKE{"san giorgio- og biladialekt"}\r
-        BOHORIC{"bohorisk alfabet"}\r
-        BOONT{"boontling"}\r
-        DAJNKO{"dajnkoalfabet"}\r
-        EKAVSK{"serbisk med ekavisk uttale"}\r
-        EMODENG{"tidlig moderne engelsk"}\r
-        FONIPA{"det internasjonale fonetiske alfabet (IPA)"}\r
-        FONUPA{"det uraliske fonetiske alfabet (UPA)"}\r
-        FONXSAMP{"fonxsamp"}\r
-        HEPBURN{"Hepburn-romanisering"}\r
-        HOGNORSK{"høgnorsk"}\r
-        IJEKAVSK{"serbisk med ijekavisk uttale"}\r
-        ITIHASA{"itihasa"}\r
-        JAUER{"jauer"}\r
-        JYUTPING{"jyutping"}\r
-        KKCOR{"felles ortografi"}\r
-        KOCIEWIE{"kociewie"}\r
-        KSCOR{"standard ortografi"}\r
-        LAUKIKA{"laukika"}\r
-        LIPAW{"resia med Lipovaz-dialekt"}\r
-        METELKO{"Metelko-alfabet"}\r
-        MONOTON{"monotonisk rettskriving"}\r
-        NDYUKA{"ndyuka-dialekt"}\r
-        NEDIS{"natisonedialekt"}\r
-        NJIVA{"gniva- og njivadialekt"}\r
-        NULIK{"moderne volapük"}\r
-        OSOJS{"oseacco- og osojanedialekt"}\r
-        PAMAKA{"Pamaka-dialekt"}\r
-        PINYIN{"pinyin"}\r
-        POLYTON{"polytonisk rettskriving"}\r
-        POSIX{"dataspråk"}\r
-        REVISED{"revidert ortografi"}\r
-        RIGIK{"klassisk volapük"}\r
-        ROZAJ{"resisk dialekt"}\r
-        SAAHO{"saho"}\r
-        SCOTLAND{"skotsk standard engelsk"}\r
-        SCOUSE{"scouse dialekt"}\r
-        SOLBA{"stolvizza- og solbicadialekt"}\r
-        SOTAV{"sotavento-dialektgruppen av kappverdiansk"}\r
-        SURMIRAN{"surmiransk"}\r
-        SURSILV{"sursilvan"}\r
-        SUTSILV{"sutsilvan"}\r
-        TARASK{"taraskievica-ortografi"}\r
-        UCCOR{"harmonisert ortografi"}\r
-        UCRCOR{"harmonisert revidert ortografi"}\r
-        ULSTER{"ulster"}\r
-        UNIFON{"Unifon fonetisk alfabet"}\r
-        VAIDIKA{"vaidika"}\r
-        VALENCIA{"valensiansk"}\r
-        VALLADER{"vallader"}\r
-        WADEGILE{"Wade-Giles-romanisering"}\r
-    }\r
-    characterLabelPattern{\r
-        all{"{0} – alt"}\r
-        category-list{"{0}: {1}"}\r
-        compatibility{"{0} – kompatibilitet"}\r
-        enclosed{"{0} – omsluttet"}\r
-        extended{"{0} – utvidet"}\r
-        historic{"{0} – historisk"}\r
-        miscellaneous{"{0} – diverse"}\r
-        other{"{0} – annet"}\r
-        scripts{"skriftsystemer – {0}"}\r
-        strokes{\r
-            one{"{0} strek"}\r
-            other{"{0} streker"}\r
-        }\r
-        subscript{"senket {0}"}\r
-        superscript{"hevet {0}"}\r
-    }\r
-    codePatterns{\r
-        language{"Språk: {0}"}\r
-        script{"Skrift: {0}"}\r
-        territory{"Område: {0}"}\r
-    }\r
-    localeDisplayPattern{\r
-        keyTypePattern{"{0}: {1}"}\r
-        pattern{"{0} ({1})"}\r
-        separator{"{0}, {1}"}\r
-    }\r
+    %%Parent{"no"}\r
 }\r
diff --git a/source/data/lang/nb_NO.txt b/source/data/lang/nb_NO.txt
deleted file mode 100644 (file)
index 3307fc3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html\r
-// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
-/**\r
- * generated alias target\r
- */\r
-nb_NO{\r
-    ___{""}\r
-}\r
index 0f83370..b165034 100644 (file)
@@ -456,7 +456,6 @@ ne{
         ro{"रोमानियाली"}\r
         ro_MD{"मोल्डाभियाली"}\r
         rof{"रोम्बो"}\r
-        root{"रुट"}\r
         ru{"रसियाली"}\r
         rup{"अरोमानीयाली"}\r
         rw{"किन्यारवान्डा"}\r
index 0ff37ae..f9ea04c 100644 (file)
@@ -463,7 +463,6 @@ nl{
         ro{"Roemeens"}\r
         rof{"Rombo"}\r
         rom{"Romani"}\r
-        root{"Root"}\r
         rtm{"Rotumaans"}\r
         ru{"Russisch"}\r
         rue{"Roetheens"}\r
index 9f17719..5c35f8c 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nn{\r
+    %%Parent{"no"}\r
     Keys{\r
-        calendar{"kalender"}\r
-        cf{"valutaformat"}\r
         collation{"sorteringsrekkjefølgje"}\r
-        currency{"valuta"}\r
-        hc{"timesyklus (12 eller 24)"}\r
         lb{"lineskiftstil"}\r
-        ms{"målesystem"}\r
         numbers{"tal"}\r
     }\r
     Languages{\r
-        aa{"afar"}\r
-        ab{"abkhasisk"}\r
-        ace{"achinesisk"}\r
-        ach{"acoli"}\r
-        ada{"adangme"}\r
-        ady{"adygeisk"}\r
-        ae{"avestisk"}\r
-        af{"afrikaans"}\r
-        afh{"afrihili"}\r
-        agq{"aghem"}\r
-        ain{"ainu"}\r
-        ak{"akan"}\r
-        akk{"akkadisk"}\r
-        ale{"aleutisk"}\r
         alt{"sør-altaj"}\r
-        am{"amharisk"}\r
-        an{"aragonsk"}\r
         ang{"gammalengelsk"}\r
-        anp{"angika"}\r
-        ar{"arabisk"}\r
         ar_001{"moderne standardarabisk"}\r
-        arc{"arameisk"}\r
-        arn{"mapudungun"}\r
-        arp{"arapaho"}\r
-        arw{"arawak"}\r
-        as{"assamesisk"}\r
         asa{"asu (Tanzania)"}\r
-        ast{"asturisk"}\r
-        av{"avarisk"}\r
-        awa{"avadhi"}\r
-        ay{"aymara"}\r
-        az{"aserbajdsjansk"}\r
-        ba{"basjkirsk"}\r
-        bal{"baluchi"}\r
-        ban{"balinesisk"}\r
         bas{"basa"}\r
-        bax{"bamun"}\r
         be{"kviterussisk"}\r
-        bej{"beja"}\r
-        bem{"bemba"}\r
         bez{"bena (Tanzania)"}\r
-        bg{"bulgarsk"}\r
-        bho{"bhojpuri"}\r
-        bi{"bislama"}\r
-        bik{"bikol"}\r
-        bin{"bini"}\r
-        bla{"siksika"}\r
-        bm{"bambara"}\r
-        bn{"bengali"}\r
-        bo{"tibetansk"}\r
-        br{"bretonsk"}\r
-        bra{"braj"}\r
-        brx{"bodo"}\r
-        bs{"bosnisk"}\r
         bss{"bakossi"}\r
-        bua{"burjatisk"}\r
-        bug{"buginesisk"}\r
-        byn{"blin"}\r
-        ca{"katalansk"}\r
-        cad{"caddo"}\r
         car{"carib"}\r
-        cch{"atsam"}\r
-        ccp{"chakma"}\r
-        ce{"tsjetsjensk"}\r
         ceb{"cebuano"}\r
-        cgg{"kiga"}\r
-        ch{"chamorro"}\r
-        chb{"chibcha"}\r
         chg{"tsjagataisk"}\r
-        chk{"chuukesisk"}\r
-        chm{"mari"}\r
-        chn{"chinook"}\r
-        cho{"choctaw"}\r
-        chp{"chipewiansk"}\r
         chr{"cherokee"}\r
-        chy{"cheyenne"}\r
         ckb{"sorani"}\r
-        co{"korsikansk"}\r
-        cop{"koptisk"}\r
-        cr{"cree"}\r
-        crh{"krimtatarisk"}\r
         crs{"seselwa (fransk-kreolsk)"}\r
-        cs{"tsjekkisk"}\r
-        csb{"kasjubisk"}\r
         cu{"kyrkjeslavisk"}\r
         cv{"tsjuvansk"}\r
-        cy{"walisisk"}\r
-        da{"dansk"}\r
-        dak{"dakota"}\r
-        dar{"dargwa"}\r
-        dav{"taita"}\r
-        de{"tysk"}\r
-        del{"delaware"}\r
         den{"slavej"}\r
-        dgr{"dogrib"}\r
-        din{"dinka"}\r
-        dje{"zarma"}\r
-        doi{"dogri"}\r
         dsb{"lågsorbisk"}\r
-        dua{"duala"}\r
-        dum{"mellomnederlandsk"}\r
-        dv{"divehi"}\r
-        dyo{"jola-fonyi"}\r
-        dyu{"dyula"}\r
-        dz{"dzongkha"}\r
-        dzg{"dazaga"}\r
         ebu{"embu"}\r
-        ee{"ewe"}\r
-        efi{"efik"}\r
         egy{"gammalegyptisk"}\r
-        eka{"ekajuk"}\r
-        el{"gresk"}\r
         elx{"elamite"}\r
-        en{"engelsk"}\r
-        enm{"mellomengelsk"}\r
-        eo{"esperanto"}\r
-        es{"spansk"}\r
-        et{"estisk"}\r
-        eu{"baskisk"}\r
-        ewo{"ewondo"}\r
-        fa{"persisk"}\r
         fa_AF{"dari"}\r
-        fan{"fang"}\r
-        fat{"fanti"}\r
-        ff{"fulfulde"}\r
-        fi{"finsk"}\r
         fil{"filippinsk"}\r
-        fj{"fijiansk"}\r
-        fo{"færøysk"}\r
-        fon{"fon"}\r
-        fr{"fransk"}\r
-        frm{"mellomfransk"}\r
         fro{"gammalfransk"}\r
-        frr{"nordfrisisk"}\r
         frs{"austfrisisk"}\r
         fur{"friulisk"}\r
-        fy{"vestfrisisk"}\r
-        ga{"irsk"}\r
-        gaa{"ga"}\r
-        gay{"gayo"}\r
-        gba{"gbaya"}\r
-        gd{"skotsk-gælisk"}\r
-        gez{"geez"}\r
         gil{"gilbertese"}\r
-        gl{"galisisk"}\r
         gmh{"mellomhøgtysk"}\r
-        gn{"guarani"}\r
         goh{"gammalhøgtysk"}\r
-        gon{"gondi"}\r
-        gor{"gorontalo"}\r
-        got{"gotisk"}\r
-        grb{"grebo"}\r
         grc{"gammalgresk"}\r
-        gsw{"sveitsertysk"}\r
-        gu{"gujarati"}\r
-        guz{"gusii"}\r
         gv{"manx"}\r
-        gwi{"gwichin"}\r
-        ha{"hausa"}\r
-        hai{"haida"}\r
-        haw{"hawaiisk"}\r
-        he{"hebraisk"}\r
-        hi{"hindi"}\r
-        hil{"hiligaynon"}\r
-        hit{"hettittisk"}\r
-        hmn{"hmong"}\r
-        ho{"hiri motu"}\r
-        hr{"kroatisk"}\r
         hsb{"høgsorbisk"}\r
-        ht{"haitisk"}\r
-        hu{"ungarsk"}\r
-        hup{"hupa"}\r
-        hy{"armensk"}\r
-        hz{"herero"}\r
-        ia{"interlingua"}\r
-        iba{"iban"}\r
-        ibb{"ibibio"}\r
-        id{"indonesisk"}\r
-        ie{"interlingue"}\r
-        ig{"ibo"}\r
-        ii{"sichuan-yi"}\r
-        ik{"inupiak"}\r
-        ilo{"iloko"}\r
-        inh{"ingusjisk"}\r
-        io{"ido"}\r
-        is{"islandsk"}\r
-        it{"italiensk"}\r
-        iu{"inuktitut"}\r
-        ja{"japansk"}\r
-        jbo{"lojban"}\r
-        jgo{"ngomba"}\r
-        jmc{"machame"}\r
-        jpr{"jødepersisk"}\r
-        jrb{"jødearabisk"}\r
-        jv{"javanesisk"}\r
-        ka{"georgisk"}\r
-        kaa{"karakalpakisk"}\r
         kab{"kabyle"}\r
-        kac{"kachin"}\r
-        kaj{"jju"}\r
-        kam{"kamba"}\r
-        kaw{"kawi"}\r
-        kbd{"kabardisk"}\r
-        kcg{"tyap"}\r
-        kde{"makonde"}\r
         kea{"kabuverdianu"}\r
-        kfo{"koro"}\r
-        kg{"kikongo"}\r
-        kha{"khasi"}\r
-        kho{"khotanesisk"}\r
-        khq{"koyra chiini"}\r
-        ki{"kikuyu"}\r
-        kj{"kuanyama"}\r
-        kk{"kasakhisk"}\r
-        kkj{"kako"}\r
         kl{"grønlandsk (kalaallisut)"}\r
-        kln{"kalenjin"}\r
-        km{"khmer"}\r
-        kmb{"kimbundu"}\r
-        kn{"kannada"}\r
-        ko{"koreansk"}\r
-        kok{"konkani"}\r
-        kos{"kosraeansk"}\r
-        kpe{"kpelle"}\r
-        kr{"kanuri"}\r
         krc{"karachay-balkar"}\r
-        krl{"karelsk"}\r
-        kru{"kurukh"}\r
-        ks{"kasjmiri"}\r
-        ksb{"shambala"}\r
-        ksf{"bafia"}\r
-        ksh{"kølnsk"}\r
-        ku{"kurdisk"}\r
         kum{"kumyk"}\r
-        kut{"kutenai"}\r
-        kv{"komi"}\r
-        kw{"kornisk"}\r
-        ky{"kirgisisk"}\r
-        la{"latin"}\r
         lad{"ladino"}\r
-        lag{"langi"}\r
-        lah{"lahnda"}\r
-        lam{"lamba"}\r
-        lb{"luxemburgsk"}\r
         lez{"lezghian"}\r
-        lg{"ganda"}\r
         li{"limburgisk"}\r
-        lkt{"lakota"}\r
-        ln{"lingala"}\r
-        lo{"laotisk"}\r
-        lol{"mongo"}\r
-        loz{"lozi"}\r
         lrc{"nord-lurisk"}\r
-        lt{"litauisk"}\r
-        lu{"luba-katanga"}\r
-        lua{"luba-lulua"}\r
-        lui{"luiseno"}\r
-        lun{"lunda"}\r
-        luo{"luo"}\r
         lus{"lushai"}\r
         luy{"olulujia"}\r
-        lv{"latvisk"}\r
-        mad{"maduresisk"}\r
-        mag{"magahi"}\r
-        mai{"maithili"}\r
-        mak{"makasar"}\r
-        man{"mandingo"}\r
-        mas{"masai"}\r
         mdf{"moksha"}\r
-        mdr{"mandar"}\r
-        men{"mende"}\r
-        mer{"meru"}\r
         mfe{"morisyen"}\r
         mg{"madagassisk"}\r
-        mga{"mellomirsk"}\r
-        mgh{"makhuwa-meetto"}\r
-        mgo{"meta’"}\r
-        mh{"marshallesisk"}\r
-        mi{"maori"}\r
-        mic{"micmac"}\r
-        min{"minangkabau"}\r
-        mk{"makedonsk"}\r
-        ml{"malayalam"}\r
-        mn{"mongolsk"}\r
-        mnc{"mandsju"}\r
-        mni{"manipuri"}\r
-        moh{"mohawk"}\r
-        mos{"mossi"}\r
-        mr{"marathi"}\r
-        ms{"malayisk"}\r
-        mt{"maltesisk"}\r
-        mua{"mundang"}\r
         mul{"fleire språk"}\r
-        mus{"creek"}\r
-        mwl{"mirandesisk"}\r
-        mwr{"marwari"}\r
-        my{"burmesisk"}\r
-        myv{"erzia"}\r
         mzn{"mazanderani"}\r
-        na{"nauru"}\r
-        nap{"napolitansk"}\r
-        naq{"nama"}\r
-        nb{"norsk bokmål"}\r
-        nd{"nord-ndebele"}\r
         nds{"lågtysk"}\r
         nds_NL{"lågsaksisk"}\r
         ne{"nepalsk"}\r
-        new{"newari"}\r
-        ng{"ndonga"}\r
-        nia{"nias"}\r
         niu{"niuisk"}\r
-        nl{"nederlandsk"}\r
         nl_BE{"flamsk"}\r
-        nmg{"kwasio"}\r
-        nn{"norsk nynorsk"}\r
-        nnh{"ngiemboon"}\r
-        no{"norsk"}\r
         nog{"nogai"}\r
         non{"gammalnorsk"}\r
         nqo{"n’ko"}\r
-        nr{"sør-ndebele"}\r
         nso{"nordsotho"}\r
-        nus{"nuer"}\r
-        nv{"navajo"}\r
         nwc{"klassisk newarisk"}\r
-        ny{"nyanja"}\r
-        nym{"nyamwezi"}\r
-        nyn{"nyankole"}\r
-        nyo{"nyoro"}\r
-        nzi{"nzima"}\r
-        oc{"oksitansk"}\r
-        oj{"ojibwa"}\r
-        om{"oromo"}\r
-        or{"odia"}\r
-        os{"ossetisk"}\r
-        osa{"osage"}\r
-        ota{"ottomansk tyrkisk"}\r
-        pa{"panjabi"}\r
-        pag{"pangasinan"}\r
-        pal{"pahlavi"}\r
-        pam{"pampanga"}\r
-        pap{"papiamento"}\r
-        pau{"palauisk"}\r
         pcm{"nigeriansk pidgin"}\r
         peo{"gammalpersisk"}\r
-        phn{"fønikisk"}\r
-        pi{"pali"}\r
-        pl{"polsk"}\r
-        pon{"ponapisk"}\r
-        prg{"prøyssisk"}\r
         pro{"gammalprovençalsk"}\r
-        ps{"pashto"}\r
-        pt{"portugisisk"}\r
-        qu{"quechua"}\r
         quc{"k’iche"}\r
-        raj{"rajasthani"}\r
-        rap{"rapanui"}\r
-        rar{"rarotongansk"}\r
-        rm{"retoromansk"}\r
-        rn{"rundi"}\r
-        ro{"rumensk"}\r
         ro_MD{"moldavisk"}\r
-        rof{"rombo"}\r
-        rom{"romani"}\r
-        root{"rot"}\r
-        ru{"russisk"}\r
         rup{"arumensk"}\r
         rw{"kinjarwanda"}\r
-        rwk{"rwa"}\r
-        sa{"sanskrit"}\r
-        sad{"sandawe"}\r
-        sah{"sakha"}\r
-        sam{"samaritansk arameisk"}\r
-        saq{"samburu"}\r
-        sas{"sasak"}\r
-        sat{"santali"}\r
-        sba{"ngambay"}\r
-        sbp{"sangu"}\r
         sc{"sardinsk"}\r
-        scn{"siciliansk"}\r
-        sco{"skotsk"}\r
-        sd{"sindhi"}\r
-        se{"nordsamisk"}\r
-        seh{"sena"}\r
-        sel{"selkupisk"}\r
-        ses{"koyraboro senni"}\r
-        sg{"sango"}\r
         sga{"gammalirsk"}\r
-        sh{"serbokroatisk"}\r
-        shi{"tachelhit"}\r
-        shn{"shan"}\r
-        si{"singalesisk"}\r
-        sid{"sidamo"}\r
-        sk{"slovakisk"}\r
-        sl{"slovensk"}\r
-        sm{"samoansk"}\r
-        sma{"sørsamisk"}\r
-        smj{"lulesamisk"}\r
-        smn{"enaresamisk"}\r
-        sms{"skoltesamisk"}\r
-        sn{"shona"}\r
-        snk{"soninke"}\r
-        so{"somali"}\r
-        sog{"sogdisk"}\r
-        sq{"albansk"}\r
-        sr{"serbisk"}\r
         srn{"sranan tongo"}\r
-        srr{"serer"}\r
-        ss{"swati"}\r
-        ssy{"saho"}\r
         st{"sørsotho"}\r
-        su{"sundanesisk"}\r
-        suk{"sukuma"}\r
-        sus{"susu"}\r
-        sux{"sumerisk"}\r
-        sv{"svensk"}\r
-        sw{"swahili"}\r
         swb{"shimaore"}\r
-        syc{"klassisk syrisk"}\r
         syr{"syrisk"}\r
-        ta{"tamil"}\r
-        te{"telugu"}\r
-        tem{"temne"}\r
-        teo{"teso"}\r
-        ter{"tereno"}\r
-        tet{"tetum"}\r
-        tg{"tadsjikisk"}\r
-        th{"thai"}\r
-        ti{"tigrinja"}\r
-        tig{"tigré"}\r
         tiv{"tivi"}\r
-        tk{"turkmensk"}\r
         tkl{"tokelau"}\r
-        tl{"tagalog"}\r
-        tlh{"klingon"}\r
-        tli{"tlingit"}\r
-        tmh{"tamasjek"}\r
         tn{"tswana"}\r
-        to{"tongansk"}\r
         tog{"tonga (Nyasa)"}\r
-        tpi{"tok pisin"}\r
-        tr{"tyrkisk"}\r
-        trv{"taroko"}\r
-        ts{"tsonga"}\r
-        tsi{"tsimshian"}\r
-        tt{"tatarisk"}\r
-        tum{"tumbuka"}\r
         tvl{"tuvalu"}\r
-        tw{"twi"}\r
-        twq{"tasawaq"}\r
-        ty{"tahitisk"}\r
         tyv{"tuvinisk"}\r
         tzm{"sentral-tamazight"}\r
         udm{"udmurt"}\r
-        ug{"uigurisk"}\r
-        uga{"ugaritisk"}\r
-        uk{"ukrainsk"}\r
-        umb{"umbundu"}\r
-        und{"ukjent språk"}\r
-        ur{"urdu"}\r
-        uz{"usbekisk"}\r
-        vai{"vai"}\r
-        ve{"venda"}\r
-        vi{"vietnamesisk"}\r
-        vo{"volapyk"}\r
-        vot{"votisk"}\r
-        vun{"vunjo"}\r
-        wa{"vallonsk"}\r
-        wae{"walsertysk"}\r
-        wal{"wolaytta"}\r
         war{"waray"}\r
-        was{"washo"}\r
-        wo{"wolof"}\r
         xal{"kalmykisk"}\r
-        xh{"xhosa"}\r
-        xog{"soga"}\r
-        yao{"yao"}\r
-        yap{"yapesisk"}\r
-        yav{"yangben"}\r
-        ybb{"yemba"}\r
-        yi{"jiddisk"}\r
-        yo{"joruba"}\r
-        yue{"kantonesisk"}\r
-        za{"zhuang"}\r
         zap{"zapotec"}\r
         zbl{"blissymbol"}\r
-        zen{"zenaga"}\r
         zgh{"standard marokkansk tamazight"}\r
-        zh{"kinesisk"}\r
         zh_Hans{"forenkla kinesisk"}\r
         zh_Hant{"tradisjonell kinesisk"}\r
-        zu{"zulu"}\r
-        zun{"zuni"}\r
         zxx{"utan språkleg innhald"}\r
         zza{"zaza"}\r
     }\r
@@ -513,183 +102,57 @@ nn{
         zh_Hans{"forenkla mandarinkinesisk"}\r
         zh_Hant{"tradisjonell mandarinkinesisk"}\r
     }\r
-    Languages%menu{\r
-        ckb{"kurdisk (sentral)"}\r
-        zh{"kinesisk, mandarin"}\r
-    }\r
     Languages%variant{\r
         ckb{"kurdisk (sorani)"}\r
     }\r
     Scripts{\r
-        Arab{"arabisk"}\r
         Armi{"armisk"}\r
-        Armn{"armensk"}\r
-        Avst{"avestisk"}\r
-        Bali{"balinesisk"}\r
-        Batk{"batak"}\r
-        Beng{"bengalsk"}\r
-        Blis{"blissymbol"}\r
-        Bopo{"bopomofo"}\r
-        Brah{"brahmi"}\r
-        Brai{"punktskrift"}\r
-        Bugi{"buginesisk"}\r
-        Buhd{"buhid"}\r
-        Cakm{"chakma"}\r
         Cans{"felles kanadiske urspråksstavingar"}\r
-        Cari{"karisk"}\r
-        Cham{"cham"}\r
-        Cher{"cherokee"}\r
-        Cirt{"cirth"}\r
-        Copt{"koptisk"}\r
-        Cprt{"kypriotisk"}\r
-        Cyrl{"kyrillisk"}\r
         Cyrs{"kyrillisk (kyrkjeslavisk variant)"}\r
-        Deva{"devanagari"}\r
-        Dsrt{"deseret"}\r
-        Egyd{"egyptisk demotisk"}\r
-        Egyh{"egyptisk hieratisk"}\r
         Egyp{"egyptiske hieroglyfar"}\r
-        Ethi{"etiopisk"}\r
         Geok{"khutsuri (asomtavruli og nuskhuri)"}\r
-        Geor{"georgisk"}\r
-        Glag{"glagolittisk"}\r
-        Goth{"gotisk"}\r
-        Grek{"gresk"}\r
-        Gujr{"gujarati"}\r
-        Guru{"gurmukhi"}\r
         Hanb{"hanb"}\r
-        Hang{"hangul"}\r
-        Hani{"han"}\r
-        Hano{"hanunoo"}\r
         Hans{"forenkla"}\r
-        Hant{"tradisjonell"}\r
-        Hebr{"hebraisk"}\r
-        Hira{"hiragana"}\r
         Hmng{"pahawk hmong"}\r
         Hrkt{"japansk stavingsskrifter"}\r
         Hung{"gammalungarsk"}\r
-        Inds{"indus"}\r
         Ital{"gammalitalisk"}\r
-        Jamo{"jamo"}\r
-        Java{"javanesisk"}\r
-        Jpan{"japansk"}\r
-        Kali{"kayah li"}\r
-        Kana{"katakana"}\r
-        Khar{"kharoshthi"}\r
-        Khmr{"khmer"}\r
-        Knda{"kannada"}\r
-        Kore{"koreansk"}\r
-        Kthi{"kaithisk"}\r
-        Lana{"lanna"}\r
-        Laoo{"laotisk"}\r
         Latf{"latinsk (frakturvariant)"}\r
         Latg{"latinsk (gælisk variant)"}\r
-        Latn{"latinsk"}\r
-        Lepc{"lepcha"}\r
         Limb{"lumbu"}\r
-        Lina{"lineær A"}\r
-        Linb{"lineær B"}\r
-        Lyci{"lykisk"}\r
-        Lydi{"lydisk"}\r
-        Mand{"mandaisk"}\r
-        Mani{"manikeisk"}\r
         Maya{"maya-hieroglyfar"}\r
-        Mero{"meroitisk"}\r
-        Mlym{"malayalam"}\r
-        Mong{"mongolsk"}\r
-        Moon{"moon"}\r
-        Mtei{"meitei-mayek"}\r
-        Mymr{"burmesisk"}\r
-        Nkoo{"n’ko"}\r
-        Ogam{"ogham"}\r
-        Olck{"ol-chiki"}\r
-        Orkh{"orkhon"}\r
-        Orya{"odia"}\r
-        Osma{"osmanya"}\r
         Perm{"gammalpermisk"}\r
-        Phag{"phags-pa"}\r
-        Phli{"inskripsjonspahlavi"}\r
         Phlp{"salmepahlavi"}\r
-        Phlv{"pahlavi"}\r
-        Phnx{"fønikisk"}\r
-        Plrd{"pollard-fonetisk"}\r
-        Prti{"inskripsjonsparthisk"}\r
-        Rjng{"rejang"}\r
-        Roro{"rongorongo"}\r
-        Runr{"runer"}\r
-        Samr{"samaritansk"}\r
-        Sara{"sarati"}\r
-        Saur{"saurashtra"}\r
         Sgnw{"teiknskrift"}\r
-        Shaw{"shavisk"}\r
-        Sinh{"singalesisk"}\r
-        Sund{"sundanesisk"}\r
-        Sylo{"syloti nagri"}\r
         Syrc{"syriakisk"}\r
         Syre{"syriakisk (estrangelo-variant)"}\r
         Syrj{"syriakisk (vestleg variant)"}\r
         Syrn{"syriakisk (austleg variant)"}\r
-        Tagb{"tagbanwa"}\r
-        Tale{"tai le"}\r
-        Talu{"ny tai lue"}\r
-        Taml{"tamilsk"}\r
-        Tavt{"tai viet"}\r
-        Telu{"telugu"}\r
-        Teng{"tengwar"}\r
-        Tfng{"tifinagh"}\r
-        Tglg{"tagalog"}\r
         Thaa{"thaana"}\r
-        Thai{"thai"}\r
-        Tibt{"tibetansk"}\r
-        Ugar{"ugaritisk"}\r
-        Vaii{"vai"}\r
         Visp{"synleg tale"}\r
         Xpeo{"gammalpersisk"}\r
         Xsux{"sumero-akkadisk kileskrift"}\r
-        Yiii{"yi"}\r
         Zinh{"nedarva"}\r
-        Zmth{"matematisk notasjon"}\r
-        Zsye{"emoji"}\r
         Zsym{"symbol"}\r
         Zxxx{"språk utan skrift"}\r
-        Zyyy{"felles"}\r
         Zzzz{"ukjend skrift"}\r
     }\r
     Scripts%stand-alone{\r
         Hans{"forenkla han"}\r
-        Hant{"tradisjonell han"}\r
     }\r
     Types{\r
         calendar{\r
-            buddhist{"buddhistisk kalender"}\r
-            chinese{"kinesisk kalender"}\r
-            dangi{"dangisk kalender"}\r
-            ethiopic{"etiopisk kalender"}\r
-            ethiopic-amete-alem{"etiopisk amete-alem-kalender"}\r
-            gregorian{"gregoriansk kalender"}\r
-            hebrew{"hebraisk kalender"}\r
-            indian{"indisk nasjonalkalender"}\r
-            islamic{"islamsk kalender"}\r
             islamic-civil{"islamsk sivil kalender"}\r
-            iso8601{"ISO 8601-kalender"}\r
-            japanese{"japansk kalender"}\r
-            persian{"persisk kalender"}\r
-            roc{"minguo-kalender"}\r
         }\r
         cf{\r
             account{"valutaformat for rekneskapsføring"}\r
-            standard{"standard valutaformat"}\r
         }\r
         collation{\r
             big5han{"tradisjonell kinesisk sortering"}\r
             ducet{"standard Unicode-sorteringsrekkjefølgje"}\r
             gb2312han{"forenkla kinesisk sortering"}\r
-            phonebook{"telefonkatalogsortering"}\r
             pinyin{"pinyin-sortering"}\r
-            search{"generelt søk"}\r
             standard{"standard sorteringsrekkjefølgje"}\r
-            stroke{"streksortering"}\r
-            traditional{"tradisjonell sortering"}\r
         }\r
         hc{\r
             h11{"12-timesystem (0–11)"}\r
@@ -702,11 +165,6 @@ nn{
             normal{"normal lineskiftstil"}\r
             strict{"streng lineskiftstil"}\r
         }\r
-        ms{\r
-            metric{"metrisk system"}\r
-            uksystem{"britisk målesystem"}\r
-            ussystem{"amerikansk målesystem"}\r
-        }\r
         numbers{\r
             arab{"arabisk-indiske siffer"}\r
             arabext{"utvida arabisk-indiske siffer"}\r
@@ -747,41 +205,21 @@ nn{
     }\r
     Variants{\r
         1606NICT{"nyare mellomfransk til 1606"}\r
-        1694ACAD{"eldre nyfransk"}\r
-        1901{"tradisjonell tysk ortografi"}\r
-        1994{"standardisert resisk ortografi"}\r
         1996{"tysk ortografi frå 1996"}\r
         AREVELA{"austarmensk"}\r
         AREVMDA{"vestarmensk"}\r
         BAKU1926{"samla tyrkisk-latinsk alfabet"}\r
-        BISKE{"san giorgio- og biladialekt"}\r
-        BOONT{"boontling"}\r
         FONIPA{"det internasjonale fonetiske alfabetet (IPA)"}\r
         FONUPA{"det uralske fonetiske alfabetet UPA"}\r
         LIPAW{"resian, lipovazdialekt"}\r
-        MONOTON{"monotonisk rettskriving"}\r
-        NEDIS{"natisonedialekt"}\r
-        NJIVA{"gniva- og njivadialekt"}\r
-        OSOJS{"oseacco- og osojanedialekt"}\r
-        POLYTON{"polytonisk rettskriving"}\r
-        POSIX{"dataspråk"}\r
         REVISED{"revidert rettskriving"}\r
-        ROZAJ{"resisk dialekt"}\r
         SAAHO{"saaho-dialekt"}\r
-        SCOTLAND{"skotsk standard engelsk"}\r
         SCOUSE{"scouse-dialekt"}\r
-        SOLBA{"stolvizza- og solbicadialekt"}\r
-        TARASK{"taraskievica-ortografi"}\r
         VALENCIA{"valensisk dialekt"}\r
     }\r
     characterLabelPattern{\r
-        all{"{0} – alt"}\r
-        category-list{"{0}: {1}"}\r
-        compatibility{"{0} – kompatibilitet"}\r
         enclosed{"{0} – omslutta"}\r
         extended{"{0} – utvida"}\r
-        historic{"{0} – historisk"}\r
-        miscellaneous{"{0} – diverse"}\r
         other{"{0} – anna"}\r
         scripts{"skriftsystem – {0}"}\r
         strokes{\r
@@ -791,14 +229,4 @@ nn{
         subscript{"senka {0}"}\r
         superscript{"heva {0}"}\r
     }\r
-    codePatterns{\r
-        language{"Språk: {0}"}\r
-        script{"Skrift: {0}"}\r
-        territory{"Område: {0}"}\r
-    }\r
-    localeDisplayPattern{\r
-        keyTypePattern{"{0}: {1}"}\r
-        pattern{"{0} ({1})"}\r
-        separator{"{0}, {1}"}\r
-    }\r
 }\r
index a6eca3c..88ddabd 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no{\r
-    "%%ALIAS"{"nb"}\r
+    Keys{\r
+        calendar{"kalender"}\r
+        cf{"valutaformat"}\r
+        colAlternate{"Ignorer sortering etter symboler"}\r
+        colBackwards{"omvendt sortering etter aksent"}\r
+        colCaseFirst{"Organisering av store og små bokstaver"}\r
+        colCaseLevel{"Sortering av store og små bokstaver"}\r
+        colNormalization{"Normalisert sortering"}\r
+        colNumeric{"Numerisk sortering"}\r
+        colStrength{"Sorteringsstyrke"}\r
+        collation{"sorteringsrekkefølge"}\r
+        currency{"valuta"}\r
+        hc{"timesyklus (12 eller 24)"}\r
+        lb{"linjeskiftstil"}\r
+        ms{"målesystem"}\r
+        numbers{"tall"}\r
+        timezone{"tidssone"}\r
+        va{"språkvariant"}\r
+        x{"privat bruk"}\r
+    }\r
+    Languages{\r
+        aa{"afar"}\r
+        ab{"abkhasisk"}\r
+        ace{"achinesisk"}\r
+        ach{"acoli"}\r
+        ada{"adangme"}\r
+        ady{"adygeisk"}\r
+        ae{"avestisk"}\r
+        aeb{"tunisisk-arabisk"}\r
+        af{"afrikaans"}\r
+        afh{"afrihili"}\r
+        agq{"aghem"}\r
+        ain{"ainu"}\r
+        ak{"akan"}\r
+        akk{"akkadisk"}\r
+        akz{"alabama"}\r
+        ale{"aleutisk"}\r
+        aln{"gegisk-albansk"}\r
+        alt{"søraltaisk"}\r
+        am{"amharisk"}\r
+        an{"aragonsk"}\r
+        ang{"gammelengelsk"}\r
+        anp{"angika"}\r
+        ar{"arabisk"}\r
+        ar_001{"moderne standardarabisk"}\r
+        arc{"arameisk"}\r
+        arn{"mapudungun"}\r
+        aro{"araona"}\r
+        arp{"arapaho"}\r
+        arq{"algerisk arabisk"}\r
+        ars{"najdi-arabisk"}\r
+        arw{"arawak"}\r
+        ary{"marokkansk-arabisk"}\r
+        arz{"egyptisk arabisk"}\r
+        as{"assamesisk"}\r
+        asa{"asu"}\r
+        ase{"amerikansk tegnspråk"}\r
+        ast{"asturisk"}\r
+        av{"avarisk"}\r
+        avk{"kotava"}\r
+        awa{"avadhi"}\r
+        ay{"aymara"}\r
+        az{"aserbajdsjansk"}\r
+        ba{"basjkirsk"}\r
+        bal{"baluchi"}\r
+        ban{"balinesisk"}\r
+        bar{"bairisk"}\r
+        bas{"basaa"}\r
+        bax{"bamun"}\r
+        bbc{"batak toba"}\r
+        bbj{"ghomala"}\r
+        be{"hviterussisk"}\r
+        bej{"beja"}\r
+        bem{"bemba"}\r
+        bew{"betawi"}\r
+        bez{"bena"}\r
+        bfd{"bafut"}\r
+        bfq{"badaga"}\r
+        bg{"bulgarsk"}\r
+        bgn{"vestbalutsji"}\r
+        bho{"bhojpuri"}\r
+        bi{"bislama"}\r
+        bik{"bikol"}\r
+        bin{"bini"}\r
+        bjn{"banjar"}\r
+        bkm{"kom"}\r
+        bla{"siksika"}\r
+        bm{"bambara"}\r
+        bn{"bengali"}\r
+        bo{"tibetansk"}\r
+        bpy{"bishnupriya"}\r
+        bqi{"bakhtiari"}\r
+        br{"bretonsk"}\r
+        bra{"braj"}\r
+        brh{"brahui"}\r
+        brx{"bodo"}\r
+        bs{"bosnisk"}\r
+        bss{"akose"}\r
+        bua{"burjatisk"}\r
+        bug{"buginesisk"}\r
+        bum{"bulu"}\r
+        byn{"blin"}\r
+        byv{"medumba"}\r
+        ca{"katalansk"}\r
+        cad{"caddo"}\r
+        car{"karibisk"}\r
+        cay{"cayuga"}\r
+        cch{"atsam"}\r
+        ccp{"chakma"}\r
+        ce{"tsjetsjensk"}\r
+        ceb{"cebuansk"}\r
+        cgg{"kiga"}\r
+        ch{"chamorro"}\r
+        chb{"chibcha"}\r
+        chg{"tsjagatai"}\r
+        chk{"chuukesisk"}\r
+        chm{"mari"}\r
+        chn{"chinook"}\r
+        cho{"choctaw"}\r
+        chp{"chipewiansk"}\r
+        chr{"cherokesisk"}\r
+        chy{"cheyenne"}\r
+        ckb{"kurdisk (sorani)"}\r
+        co{"korsikansk"}\r
+        cop{"koptisk"}\r
+        cps{"kapiz"}\r
+        cr{"cree"}\r
+        crh{"krimtatarisk"}\r
+        crs{"seselwa"}\r
+        cs{"tsjekkisk"}\r
+        csb{"kasjubisk"}\r
+        cu{"kirkeslavisk"}\r
+        cv{"tsjuvasjisk"}\r
+        cy{"walisisk"}\r
+        da{"dansk"}\r
+        dak{"dakota"}\r
+        dar{"dargwa"}\r
+        dav{"taita"}\r
+        de{"tysk"}\r
+        del{"delaware"}\r
+        den{"slavey"}\r
+        dgr{"dogrib"}\r
+        din{"dinka"}\r
+        dje{"zarma"}\r
+        doi{"dogri"}\r
+        dsb{"lavsorbisk"}\r
+        dtp{"sentraldusun"}\r
+        dua{"duala"}\r
+        dum{"mellomnederlandsk"}\r
+        dv{"divehi"}\r
+        dyo{"jola-fonyi"}\r
+        dyu{"dyula"}\r
+        dz{"dzongkha"}\r
+        dzg{"dazaga"}\r
+        ebu{"kiembu"}\r
+        ee{"ewe"}\r
+        efi{"efik"}\r
+        egl{"emiliansk"}\r
+        egy{"gammelegyptisk"}\r
+        eka{"ekajuk"}\r
+        el{"gresk"}\r
+        elx{"elamittisk"}\r
+        en{"engelsk"}\r
+        enm{"mellomengelsk"}\r
+        eo{"esperanto"}\r
+        es{"spansk"}\r
+        esu{"sentralyupik"}\r
+        et{"estisk"}\r
+        eu{"baskisk"}\r
+        ewo{"ewondo"}\r
+        ext{"ekstremaduransk"}\r
+        fa{"persisk"}\r
+        fa_AF{"dari"}\r
+        fan{"fang"}\r
+        fat{"fanti"}\r
+        ff{"fulfulde"}\r
+        fi{"finsk"}\r
+        fil{"filipino"}\r
+        fit{"tornedalsfinsk"}\r
+        fj{"fijiansk"}\r
+        fo{"færøysk"}\r
+        fon{"fon"}\r
+        fr{"fransk"}\r
+        frc{"cajunfransk"}\r
+        frm{"mellomfransk"}\r
+        fro{"gammelfransk"}\r
+        frp{"arpitansk"}\r
+        frr{"nordfrisisk"}\r
+        frs{"østfrisisk"}\r
+        fur{"friuliansk"}\r
+        fy{"vestfrisisk"}\r
+        ga{"irsk"}\r
+        gaa{"ga"}\r
+        gag{"gagausisk"}\r
+        gan{"gan"}\r
+        gay{"gayo"}\r
+        gba{"gbaya"}\r
+        gbz{"zoroastrisk dari"}\r
+        gd{"skotsk-gælisk"}\r
+        gez{"geez"}\r
+        gil{"kiribatisk"}\r
+        gl{"galisisk"}\r
+        glk{"gileki"}\r
+        gmh{"mellomhøytysk"}\r
+        gn{"guarani"}\r
+        goh{"gammelhøytysk"}\r
+        gom{"goansk konkani"}\r
+        gon{"gondi"}\r
+        gor{"gorontalo"}\r
+        got{"gotisk"}\r
+        grb{"grebo"}\r
+        grc{"gammelgresk"}\r
+        gsw{"sveitsertysk"}\r
+        gu{"gujarati"}\r
+        guc{"wayuu"}\r
+        gur{"frafra"}\r
+        guz{"gusii"}\r
+        gv{"mansk"}\r
+        gwi{"gwichin"}\r
+        ha{"hausa"}\r
+        hai{"haida"}\r
+        hak{"hakka"}\r
+        haw{"hawaiisk"}\r
+        he{"hebraisk"}\r
+        hi{"hindi"}\r
+        hif{"fijiansk hindi"}\r
+        hil{"hiligaynon"}\r
+        hit{"hettittisk"}\r
+        hmn{"hmong"}\r
+        ho{"hiri motu"}\r
+        hr{"kroatisk"}\r
+        hsb{"høysorbisk"}\r
+        hsn{"xiang"}\r
+        ht{"haitisk"}\r
+        hu{"ungarsk"}\r
+        hup{"hupa"}\r
+        hy{"armensk"}\r
+        hz{"herero"}\r
+        ia{"interlingua"}\r
+        iba{"iban"}\r
+        ibb{"ibibio"}\r
+        id{"indonesisk"}\r
+        ie{"interlingue"}\r
+        ig{"ibo"}\r
+        ii{"sichuan-yi"}\r
+        ik{"inupiak"}\r
+        ilo{"iloko"}\r
+        inh{"ingusjisk"}\r
+        io{"ido"}\r
+        is{"islandsk"}\r
+        it{"italiensk"}\r
+        iu{"inuktitut"}\r
+        izh{"ingrisk"}\r
+        ja{"japansk"}\r
+        jam{"jamaicansk kreolengelsk"}\r
+        jbo{"lojban"}\r
+        jgo{"ngomba"}\r
+        jmc{"machame"}\r
+        jpr{"jødepersisk"}\r
+        jrb{"jødearabisk"}\r
+        jut{"jysk"}\r
+        jv{"javanesisk"}\r
+        ka{"georgisk"}\r
+        kaa{"karakalpakisk"}\r
+        kab{"kabylsk"}\r
+        kac{"kachin"}\r
+        kaj{"jju"}\r
+        kam{"kamba"}\r
+        kaw{"kawi"}\r
+        kbd{"kabardisk"}\r
+        kbl{"kanembu"}\r
+        kcg{"tyap"}\r
+        kde{"makonde"}\r
+        kea{"kappverdisk"}\r
+        ken{"kenyang"}\r
+        kfo{"koro"}\r
+        kg{"kikongo"}\r
+        kgp{"kaingang"}\r
+        kha{"khasi"}\r
+        kho{"khotanesisk"}\r
+        khq{"koyra chiini"}\r
+        khw{"khowar"}\r
+        ki{"kikuyu"}\r
+        kiu{"kirmancki"}\r
+        kj{"kuanyama"}\r
+        kk{"kasakhisk"}\r
+        kkj{"kako"}\r
+        kl{"grønlandsk"}\r
+        kln{"kalenjin"}\r
+        km{"khmer"}\r
+        kmb{"kimbundu"}\r
+        kn{"kannada"}\r
+        ko{"koreansk"}\r
+        koi{"komipermjakisk"}\r
+        kok{"konkani"}\r
+        kos{"kosraeansk"}\r
+        kpe{"kpelle"}\r
+        kr{"kanuri"}\r
+        krc{"karatsjajbalkarsk"}\r
+        kri{"krio"}\r
+        krj{"kinaray-a"}\r
+        krl{"karelsk"}\r
+        kru{"kurukh"}\r
+        ks{"kasjmiri"}\r
+        ksb{"shambala"}\r
+        ksf{"bafia"}\r
+        ksh{"kølnsk"}\r
+        ku{"kurdisk"}\r
+        kum{"kumykisk"}\r
+        kut{"kutenai"}\r
+        kv{"komi"}\r
+        kw{"kornisk"}\r
+        ky{"kirgisisk"}\r
+        la{"latin"}\r
+        lad{"ladinsk"}\r
+        lag{"langi"}\r
+        lah{"lahnda"}\r
+        lam{"lamba"}\r
+        lb{"luxemburgsk"}\r
+        lez{"lesgisk"}\r
+        lfn{"lingua franca nova"}\r
+        lg{"ganda"}\r
+        li{"limburgsk"}\r
+        lij{"ligurisk"}\r
+        liv{"livisk"}\r
+        lkt{"lakota"}\r
+        lmo{"lombardisk"}\r
+        ln{"lingala"}\r
+        lo{"laotisk"}\r
+        lol{"mongo"}\r
+        lou{"louisianakreolsk"}\r
+        loz{"lozi"}\r
+        lrc{"nord-luri"}\r
+        lt{"litauisk"}\r
+        ltg{"latgallisk"}\r
+        lu{"luba-katanga"}\r
+        lua{"luba-lulua"}\r
+        lui{"luiseno"}\r
+        lun{"lunda"}\r
+        luo{"luo"}\r
+        lus{"mizo"}\r
+        luy{"luhya"}\r
+        lv{"latvisk"}\r
+        lzh{"klassisk kinesisk"}\r
+        lzz{"lazisk"}\r
+        mad{"maduresisk"}\r
+        maf{"mafa"}\r
+        mag{"magahi"}\r
+        mai{"maithili"}\r
+        mak{"makasar"}\r
+        man{"mandingo"}\r
+        mas{"masai"}\r
+        mde{"maba"}\r
+        mdf{"moksja"}\r
+        mdr{"mandar"}\r
+        men{"mende"}\r
+        mer{"meru"}\r
+        mfe{"mauritisk-kreolsk"}\r
+        mg{"gassisk"}\r
+        mga{"mellomirsk"}\r
+        mgh{"makhuwa-meetto"}\r
+        mgo{"meta’"}\r
+        mh{"marshallesisk"}\r
+        mi{"maori"}\r
+        mic{"micmac"}\r
+        min{"minangkabau"}\r
+        mk{"makedonsk"}\r
+        ml{"malayalam"}\r
+        mn{"mongolsk"}\r
+        mnc{"mandsju"}\r
+        mni{"manipuri"}\r
+        moh{"mohawk"}\r
+        mos{"mossi"}\r
+        mr{"marathi"}\r
+        mrj{"vestmarisk"}\r
+        ms{"malayisk"}\r
+        mt{"maltesisk"}\r
+        mua{"mundang"}\r
+        mul{"flere språk"}\r
+        mus{"creek"}\r
+        mwl{"mirandesisk"}\r
+        mwr{"marwari"}\r
+        mwv{"mentawai"}\r
+        my{"burmesisk"}\r
+        mye{"myene"}\r
+        myv{"erzia"}\r
+        mzn{"mazandarani"}\r
+        na{"nauru"}\r
+        nan{"minnan"}\r
+        nap{"napolitansk"}\r
+        naq{"nama"}\r
+        nb{"norsk bokmål"}\r
+        nd{"nord-ndebele"}\r
+        nds{"nedertysk"}\r
+        nds_NL{"nedersaksisk"}\r
+        ne{"nepali"}\r
+        new{"newari"}\r
+        ng{"ndonga"}\r
+        nia{"nias"}\r
+        niu{"niueansk"}\r
+        njo{"ao naga"}\r
+        nl{"nederlandsk"}\r
+        nl_BE{"flamsk"}\r
+        nmg{"kwasio"}\r
+        nn{"norsk nynorsk"}\r
+        nnh{"ngiemboon"}\r
+        no{"norsk"}\r
+        nog{"nogaisk"}\r
+        non{"gammelnorsk"}\r
+        nov{"novial"}\r
+        nqo{"nʼko"}\r
+        nr{"sør-ndebele"}\r
+        nso{"nord-sotho"}\r
+        nus{"nuer"}\r
+        nv{"navajo"}\r
+        nwc{"klassisk newari"}\r
+        ny{"nyanja"}\r
+        nym{"nyamwezi"}\r
+        nyn{"nyankole"}\r
+        nyo{"nyoro"}\r
+        nzi{"nzima"}\r
+        oc{"oksitansk"}\r
+        oj{"ojibwa"}\r
+        om{"oromo"}\r
+        or{"odia"}\r
+        os{"ossetisk"}\r
+        osa{"osage"}\r
+        ota{"ottomansk tyrkisk"}\r
+        pa{"panjabi"}\r
+        pag{"pangasinan"}\r
+        pal{"pahlavi"}\r
+        pam{"pampanga"}\r
+        pap{"papiamento"}\r
+        pau{"palauisk"}\r
+        pcd{"pikardisk"}\r
+        pcm{"nigeriansk pidginspråk"}\r
+        pdc{"pennsylvaniatysk"}\r
+        pdt{"plautdietsch"}\r
+        peo{"gammelpersisk"}\r
+        pfl{"palatintysk"}\r
+        phn{"fønikisk"}\r
+        pi{"pali"}\r
+        pl{"polsk"}\r
+        pms{"piemontesisk"}\r
+        pnt{"pontisk"}\r
+        pon{"ponapisk"}\r
+        prg{"prøyssisk"}\r
+        pro{"gammelprovençalsk"}\r
+        ps{"pashto"}\r
+        pt{"portugisisk"}\r
+        qu{"quechua"}\r
+        quc{"k’iche’"}\r
+        qug{"kichwa (Chimborazo-høylandet)"}\r
+        raj{"rajasthani"}\r
+        rap{"rapanui"}\r
+        rar{"rarotongansk"}\r
+        rgn{"romagnolsk"}\r
+        rif{"riff"}\r
+        rm{"retoromansk"}\r
+        rn{"rundi"}\r
+        ro{"rumensk"}\r
+        ro_MD{"moldovsk"}\r
+        rof{"rombo"}\r
+        rom{"romani"}\r
+        rtm{"rotumansk"}\r
+        ru{"russisk"}\r
+        rue{"rusinsk"}\r
+        rug{"roviana"}\r
+        rup{"aromansk"}\r
+        rw{"kinyarwanda"}\r
+        rwk{"rwa"}\r
+        sa{"sanskrit"}\r
+        sad{"sandawe"}\r
+        sah{"sakha"}\r
+        sam{"samaritansk arameisk"}\r
+        saq{"samburu"}\r
+        sas{"sasak"}\r
+        sat{"santali"}\r
+        saz{"saurashtra"}\r
+        sba{"ngambay"}\r
+        sbp{"sangu"}\r
+        sc{"sardisk"}\r
+        scn{"siciliansk"}\r
+        sco{"skotsk"}\r
+        sd{"sindhi"}\r
+        sdc{"sassaresisk sardisk"}\r
+        sdh{"sørkurdisk"}\r
+        se{"nordsamisk"}\r
+        see{"seneca"}\r
+        seh{"sena"}\r
+        sei{"seri"}\r
+        sel{"selkupisk"}\r
+        ses{"koyraboro senni"}\r
+        sg{"sango"}\r
+        sga{"gammelirsk"}\r
+        sgs{"samogitisk"}\r
+        sh{"serbokroatisk"}\r
+        shi{"tachelhit"}\r
+        shn{"shan"}\r
+        shu{"tsjadisk arabisk"}\r
+        si{"singalesisk"}\r
+        sid{"sidamo"}\r
+        sk{"slovakisk"}\r
+        sl{"slovensk"}\r
+        sli{"lavschlesisk"}\r
+        sly{"selayar"}\r
+        sm{"samoansk"}\r
+        sma{"sørsamisk"}\r
+        smj{"lulesamisk"}\r
+        smn{"enaresamisk"}\r
+        sms{"skoltesamisk"}\r
+        sn{"shona"}\r
+        snk{"soninke"}\r
+        so{"somali"}\r
+        sog{"sogdisk"}\r
+        sq{"albansk"}\r
+        sr{"serbisk"}\r
+        srn{"sranan"}\r
+        srr{"serer"}\r
+        ss{"swati"}\r
+        ssy{"saho"}\r
+        st{"sør-sotho"}\r
+        stq{"saterfrisisk"}\r
+        su{"sundanesisk"}\r
+        suk{"sukuma"}\r
+        sus{"susu"}\r
+        sux{"sumerisk"}\r
+        sv{"svensk"}\r
+        sw{"swahili"}\r
+        sw_CD{"kongolesisk swahili"}\r
+        swb{"komorisk"}\r
+        syc{"klassisk syrisk"}\r
+        syr{"syriakisk"}\r
+        szl{"schlesisk"}\r
+        ta{"tamil"}\r
+        tcy{"tulu"}\r
+        te{"telugu"}\r
+        tem{"temne"}\r
+        teo{"teso"}\r
+        ter{"tereno"}\r
+        tet{"tetum"}\r
+        tg{"tadsjikisk"}\r
+        th{"thai"}\r
+        ti{"tigrinja"}\r
+        tig{"tigré"}\r
+        tiv{"tiv"}\r
+        tk{"turkmensk"}\r
+        tkl{"tokelauisk"}\r
+        tkr{"tsakhursk"}\r
+        tl{"tagalog"}\r
+        tlh{"klingon"}\r
+        tli{"tlingit"}\r
+        tly{"talysj"}\r
+        tmh{"tamasjek"}\r
+        tn{"setswana"}\r
+        to{"tongansk"}\r
+        tog{"nyasa-tongansk"}\r
+        tpi{"tok pisin"}\r
+        tr{"tyrkisk"}\r
+        tru{"turoyo"}\r
+        trv{"taroko"}\r
+        ts{"tsonga"}\r
+        tsd{"tsakonisk"}\r
+        tsi{"tsimshian"}\r
+        tt{"tatarisk"}\r
+        ttt{"muslimsk tat"}\r
+        tum{"tumbuka"}\r
+        tvl{"tuvalsk"}\r
+        tw{"twi"}\r
+        twq{"tasawaq"}\r
+        ty{"tahitisk"}\r
+        tyv{"tuvinsk"}\r
+        tzm{"sentralmarokkansk tamazight"}\r
+        udm{"udmurtisk"}\r
+        ug{"uigurisk"}\r
+        uga{"ugaritisk"}\r
+        uk{"ukrainsk"}\r
+        umb{"umbundu"}\r
+        und{"ukjent språk"}\r
+        ur{"urdu"}\r
+        uz{"usbekisk"}\r
+        vai{"vai"}\r
+        ve{"venda"}\r
+        vec{"venetiansk"}\r
+        vep{"vepsisk"}\r
+        vi{"vietnamesisk"}\r
+        vls{"vestflamsk"}\r
+        vmf{"Main-frankisk"}\r
+        vo{"volapyk"}\r
+        vot{"votisk"}\r
+        vro{"sørestisk"}\r
+        vun{"vunjo"}\r
+        wa{"vallonsk"}\r
+        wae{"walsertysk"}\r
+        wal{"wolaytta"}\r
+        war{"waray-waray"}\r
+        was{"washo"}\r
+        wbp{"warlpiri"}\r
+        wo{"wolof"}\r
+        wuu{"wu"}\r
+        xal{"kalmukkisk"}\r
+        xh{"xhosa"}\r
+        xmf{"mingrelsk"}\r
+        xog{"soga"}\r
+        yao{"yao"}\r
+        yap{"yapesisk"}\r
+        yav{"yangben"}\r
+        ybb{"yemba"}\r
+        yi{"jiddisk"}\r
+        yo{"joruba"}\r
+        yrl{"nheengatu"}\r
+        yue{"kantonesisk"}\r
+        za{"zhuang"}\r
+        zap{"zapotekisk"}\r
+        zbl{"blissymboler"}\r
+        zea{"zeeuws"}\r
+        zen{"zenaga"}\r
+        zgh{"standard marrokansk tamazight"}\r
+        zh{"kinesisk"}\r
+        zh_Hans{"forenklet kinesisk"}\r
+        zh_Hant{"tradisjonell kinesisk"}\r
+        zu{"zulu"}\r
+        zun{"zuni"}\r
+        zxx{"uten språklig innhold"}\r
+        zza{"zazaisk"}\r
+    }\r
+    Languages%long{\r
+        zh_Hans{"forenklet mandarinkinesisk"}\r
+        zh_Hant{"tradisjonell mandarinkinesisk"}\r
+    }\r
+    Languages%menu{\r
+        ars{"arabisk (najd)"}\r
+        ckb{"kurdisk (sentral)"}\r
+        zh{"kinesisk, mandarin"}\r
+    }\r
+    Languages%short{\r
+        az{"azeri"}\r
+    }\r
+    Languages%variant{\r
+        ps{"pushto"}\r
+    }\r
+    Scripts{\r
+        Afak{"afaka"}\r
+        Aghb{"kaukasus-albansk"}\r
+        Ahom{"ahom"}\r
+        Arab{"arabisk"}\r
+        Aran{"nastaliq"}\r
+        Armi{"arameisk"}\r
+        Armn{"armensk"}\r
+        Avst{"avestisk"}\r
+        Bali{"balinesisk"}\r
+        Bamu{"bamum"}\r
+        Bass{"bassa vah"}\r
+        Batk{"batak"}\r
+        Beng{"bengalsk"}\r
+        Blis{"blissymbol"}\r
+        Bopo{"bopomofo"}\r
+        Brah{"brahmi"}\r
+        Brai{"punktskrift"}\r
+        Bugi{"buginesisk"}\r
+        Buhd{"buhid"}\r
+        Cakm{"chakma"}\r
+        Cans{"felles kanadiske urspråksstavelser"}\r
+        Cari{"karisk"}\r
+        Cham{"cham"}\r
+        Cher{"cherokee"}\r
+        Cirt{"cirth"}\r
+        Copt{"koptisk"}\r
+        Cprt{"kypriotisk"}\r
+        Cyrl{"kyrillisk"}\r
+        Cyrs{"kirkeslavisk kyrillisk"}\r
+        Deva{"devanagari"}\r
+        Dsrt{"deseret"}\r
+        Dupl{"duployan stenografi"}\r
+        Egyd{"egyptisk demotisk"}\r
+        Egyh{"egyptisk hieratisk"}\r
+        Egyp{"egyptiske hieroglyfer"}\r
+        Elba{"elbasisk"}\r
+        Ethi{"etiopisk"}\r
+        Geok{"georgisk khutsuri"}\r
+        Geor{"georgisk"}\r
+        Glag{"glagolittisk"}\r
+        Goth{"gotisk"}\r
+        Gran{"gammeltamilsk"}\r
+        Grek{"gresk"}\r
+        Gujr{"gujarati"}\r
+        Guru{"gurmukhi"}\r
+        Hanb{"han-kinesisk med bopomofo"}\r
+        Hang{"hangul"}\r
+        Hani{"han"}\r
+        Hano{"hanunoo"}\r
+        Hans{"forenklet"}\r
+        Hant{"tradisjonell"}\r
+        Hatr{"hatransk armensk"}\r
+        Hebr{"hebraisk"}\r
+        Hira{"hiragana"}\r
+        Hluw{"anatoliske hieroglyfer"}\r
+        Hmng{"pahawh hmong"}\r
+        Hrkt{"japanske stavelsesskrifter"}\r
+        Hung{"gammelungarsk"}\r
+        Inds{"indus"}\r
+        Ital{"gammelitalisk"}\r
+        Jamo{"jamo"}\r
+        Java{"javanesisk"}\r
+        Jpan{"japansk"}\r
+        Jurc{"jurchen"}\r
+        Kali{"kayah li"}\r
+        Kana{"katakana"}\r
+        Khar{"kharoshthi"}\r
+        Khmr{"khmer"}\r
+        Khoj{"khojki"}\r
+        Knda{"kannada"}\r
+        Kore{"koreansk"}\r
+        Kpel{"kpelle"}\r
+        Kthi{"kaithisk"}\r
+        Lana{"lanna"}\r
+        Laoo{"laotisk"}\r
+        Latf{"frakturlatinsk"}\r
+        Latg{"gælisk latinsk"}\r
+        Latn{"latinsk"}\r
+        Lepc{"lepcha"}\r
+        Limb{"limbu"}\r
+        Lina{"lineær A"}\r
+        Linb{"lineær B"}\r
+        Lisu{"fraser"}\r
+        Loma{"loma"}\r
+        Lyci{"lykisk"}\r
+        Lydi{"lydisk"}\r
+        Mahj{"mahajani"}\r
+        Mand{"mandaisk"}\r
+        Mani{"manikeisk"}\r
+        Maya{"maya-hieroglyfer"}\r
+        Mend{"mende"}\r
+        Merc{"meroitisk kursiv"}\r
+        Mero{"meroitisk"}\r
+        Mlym{"malayalam"}\r
+        Modi{"modi"}\r
+        Mong{"mongolsk"}\r
+        Moon{"moon"}\r
+        Mroo{"mro"}\r
+        Mtei{"meitei-mayek"}\r
+        Mult{"multani"}\r
+        Mymr{"burmesisk"}\r
+        Narb{"gammelnordarabisk"}\r
+        Nbat{"nabataeansk"}\r
+        Nkgb{"naxi geba"}\r
+        Nkoo{"n’ko"}\r
+        Nshu{"nüshu"}\r
+        Ogam{"ogham"}\r
+        Olck{"ol-chiki"}\r
+        Orkh{"orkhon"}\r
+        Orya{"odia"}\r
+        Osma{"osmanya"}\r
+        Palm{"palmyrensk"}\r
+        Pauc{"pau cin hau"}\r
+        Perm{"gammelpermisk"}\r
+        Phag{"phags-pa"}\r
+        Phli{"inskripsjonspahlavi"}\r
+        Phlp{"psalter pahlavi"}\r
+        Phlv{"pahlavi"}\r
+        Phnx{"fønikisk"}\r
+        Plrd{"pollard-fonetisk"}\r
+        Prti{"inskripsjonsparthisk"}\r
+        Qaag{"zawgyi"}\r
+        Rjng{"rejang"}\r
+        Roro{"rongorongo"}\r
+        Runr{"runer"}\r
+        Samr{"samaritansk"}\r
+        Sara{"sarati"}\r
+        Sarb{"gammelsørarabisk"}\r
+        Saur{"saurashtra"}\r
+        Sgnw{"tegnskrift"}\r
+        Shaw{"shavisk"}\r
+        Shrd{"sharada"}\r
+        Sidd{"siddham"}\r
+        Sind{"khudawadi"}\r
+        Sinh{"singalesisk"}\r
+        Sora{"sora sompeng"}\r
+        Sund{"sundanesisk"}\r
+        Sylo{"syloti nagri"}\r
+        Syrc{"syrisk"}\r
+        Syre{"estrangelosyriakisk"}\r
+        Syrj{"vestlig syriakisk"}\r
+        Syrn{"østlig syriakisk"}\r
+        Tagb{"tagbanwa"}\r
+        Takr{"takri"}\r
+        Tale{"tai le"}\r
+        Talu{"ny tai lue"}\r
+        Taml{"tamilsk"}\r
+        Tang{"tangut"}\r
+        Tavt{"tai viet"}\r
+        Telu{"telugu"}\r
+        Teng{"tengwar"}\r
+        Tfng{"tifinagh"}\r
+        Tglg{"tagalog"}\r
+        Thaa{"taana"}\r
+        Thai{"thai"}\r
+        Tibt{"tibetansk"}\r
+        Tirh{"tirhuta"}\r
+        Ugar{"ugaritisk"}\r
+        Vaii{"vai"}\r
+        Visp{"synlig tale"}\r
+        Wara{"varang kshiti"}\r
+        Wole{"woleai"}\r
+        Xpeo{"gammelpersisk"}\r
+        Xsux{"sumersk-akkadisk kileskrift"}\r
+        Yiii{"yi"}\r
+        Zinh{"nedarvet"}\r
+        Zmth{"matematisk notasjon"}\r
+        Zsye{"emoji"}\r
+        Zsym{"symboler"}\r
+        Zxxx{"språk uten skrift"}\r
+        Zyyy{"felles"}\r
+        Zzzz{"ukjent skrift"}\r
+    }\r
+    Scripts%stand-alone{\r
+        Hans{"forenklet han"}\r
+        Hant{"tradisjonell han"}\r
+    }\r
+    Scripts%variant{\r
+        Arab{"persisk-arabisk"}\r
+    }\r
+    Types{\r
+        calendar{\r
+            buddhist{"buddhistisk kalender"}\r
+            chinese{"kinesisk kalender"}\r
+            coptic{"koptisk kalender"}\r
+            dangi{"dangisk kalender"}\r
+            ethiopic{"etiopisk kalender"}\r
+            ethiopic-amete-alem{"etiopisk amete-alem-kalender"}\r
+            gregorian{"gregoriansk kalender"}\r
+            hebrew{"hebraisk kalender"}\r
+            indian{"indisk nasjonalkalender"}\r
+            islamic{"islamsk kalender"}\r
+            islamic-civil{"islamsk kalender (tabell, sivil)"}\r
+            islamic-rgsa{"islamsk kalender (Saudi-Arabia, observasjon)"}\r
+            islamic-tbla{"islamsk kalender (tabell, astronomisk)"}\r
+            islamic-umalqura{"islamsk kalender (Umm al-Qura)"}\r
+            iso8601{"ISO 8601-kalender"}\r
+            japanese{"japansk kalender"}\r
+            persian{"persisk kalender"}\r
+            roc{"minguo-kalender"}\r
+        }\r
+        cf{\r
+            account{"valutaformat for regnskapsføring"}\r
+            standard{"standard valutaformat"}\r
+        }\r
+        colAlternate{\r
+            non-ignorable{"sortér symboler"}\r
+            shifted{"Ignorer symboler under sortering"}\r
+        }\r
+        colBackwards{\r
+            no{"sortér aksenttegn normalt"}\r
+            yes{"sortér aksenttegn i motsatt rekkefølge"}\r
+        }\r
+        colCaseFirst{\r
+            lower{"Sortér små bokstaver først"}\r
+            no{"Sortér store og små bokstaver i vanlig rekkefølge"}\r
+            upper{"Sortér store bokstaver først"}\r
+        }\r
+        colCaseLevel{\r
+            no{"Sortér uavhengig av store og små bokstaver."}\r
+            yes{"Sortér med skille mellom små og store bokstaver"}\r
+        }\r
+        colNormalization{\r
+            no{"Sortér uten normalisering"}\r
+            yes{"Sortér Unicode normalisert"}\r
+        }\r
+        colNumeric{\r
+            no{"Sortér sifre individuelt"}\r
+            yes{"Sortér sifre numerisk"}\r
+        }\r
+        colStrength{\r
+            identical{"Sortér alle"}\r
+            primary{"Sortér bare basisbokstaver"}\r
+            quaternary{"Sortér aksenttegn / små og store bokstaver / bredde / kana"}\r
+            secondary{"Sortér aksenttegn"}\r
+            tertiary{"Sortér aksenttegn / små og store bokstaver / bredde"}\r
+        }\r
+        collation{\r
+            big5han{"tradisjonell kinesisk sortering - Big 5"}\r
+            compat{"forrige sorteringsrekkefølge (for kompatibilitet)"}\r
+            dictionary{"ordlistesortering"}\r
+            ducet{"standard Unicode-sorteringsrekkefølge"}\r
+            emoji{"emoji-sorteringsrekkefølge"}\r
+            eor{"sorteringsrekkefølge for flerspråklige europeiske dokumenter"}\r
+            gb2312han{"forenklet kinesisk sortering - GB2312"}\r
+            phonebook{"telefonkatalogsortering"}\r
+            phonetic{"Fonetisk sorteringsrekkefølge"}\r
+            pinyin{"pinyinsortering"}\r
+            reformed{"reformert sortering"}\r
+            search{"generelt søk"}\r
+            searchjl{"Søk etter første konsonant i hangul"}\r
+            standard{"standard sorteringsrekkefølge"}\r
+            stroke{"streksortering"}\r
+            traditional{"tradisjonell sortering"}\r
+            unihan{"radikal-strek-sortering"}\r
+            zhuyin{"zhuyin-sortering"}\r
+        }\r
+        d0{\r
+            fwidth{"full bredde"}\r
+            hwidth{"halv bredde"}\r
+            npinyin{"Numerisk"}\r
+        }\r
+        hc{\r
+            h11{"12-timers system (0–11)"}\r
+            h12{"12-timers system (1–12)"}\r
+            h23{"24-timers system (0–23)"}\r
+            h24{"24-timers system (1–24)"}\r
+        }\r
+        lb{\r
+            loose{"løs linjeskiftstil"}\r
+            normal{"normal linjeskiftstil"}\r
+            strict{"streng linjeskiftstil"}\r
+        }\r
+        m0{\r
+            bgn{"USBGN-translitterasjon"}\r
+            ungegn{"UNGEGN-translitterasjon"}\r
+        }\r
+        ms{\r
+            metric{"metrisk system"}\r
+            uksystem{"britisk målesystem"}\r
+            ussystem{"amerikansk målesystem"}\r
+        }\r
+        numbers{\r
+            arab{"arabisk-indiske sifre"}\r
+            arabext{"utvidede arabisk-indiske sifre"}\r
+            armn{"armenske tall"}\r
+            armnlow{"små armenske tall"}\r
+            bali{"baliske tall"}\r
+            beng{"bengalske sifre"}\r
+            brah{"brahmiske tall"}\r
+            cakm{"chakma-tall"}\r
+            cham{"cham-tall"}\r
+            deva{"devanagari-sifre"}\r
+            ethi{"etiopiske tall"}\r
+            finance{"Finansielle tall"}\r
+            fullwide{"sifre med full bredde"}\r
+            geor{"georgiske tall"}\r
+            grek{"greske tall"}\r
+            greklow{"små greske tall"}\r
+            gujr{"gujarati-sifre"}\r
+            guru{"gurmukhi-sifre"}\r
+            hanidec{"kinesiske desimaltall"}\r
+            hans{"forenklet kinesisk-tall"}\r
+            hansfin{"forenklet kinesisk-finanstall"}\r
+            hant{"tradisjonell kinesisk-tall"}\r
+            hantfin{"tradisjonell kinesisk-finanstall"}\r
+            hebr{"hebraiske tall"}\r
+            java{"java-tall"}\r
+            jpan{"japanske tall"}\r
+            jpanfin{"japanske finanstall"}\r
+            kali{"kayah li-tall"}\r
+            khmr{"khmer-sifre"}\r
+            knda{"kannada-sifre"}\r
+            lana{"thai tham hora-tall"}\r
+            lanatham{"tai tham tham-tall"}\r
+            laoo{"laotiske sifre"}\r
+            latn{"vestlige sifre"}\r
+            lepc{"lepecha-tall"}\r
+            limb{"limbu-tall"}\r
+            mlym{"malayalam-sifre"}\r
+            mong{"mongolske tall"}\r
+            mtei{"meetei mayek-tall"}\r
+            mymr{"burmesiske sifre"}\r
+            mymrshan{"myanmar shan-tall"}\r
+            native{"Språkspesifikke sifre"}\r
+            nkoo{"n’ko-tall"}\r
+            olck{"ol chiki-tall"}\r
+            orya{"odia-sifre"}\r
+            osma{"osmanya-tall"}\r
+            roman{"romertall"}\r
+            romanlow{"små romertall"}\r
+            saur{"sarushatra-tall"}\r
+            shrd{"sharada-tall"}\r
+            sora{"sora sompeng-tall"}\r
+            sund{"sundanese-tall"}\r
+            takr{"takri-tall"}\r
+            talu{"ny tai lue-tall"}\r
+            taml{"tamilske tall"}\r
+            tamldec{"tamilske sifre"}\r
+            telu{"telugu-sifre"}\r
+            thai{"thailandske sifre"}\r
+            tibt{"tibetanske sifre"}\r
+            traditional{"Tradisjonelle tall"}\r
+            vaii{"vai-sifre"}\r
+        }\r
+    }\r
+    Variants{\r
+        1606NICT{"nyere mellomfransk til 1606"}\r
+        1694ACAD{"eldre nyfransk"}\r
+        1901{"tradisjonell tysk ortografi"}\r
+        1959ACAD{"akademisk"}\r
+        1994{"standardisert resisk ortografi"}\r
+        1996{"tysk ortografi fra 1996"}\r
+        ALALC97{"ALA-LC-romanisering, 1997-utgaven"}\r
+        ALUKU{"Aluku-dialekt"}\r
+        AREVELA{"øst-armensk"}\r
+        AREVMDA{"vest-armensk"}\r
+        BAKU1926{"samlet tyrkisk-latinsk alfabet"}\r
+        BALANKA{"balankadialekten av anii"}\r
+        BARLA{"barlaventa-dialektgruppen av kappverdiansk"}\r
+        BAUDDHA{"bauddha"}\r
+        BISCAYAN{"biscayan"}\r
+        BISKE{"san giorgio- og biladialekt"}\r
+        BOHORIC{"bohorisk alfabet"}\r
+        BOONT{"boontling"}\r
+        DAJNKO{"dajnkoalfabet"}\r
+        EKAVSK{"serbisk med ekavisk uttale"}\r
+        EMODENG{"tidlig moderne engelsk"}\r
+        FONIPA{"det internasjonale fonetiske alfabet (IPA)"}\r
+        FONUPA{"det uraliske fonetiske alfabet (UPA)"}\r
+        FONXSAMP{"fonxsamp"}\r
+        HEPBURN{"Hepburn-romanisering"}\r
+        HOGNORSK{"høgnorsk"}\r
+        IJEKAVSK{"serbisk med ijekavisk uttale"}\r
+        ITIHASA{"itihasa"}\r
+        JAUER{"jauer"}\r
+        JYUTPING{"jyutping"}\r
+        KKCOR{"felles ortografi"}\r
+        KOCIEWIE{"kociewie"}\r
+        KSCOR{"standard ortografi"}\r
+        LAUKIKA{"laukika"}\r
+        LIPAW{"resia med Lipovaz-dialekt"}\r
+        METELKO{"Metelko-alfabet"}\r
+        MONOTON{"monotonisk rettskriving"}\r
+        NDYUKA{"ndyuka-dialekt"}\r
+        NEDIS{"natisonedialekt"}\r
+        NJIVA{"gniva- og njivadialekt"}\r
+        NULIK{"moderne volapük"}\r
+        OSOJS{"oseacco- og osojanedialekt"}\r
+        PAMAKA{"Pamaka-dialekt"}\r
+        PINYIN{"pinyin"}\r
+        POLYTON{"polytonisk rettskriving"}\r
+        POSIX{"dataspråk"}\r
+        REVISED{"revidert ortografi"}\r
+        RIGIK{"klassisk volapük"}\r
+        ROZAJ{"resisk dialekt"}\r
+        SAAHO{"saho"}\r
+        SCOTLAND{"skotsk standard engelsk"}\r
+        SCOUSE{"scouse dialekt"}\r
+        SOLBA{"stolvizza- og solbicadialekt"}\r
+        SOTAV{"sotavento-dialektgruppen av kappverdiansk"}\r
+        SURMIRAN{"surmiransk"}\r
+        SURSILV{"sursilvan"}\r
+        SUTSILV{"sutsilvan"}\r
+        TARASK{"taraskievica-ortografi"}\r
+        UCCOR{"harmonisert ortografi"}\r
+        UCRCOR{"harmonisert revidert ortografi"}\r
+        ULSTER{"ulster"}\r
+        UNIFON{"Unifon fonetisk alfabet"}\r
+        VAIDIKA{"vaidika"}\r
+        VALENCIA{"valensiansk"}\r
+        VALLADER{"vallader"}\r
+        WADEGILE{"Wade-Giles-romanisering"}\r
+    }\r
+    characterLabelPattern{\r
+        all{"{0} – alt"}\r
+        category-list{"{0}: {1}"}\r
+        compatibility{"{0} – kompatibilitet"}\r
+        enclosed{"{0} – omsluttet"}\r
+        extended{"{0} – utvidet"}\r
+        historic{"{0} – historisk"}\r
+        miscellaneous{"{0} – diverse"}\r
+        other{"{0} – annet"}\r
+        scripts{"skriftsystemer – {0}"}\r
+        strokes{\r
+            one{"{0} strek"}\r
+            other{"{0} streker"}\r
+        }\r
+        subscript{"senket {0}"}\r
+        superscript{"hevet {0}"}\r
+    }\r
+    codePatterns{\r
+        language{"Språk: {0}"}\r
+        script{"Skrift: {0}"}\r
+        territory{"Område: {0}"}\r
+    }\r
+    localeDisplayPattern{\r
+        keyTypePattern{"{0}: {1}"}\r
+        pattern{"{0} ({1})"}\r
+        separator{"{0}, {1}"}\r
+    }\r
 }\r
index 40a8b61..312565f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no_NO{\r
-    "%%ALIAS"{"nb_NO"}\r
+    "%%ALIAS"{"no"}\r
 }\r
index b272fcc..06407bf 100644 (file)
@@ -387,7 +387,6 @@ or{
         ro_MD{"ମୋଲଡୋଭିଆନ୍"}\r
         rof{"ରୋମ୍ବୋ"}\r
         rom{"ରୋମାନି"}\r
-        root{"ରୋଟ୍"}\r
         ru{"ରୁଷିୟ"}\r
         rup{"ଆରୋମାନିଆନ୍"}\r
         rw{"କିନ୍ୟାରୱାଣ୍ଡା"}\r
index a430c65..273dee6 100644 (file)
@@ -317,7 +317,6 @@ pa{
         ro{"ਰੋਮਾਨੀਆਈ"}\r
         ro_MD{"ਮੋਲਡਾਵੀਆਈ"}\r
         rof{"ਰੋਮਬੋ"}\r
-        root{"ਰੂਟ"}\r
         ru{"ਰੂਸੀ"}\r
         rup{"ਅਰੋਮੀਨੀਆਈ"}\r
         rw{"ਕਿਨਿਆਰਵਾਂਡਾ"}\r
index 8fa3da9..e0e6a0e 100644 (file)
@@ -479,7 +479,6 @@ pl{
         ro_MD{"mołdawski"}\r
         rof{"rombo"}\r
         rom{"cygański"}\r
-        root{"język rdzenny"}\r
         rtm{"rotumański"}\r
         ru{"rosyjski"}\r
         rue{"rusiński"}\r
index 15de4a6..17e2007 100644 (file)
@@ -302,7 +302,6 @@ ps{
         ro{"رومانیایی"}\r
         ro_MD{"مولداویایی"}\r
         rof{"رومبو"}\r
-        root{"روټ"}\r
         ru{"روسي"}\r
         rup{"اروماني"}\r
         rw{"کینیارونډا"}\r
index 4d8fd8b..b6eac2a 100644 (file)
@@ -409,7 +409,6 @@ pt{
         ro_MD{"moldávio"}\r
         rof{"rombo"}\r
         rom{"romani"}\r
-        root{"raiz"}\r
         ru{"russo"}\r
         rup{"aromeno"}\r
         rw{"quiniaruanda"}\r
index 828be48..b2c1921 100644 (file)
@@ -409,7 +409,6 @@ ro{
         ro{"română"}\r
         rof{"rombo"}\r
         rom{"romani"}\r
-        root{"rădăcină"}\r
         ru{"rusă"}\r
         rup{"aromână"}\r
         rw{"kinyarwanda"}\r
index a7a38ce..1d1d890 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 root{\r
-    Version{"38.1"}\r
+    Version{"39"}\r
     characterLabelPattern{\r
         all{"{0} — all"}\r
         category-list{"{0}: {1}"}\r
index a880de6..6d197a9 100644 (file)
@@ -420,7 +420,6 @@ ru{
         ro_MD{"молдавский"}\r
         rof{"ромбо"}\r
         rom{"цыганский"}\r
-        root{"праязык"}\r
         ru{"русский"}\r
         rup{"арумынский"}\r
         rw{"киньяруанда"}\r
index 3edb478..1caff7d 100644 (file)
@@ -302,7 +302,6 @@ sd{
         ro{"روماني"}\r
         ro_MD{"مالديوي"}\r
         rof{"رومبو"}\r
-        root{"روٽ"}\r
         ru{"روسي"}\r
         rup{"ارومينين"}\r
         rw{"ڪنيار وانڊا"}\r
index 2347cc3..d8072bc 100644 (file)
@@ -311,7 +311,6 @@ si{
         ro{"රොමේනියානු"}\r
         ro_MD{"මොල්ඩවිආනු"}\r
         rof{"රෝම්බෝ"}\r
-        root{"රූට්"}\r
         ru{"රුසියානු"}\r
         rup{"ඇරොමානියානු"}\r
         rw{"කින්යර්වන්ඩා"}\r
index 7a466ab..2a5f7f7 100644 (file)
@@ -416,7 +416,6 @@ sk{
         ro_MD{"moldavčina"}\r
         rof{"rombo"}\r
         rom{"rómčina"}\r
-        root{"koreň"}\r
         ru{"ruština"}\r
         rup{"arumunčina"}\r
         rw{"rwandčina"}\r
index 0f515a8..d3819e3 100644 (file)
@@ -402,7 +402,6 @@ sl{
         ro_MD{"moldavščina"}\r
         rof{"rombo"}\r
         rom{"romščina"}\r
-        root{"rootščina"}\r
         ru{"ruščina"}\r
         rup{"aromunščina"}\r
         rw{"ruandščina"}\r
index 9956810..582a430 100644 (file)
@@ -293,7 +293,6 @@ smn{
         ro{"romaniakielâ"}\r
         rof{"rombo"}\r
         rom{"roomaankielâ"}\r
-        root{"ruotâs"}\r
         ru{"ruošâkielâ"}\r
         rup{"aromaniakielâ"}\r
         rw{"ruandakielâ"}\r
index e9de184..7828712 100644 (file)
@@ -192,7 +192,6 @@ so{
         rn{"Rundhi"}\r
         ro{"Romanka"}\r
         rof{"Rombo"}\r
-        root{"Xidid"}\r
         ru{"Ruush"}\r
         rw{"Ruwaandha"}\r
         rwk{"Raawa"}\r
index e0ce98f..3fcdff1 100644 (file)
@@ -308,7 +308,6 @@ sq{
         ro{"rumanisht"}\r
         ro_MD{"moldavisht"}\r
         rof{"romboisht"}\r
-        root{"rutisht"}\r
         ru{"rusisht"}\r
         rup{"vllahisht"}\r
         rw{"kiniaruandisht"}\r
index fc627a0..1735496 100644 (file)
@@ -397,7 +397,6 @@ sr{
         ro_MD{"молдавски"}\r
         rof{"ромбо"}\r
         rom{"ромски"}\r
-        root{"рут"}\r
         ru{"руски"}\r
         rup{"цинцарски"}\r
         rw{"кињаруанда"}\r
index 844cc1e..cb170db 100644 (file)
@@ -398,7 +398,6 @@ sr_Latn{
         ro_MD{"moldavski"}\r
         rof{"rombo"}\r
         rom{"romski"}\r
-        root{"rut"}\r
         ru{"ruski"}\r
         rup{"cincarski"}\r
         rw{"kinjaruanda"}\r
index 5cb7f00..d9cb224 100644 (file)
@@ -479,7 +479,6 @@ sv{
         ro_MD{"moldaviska"}\r
         rof{"rombo"}\r
         rom{"romani"}\r
-        root{"rot"}\r
         rtm{"rotumänska"}\r
         ru{"ryska"}\r
         rue{"rusyn"}\r
index 8831a69..aa0d45d 100644 (file)
@@ -343,7 +343,6 @@ sw{
         ro{"Kiromania"}\r
         ro_MD{"Kimoldova cha Romania"}\r
         rof{"Kirombo"}\r
-        root{"Kiroot"}\r
         ru{"Kirusi"}\r
         rup{"Kiaromania"}\r
         rw{"Kinyarwanda"}\r
index dde24ab..9913436 100644 (file)
@@ -412,7 +412,6 @@ ta{
         ro_MD{"மோல்டாவியன்"}\r
         rof{"ரோம்போ"}\r
         rom{"ரோமானி"}\r
-        root{"ரூட்"}\r
         ru{"ரஷியன்"}\r
         rup{"அரோமானியன்"}\r
         rw{"கின்யாருவான்டா"}\r
index 1f8296c..a511f59 100644 (file)
@@ -410,7 +410,6 @@ te{
         ro_MD{"మొల్డావియన్"}\r
         rof{"రోంబో"}\r
         rom{"రోమానీ"}\r
-        root{"రూట్"}\r
         ru{"రష్యన్"}\r
         rup{"ఆరోమేనియన్"}\r
         rw{"కిన్యర్వాండా"}\r
index d2a5bf1..1c7250c 100644 (file)
@@ -479,7 +479,6 @@ th{
         ro_MD{"มอลโดวา"}\r
         rof{"รอมโบ"}\r
         rom{"โรมานี"}\r
-        root{"รูท"}\r
         rtm{"โรทูมัน"}\r
         ru{"รัสเซีย"}\r
         rue{"รูซิน"}\r
index 68a9c80..a40ade2 100644 (file)
@@ -294,7 +294,6 @@ tk{
         ro{"rumyn dili"}\r
         ro_MD{"moldaw dili"}\r
         rof{"rombo dili"}\r
-        root{"kök"}\r
         ru{"rus dili"}\r
         rup{"arumyn dili"}\r
         rw{"kinýaruanda dili"}\r
index 6ba352c..46d3eb5 100644 (file)
@@ -466,7 +466,6 @@ to{
         ro_MD{"lea fakamolitāvia"}\r
         rof{"lea fakalomipō"}\r
         rom{"lea fakalomani"}\r
-        root{"lea fakaʻilonga-tefito"}\r
         rtm{"lea fakalotuma"}\r
         ru{"lea fakalūsia"}\r
         rue{"lea fakalusini"}\r
index 85c1918..d880a0a 100644 (file)
@@ -480,7 +480,6 @@ tr{
         ro_MD{"Moldovaca"}\r
         rof{"Rombo"}\r
         rom{"Romanca"}\r
-        root{"Köken"}\r
         rtm{"Rotuman"}\r
         ru{"Rusça"}\r
         rue{"Rusince"}\r
index 2d3988f..a443e0e 100644 (file)
@@ -383,7 +383,6 @@ ug{
         ro{"رومىنچە"}\r
         rof{"رومبوچە"}\r
         rom{"سىگانچە"}\r
-        root{"غول تىل"}\r
         ru{"رۇسچە"}\r
         rup{"ئارومانچە"}\r
         rw{"كېنىيەرىۋانداچە"}\r
index 98ca7dd..80ff827 100644 (file)
@@ -433,7 +433,6 @@ uk{
         ro_MD{"молдавська"}\r
         rof{"ромбо"}\r
         rom{"циганська"}\r
-        root{"коренева"}\r
         ru{"російська"}\r
         rup{"арумунська"}\r
         rw{"кіньяруанда"}\r
index 6d070ab..1722033 100644 (file)
@@ -323,7 +323,6 @@ ur{
         ro{"رومینین"}\r
         ro_MD{"مالدووا"}\r
         rof{"رومبو"}\r
-        root{"روٹ"}\r
         ru{"روسی"}\r
         rup{"ارومانی"}\r
         rw{"کینیاروانڈا"}\r
index fc1e6e6..4c268c4 100644 (file)
@@ -307,7 +307,6 @@ uz{
         ro{"rumincha"}\r
         ro_MD{"moldovan"}\r
         rof{"rombo"}\r
-        root{"tub aholi tili"}\r
         ru{"ruscha"}\r
         rup{"arumin"}\r
         rw{"kinyaruanda"}\r
index f309eb4..0f7e5a3 100644 (file)
@@ -442,7 +442,6 @@ vi{
         ro_MD{"Tiếng Moldova"}\r
         rof{"Tiếng Rombo"}\r
         rom{"Tiếng Romany"}\r
-        root{"Tiếng Root"}\r
         ru{"Tiếng Nga"}\r
         rup{"Tiếng Aromania"}\r
         rw{"Tiếng Kinyarwanda"}\r
index 67a1dcd..7205942 100644 (file)
@@ -63,10 +63,7 @@ yo{
         en_GB{"Èdè òyìnbó Gẹ̀ẹ́sì"}\r
         eo{"Èdè Esperanto"}\r
         es{"Èdè Sípáníìṣì"}\r
-        es_419{\r
-            "Èdè Sípáníìṣì (orílẹ̀-èdè Látìn-Amẹ́ríkà) ( Èdè Sípáníìshì (Látìn-Amẹ́rí"\r
-            "kà)"\r
-        }\r
+        es_419{"Èdè Sípáníìṣì (orílẹ̀-èdè Látìn-Amẹ́ríkà)"}\r
         es_ES{"Èdè Sípáníìṣì (orílẹ̀-èdè Yúróòpù)"}\r
         es_MX{"Èdè Sípáníìṣì (orílẹ̀-èdè Mẹ́síkò)"}\r
         et{"Èdè Estonia"}\r
index fab2331..9f29c93 100644 (file)
@@ -26,10 +26,7 @@ yo_BJ{
         en_CA{"Èdè Gɛ̀ɛ́sì (Orílɛ̀-èdè Kánádà)"}\r
         en_GB{"Èdè òyìnbó Gɛ̀ɛ́sì"}\r
         es{"Èdè Sípáníìshì"}\r
-        es_419{\r
-            "Èdè Sípáníìshì (orílɛ̀-èdè Látìn-Amɛ́ríkà) ( Èdè Sípáníìshì (Látìn-Amɛ́r"\r
-            "íkà)"\r
-        }\r
+        es_419{"Èdè Sípáníìshì (orílɛ̀-èdè Látìn-Amɛ́ríkà)"}\r
         es_ES{"Èdè Sípáníìshì (orílɛ̀-èdè Yúróòpù)"}\r
         es_MX{"Èdè Sípáníìshì (orílɛ̀-èdè Mɛ́síkò)"}\r
         fr_CA{"Èdè Faransé (orílɛ̀-èdè Kánádà)"}\r
index bcef591..4a0884f 100644 (file)
@@ -465,7 +465,6 @@ yue{
         ro_MD{"摩爾多瓦文"}\r
         rof{"蘭博文"}\r
         rom{"吉普賽文"}\r
-        root{"根語言"}\r
         rtm{"羅圖馬島文"}\r
         ru{"俄文"}\r
         rue{"盧森尼亞文"}\r
index de077b8..dcac363 100644 (file)
@@ -466,7 +466,6 @@ yue_Hans{
         ro_MD{"摩尔多瓦文"}\r
         rof{"兰博文"}\r
         rom{"吉普赛文"}\r
-        root{"根语言"}\r
         rtm{"罗图马岛文"}\r
         ru{"俄文"}\r
         rue{"卢森尼亚文"}\r
index 60f55ba..139110f 100644 (file)
@@ -421,7 +421,6 @@ zh{
         ro_MD{"摩尔多瓦语"}\r
         rof{"兰博语"}\r
         rom{"吉普赛语"}\r
-        root{"根语言"}\r
         ru{"俄语"}\r
         rup{"阿罗马尼亚语"}\r
         rw{"卢旺达语"}\r
index d353eb7..b8a0f03 100644 (file)
@@ -467,7 +467,6 @@ zh_Hant{
         ro_MD{"摩爾多瓦文"}\r
         rof{"蘭博文"}\r
         rom{"吉普賽文"}\r
-        root{"根語言"}\r
         rtm{"羅圖馬島文"}\r
         ru{"俄文"}\r
         rue{"盧森尼亞文"}\r
index 5429410..898bf1c 100644 (file)
@@ -327,7 +327,6 @@ zu{
         ro{"isi-Romanian"}\r
         ro_MD{"isi-Moldavian"}\r
         rof{"isi-Rombo"}\r
-        root{"isi-Root"}\r
         ru{"isi-Russian"}\r
         rup{"isi-Aromanian"}\r
         rw{"isi-Kinyarwanda"}\r
index 05851c8..edb72ea 100644 (file)
@@ -3,7 +3,7 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 \r
 {\r
-    "cldrVersion": "38.1",\r
+    "cldrVersion": "39",\r
     "aliases": {\r
         "ars": "ar_SA",\r
         "az_AZ": "az_Latn_AZ",\r
@@ -21,8 +21,7 @@
         "ks_IN": "ks_Arab_IN",\r
         "mni_IN": "mni_Beng_IN",\r
         "mo": "ro",\r
-        "no": "nb",\r
-        "no_NO": "nb_NO",\r
+        "no_NO": "no",\r
         "no_NO_NY": "nn_NO",\r
         "pa_IN": "pa_Guru_IN",\r
         "pa_PK": "pa_Arab_PK",\r
         "es_UY": "es_419",\r
         "es_VE": "es_419",\r
         "ff_Adlm": "root",\r
+        "nb": "no",\r
+        "nn": "no",\r
         "pa_Arab": "root",\r
         "pt_AO": "pt_PT",\r
         "pt_CH": "pt_PT",\r
index 07d7d51..5929853 100644 (file)
@@ -150,10 +150,10 @@ be{
                         other{"000 млн ¤"}\r
                     }\r
                     1000000000{\r
-                        few{"0 млрд ¤ "}\r
-                        many{"0 млрд ¤ "}\r
-                        one{"0 млрд ¤ "}\r
-                        other{"0 млрд ¤ "}\r
+                        few{"0 млрд ¤"}\r
+                        many{"0 млрд ¤"}\r
+                        one{"0 млрд ¤"}\r
+                        other{"0 млрд ¤"}\r
                     }\r
                     10000000000{\r
                         few{"00 млрд ¤"}\r
index 92a0dca..a2245e9 100644 (file)
@@ -202,6 +202,10 @@ da{
             }\r
         }\r
         minimalPairs{\r
+            gender{\r
+                common{"En {0}"}\r
+                neuter{"Et {0}"}\r
+            }\r
             ordinal{\r
                 other{"Tag den {0}. vej til højre."}\r
             }\r
index ad4fe4a..595d574 100644 (file)
@@ -209,6 +209,17 @@ de{
             }\r
         }\r
         minimalPairs{\r
+            case{\r
+                accusative{"… für {0} …"}\r
+                dative{"… mit {0} …"}\r
+                genitive{"Anstatt {0} …"}\r
+                nominative{"{0} kostet (kosten) € 3,50."}\r
+            }\r
+            gender{\r
+                feminine{"Die {0} ist …"}\r
+                masculine{"Der {0} ist …"}\r
+                neuter{"Das {0} ist …"}\r
+            }\r
             ordinal{\r
                 other{"{0}. Abzweigung nach rechts nehmen"}\r
             }\r
index 87bdf03..9c197f8 100644 (file)
@@ -88,7 +88,7 @@ dz{
         }\r
         minimalPairs{\r
             plural{\r
-                other{"ཉིནམ་ {0} "}\r
+                other{"ཉིནམ་ {0}"}\r
             }\r
         }\r
         native{"tibt"}\r
index 0528da6..5c3961a 100644 (file)
@@ -64,6 +64,55 @@ en_IN{
                         other{"¤000LCr"}\r
                     }\r
                 }\r
+                decimalFormat{\r
+                    1000{\r
+                        one{"0T"}\r
+                        other{"0T"}\r
+                    }\r
+                    10000{\r
+                        one{"00T"}\r
+                        other{"00T"}\r
+                    }\r
+                    100000{\r
+                        one{"0L"}\r
+                        other{"0L"}\r
+                    }\r
+                    1000000{\r
+                        one{"00L"}\r
+                        other{"00L"}\r
+                    }\r
+                    10000000{\r
+                        one{"0Cr"}\r
+                        other{"0Cr"}\r
+                    }\r
+                    100000000{\r
+                        one{"00Cr"}\r
+                        other{"00Cr"}\r
+                    }\r
+                    1000000000{\r
+                        one{"000Cr"}\r
+                        other{"000Cr"}\r
+                    }\r
+                    10000000000{\r
+                        one{"0TCr"}\r
+                        other{"0TCr"}\r
+                    }\r
+                    100000000000{\r
+                        one{"00TCr"}\r
+                        other{"00TCr"}\r
+                    }\r
+                    1000000000000{\r
+                        one{"0LCr"}\r
+                        other{"0LCr"}\r
+                    }\r
+                    10000000000000{\r
+                        one{"00LCr"}\r
+                        other{"00LCr"}\r
+                    }\r
+                    100000000000000{\r
+                        one{"000LCr"}\r
+                    }\r
+                }\r
             }\r
         }\r
     }\r
index 418d77a..967f1cb 100644 (file)
@@ -205,6 +205,10 @@ es{
             }\r
         }\r
         minimalPairs{\r
+            gender{\r
+                feminine{"La {0} es..."}\r
+                masculine{"El {0} es…"}\r
+            }\r
             ordinal{\r
                 other{"Toma la {0}.ª a la derecha."}\r
             }\r
index dd028eb..fafbe6e 100644 (file)
@@ -96,6 +96,7 @@ es_419{
                 group{","}\r
             }\r
         }\r
+        minimumGroupingDigits{"1"}\r
     }\r
     calendar{\r
         coptic{\r
index 54ea472..c778b9c 100644 (file)
@@ -36,12 +36,12 @@ es_GT{
                         other{"¤0000M"}\r
                     }\r
                     10000000000{\r
-                        one{"¤00MRD "}\r
-                        other{"¤00MRD "}\r
+                        one{"¤00MRD"}\r
+                        other{"¤00MRD"}\r
                     }\r
                     100000000000{\r
-                        one{"¤000MRD "}\r
-                        other{"¤000MRD "}\r
+                        one{"¤000MRD"}\r
+                        other{"¤000MRD"}\r
                     }\r
                 }\r
             }\r
index fabe427..4205181 100644 (file)
@@ -97,6 +97,12 @@ es_US{
                 }\r
             }\r
         }\r
+        minimalPairs{\r
+            gender{\r
+                feminine{"{0}a"}\r
+                masculine{"{0}o"}\r
+            }\r
+        }\r
     }\r
     calendar{\r
         generic{\r
index 918ff51..0fd85f8 100644 (file)
@@ -212,6 +212,10 @@ fr{
             }\r
         }\r
         minimalPairs{\r
+            gender{\r
+                feminine{"La {0} est"}\r
+                masculine{"Le {0} est"}\r
+            }\r
             ordinal{\r
                 one{"Prenez la {0}re à droite."}\r
                 other{"Prenez la {0}e à droite."}\r
index 2a302cc..2f25508 100644 (file)
@@ -855,7 +855,7 @@ gd{
                 few{"{0} brògan"}\r
                 one{"{0} bhròg"}\r
                 other{"{0} bròg"}\r
-                two{"{0}  bhròig"}\r
+                two{"{0} bhròig"}\r
             }\r
         }\r
         minimumGroupingDigits{"1"}\r
index 13d2a69..0983e97 100644 (file)
@@ -201,6 +201,10 @@ it{
             }\r
         }\r
         minimalPairs{\r
+            gender{\r
+                feminine{"La {0} è …"}\r
+                masculine{"Il {0} è …"}\r
+            }\r
             ordinal{\r
                 many{"Prendi l’{0}° a destra."}\r
                 other{"Prendi la {0}° a destra."}\r
index 9f53f45..6af6284 100644 (file)
@@ -218,7 +218,7 @@ ja{
                 }\r
             }\r
             symbols{\r
-                approximatelySign{"約 "}\r
+                approximatelySign{"約"}\r
                 decimal{"."}\r
                 exponential{"E"}\r
                 group{","}\r
index adff6b7..d7a099d 100644 (file)
@@ -2043,7 +2043,7 @@ ko{
                     "분쇼 (1466 ~ 1467)",\r
                     "오닌 (1467 ~ 1469)",\r
                     "분메이 (1469 ~ 1487)",\r
-                    "조쿄 (1487 ~ 1489)<",\r
+                    "조쿄 (1487 ~ 1489)",\r
                     "엔토쿠 (1489 ~ 1492)",\r
                     "메이오 (1492 ~ 1501)",\r
                     "분키 (1501 ~ 1504)",\r
index 4c19d31..b9d7cef 100644 (file)
@@ -87,16 +87,16 @@ mk{
             patternsShort{\r
                 currencyFormat{\r
                     1000{\r
-                        one{"0 илј'.' ¤ "}\r
-                        other{"0 илј'.' ¤ "}\r
+                        one{"0 илј'.' ¤"}\r
+                        other{"0 илј'.' ¤"}\r
                     }\r
                     10000{\r
-                        one{"00 илј'.' ¤ "}\r
-                        other{"00 илј'.' ¤ "}\r
+                        one{"00 илј'.' ¤"}\r
+                        other{"00 илј'.' ¤"}\r
                     }\r
                     100000{\r
-                        one{"000 илј'.' ¤ "}\r
-                        other{"000 илј'.' ¤ "}\r
+                        one{"000 илј'.' ¤"}\r
+                        other{"000 илј'.' ¤"}\r
                     }\r
                     1000000{\r
                         one{"0 мил'.' ¤"}\r
index d7d47df..0bbd6ae 100644 (file)
@@ -625,9 +625,9 @@ my{
                     y{"G y – y"}\r
                 }\r
                 GyM{\r
-                    G{"GGGGG y-MM – GGGGG y-MM   "}\r
+                    G{"GGGGG y-MM – GGGGG y-MM"}\r
                     M{"GGGGG y-MM – y-MM"}\r
-                    y{"GGGGG y-MM – y-MM "}\r
+                    y{"GGGGG y-MM – y-MM"}\r
                 }\r
                 GyMEd{\r
                     G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"}\r
@@ -647,7 +647,7 @@ my{
                     y{"G y MMM d, E – y MMM d, E"}\r
                 }\r
                 GyMMMd{\r
-                    G{"G y MMM d – G y MMM d   "}\r
+                    G{"G y MMM d – G y MMM d"}\r
                     M{"G y MMM d – MMM d"}\r
                     d{"G y MMM d – d"}\r
                     y{"G y MMM d – y MMM d"}\r
index ccbc5f4..eedd825 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nb{\r
-    AuxExemplarCharacters{"[á ǎ ã č ç đ è ê í ń ñ ŋ š ŧ ú ü ž ä ö]"}\r
-    Ellipsis{\r
-        final{"{0}…"}\r
-        initial{"…{0}"}\r
-        medial{"{0}…{1}"}\r
-        word-final{"{0} …"}\r
-        word-initial{"… {0}"}\r
-        word-medial{"{0} … {1}"}\r
-    }\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
-    ExemplarCharactersNumbers{"[  , % ‰ + − 0 1 2 3 4 5 6 7 8 9]"}\r
-    ExemplarCharactersPunctuation{"[\\- ‑ – , ; \\: ! ? . ' \u0022 « » ( ) \\[ \\] \\{ \\} § @ * / \\\\]"}\r
-    MoreInformation{"?"}\r
-    NumberElements{\r
-        arab{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{"٫"}\r
-                exponential{"اس"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{"؛"}\r
-                minusSign{"؜−"}\r
-                nan{"NaN"}\r
-                perMille{"؉"}\r
-                percentSign{"٪؜"}\r
-                plusSign{"؜+"}\r
-                superscriptingExponent{"×"}\r
-                timeSeparator{"."}\r
-            }\r
-        }\r
-        arabext{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"×۱۰^"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{"؛"}\r
-                minusSign{"‎−‎"}\r
-                nan{"NaN"}\r
-                perMille{"؉"}\r
-                percentSign{"٪"}\r
-                plusSign{"‎+‎"}\r
-                superscriptingExponent{"×"}\r
-                timeSeparator{"."}\r
-            }\r
-        }\r
-        bali{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        beng{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        brah{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        cakm{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        cham{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        default{"latn"}\r
-        deva{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        fullwide{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        gujr{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        guru{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        hanidec{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        java{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        kali{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        khmr{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        knda{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        lana{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        lanatham{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        laoo{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        latn{\r
-            miscPatterns{\r
-                approximately{"ca. {0}"}\r
-                atLeast{"≥ {0}"}\r
-                atMost{"≤ {0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            patternsLong{\r
-                decimalFormat{\r
-                    1000{\r
-                        one{"0 tusen"}\r
-                        other{"0 tusen"}\r
-                    }\r
-                    10000{\r
-                        one{"00 tusen"}\r
-                        other{"00 tusen"}\r
-                    }\r
-                    100000{\r
-                        one{"000 tusen"}\r
-                        other{"000 tusen"}\r
-                    }\r
-                    1000000{\r
-                        one{"0 million"}\r
-                        other{"0 millioner"}\r
-                    }\r
-                    10000000{\r
-                        one{"00 millioner"}\r
-                        other{"00 millioner"}\r
-                    }\r
-                    100000000{\r
-                        one{"000 millioner"}\r
-                        other{"000 millioner"}\r
-                    }\r
-                    1000000000{\r
-                        one{"0 milliard"}\r
-                        other{"0 milliarder"}\r
-                    }\r
-                    10000000000{\r
-                        one{"00 milliarder"}\r
-                        other{"00 milliarder"}\r
-                    }\r
-                    100000000000{\r
-                        one{"000 milliarder"}\r
-                        other{"000 milliarder"}\r
-                    }\r
-                    1000000000000{\r
-                        one{"0 billion"}\r
-                        other{"0 billioner"}\r
-                    }\r
-                    10000000000000{\r
-                        one{"00 billioner"}\r
-                        other{"00 billioner"}\r
-                    }\r
-                    100000000000000{\r
-                        one{"000 billioner"}\r
-                        other{"000 billioner"}\r
-                    }\r
-                }\r
-            }\r
-            patternsShort{\r
-                currencyFormat{\r
-                    1000{\r
-                        one{"¤ 0k"}\r
-                        other{"¤ 0k"}\r
-                    }\r
-                    10000{\r
-                        one{"¤ 00k"}\r
-                        other{"¤ 00k"}\r
-                    }\r
-                    100000{\r
-                        one{"¤ 000k"}\r
-                        other{"¤ 000k"}\r
-                    }\r
-                    1000000{\r
-                        one{"¤ 0 mill'.'"}\r
-                        other{"¤ 0 mill'.'"}\r
-                    }\r
-                    10000000{\r
-                        one{"¤ 00 mill'.'"}\r
-                        other{"¤ 00 mill'.'"}\r
-                    }\r
-                    100000000{\r
-                        one{"¤ 000 mill'.'"}\r
-                        other{"¤ 000 mill'.'"}\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 bill'.'"}\r
-                        other{"¤ 0 bill'.'"}\r
-                    }\r
-                    10000000000000{\r
-                        one{"¤ 00 bill'.'"}\r
-                        other{"¤ 00 bill'.'"}\r
-                    }\r
-                    100000000000000{\r
-                        one{"¤ 000 bill'.'"}\r
-                        other{"¤ 000 bill'.'"}\r
-                    }\r
-                }\r
-                decimalFormat{\r
-                    1000{\r
-                        one{"0k"}\r
-                        other{"0k"}\r
-                    }\r
-                    10000{\r
-                        one{"00k"}\r
-                        other{"00k"}\r
-                    }\r
-                    100000{\r
-                        one{"000k"}\r
-                        other{"000k"}\r
-                    }\r
-                    1000000{\r
-                        one{"0 mill'.'"}\r
-                        other{"0 mill'.'"}\r
-                    }\r
-                    10000000{\r
-                        one{"00 mill'.'"}\r
-                        other{"00 mill'.'"}\r
-                    }\r
-                    100000000{\r
-                        one{"000 mill'.'"}\r
-                        other{"000 mill'.'"}\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 bill'.'"}\r
-                        other{"0 bill'.'"}\r
-                    }\r
-                    10000000000000{\r
-                        one{"00 bill'.'"}\r
-                        other{"00 bill'.'"}\r
-                    }\r
-                    100000000000000{\r
-                        one{"000 bill'.'"}\r
-                        other{"000 bill'.'"}\r
-                    }\r
-                }\r
-            }\r
-            symbols{\r
-                approximatelySign{"ca."}\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-                timeSeparator{":"}\r
-            }\r
-        }\r
-        lepc{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        limb{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Ta {0}. sving til høyre."}\r
-            }\r
-            plural{\r
-                one{"{0} dag"}\r
-                other{"{0} dager"}\r
-            }\r
-        }\r
-        minimumGroupingDigits{"1"}\r
-        mlym{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        mong{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        mtei{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        mymr{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        mymrshan{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        native{"latn"}\r
-        nkoo{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        olck{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        orya{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        osma{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        saur{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        shrd{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        sora{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        sund{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        takr{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        talu{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        tamldec{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        telu{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        thai{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        tibt{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-        vaii{\r
-            miscPatterns{\r
-                atLeast{"≥{0}"}\r
-                range{"{0}–{1}"}\r
-            }\r
-            patterns{\r
-                accountingFormat{"¤ #,##0.00"}\r
-                currencyFormat{"¤ #,##0.00"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
-            }\r
-            symbols{\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-            }\r
-        }\r
-    }\r
-    calendar{\r
-        buddhist{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y G",\r
-                "d. MMMM y G",\r
-                "d. MMM y G",\r
-                "d.M.y G",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                GyMMMEd{"E d. MMM y G"}\r
-                GyMMMd{"d. MMM y G"}\r
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
-            eras{\r
-                abbreviated{\r
-                    "BE",\r
-                }\r
-                narrow{\r
-                    "BE",\r
-                }\r
-                wide{\r
-                    "BE",\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E d.M.–E d.M."}\r
-                    d{"E d.M.–E d.M."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"d.M.–d.M."}\r
-                    d{"d.M.–d.M."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    h{"h–h a"}\r
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
-                yM{\r
-                    M{"M.y–M.y G"}\r
-                    y{"M.y–M.y G"}\r
-                }\r
-                yMEd{\r
-                    M{"E d.M.y–E d.M.y G"}\r
-                    d{"E d.M.y–E d.M.y G"}\r
-                    y{"E d.M.y–E d.M.y G"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                yMd{\r
-                    M{"d.M.y–d.M.y G"}\r
-                    d{"d.M.y–d.M.y G"}\r
-                    y{"d.M.y–d.M.y G"}\r
-                }\r
-            }\r
-        }\r
-        chinese{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM r(U)",\r
-                "d. MMMM r(U)",\r
-                "d. MMM r",\r
-                "d.M.r",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"r(U)"}\r
-                GyMMM{"MMM r(U)"}\r
-                GyMMMEd{"E d. MMM r(U)"}\r
-                GyMMMd{"d. MMM r"}\r
-                H{"HH"}\r
-                M{"L."}\r
-                MEd{"E dd.MM."}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                Md{"dd.MM"}\r
-                UM{"MM. U"}\r
-                UMMM{"MMM U"}\r
-                UMMMd{"d. MMM U"}\r
-                UMd{"d.MM. U"}\r
-                d{"d."}\r
-                h{"h a"}\r
-                y{"r(U)"}\r
-                yMd{"dd.MM.r"}\r
-                yyyy{"r(U)"}\r
-                yyyyM{"MM.r"}\r
-                yyyyMEd{"E dd.MM.r"}\r
-                yyyyMMM{"MMM r(U)"}\r
-                yyyyMMMEd{"E d. MMM r(U)"}\r
-                yyyyMMMM{"MMMM r(U)"}\r
-                yyyyMMMd{"d. MMM r"}\r
-                yyyyMd{"dd.MM.r"}\r
-                yyyyQQQ{"QQQ r(U)"}\r
-                yyyyQQQQ{"QQQQ r(U)"}\r
-            }\r
-            cyclicNameSets{\r
-                dayParts{\r
-                    format{\r
-                        abbreviated{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                        narrow{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                        wide{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                    }\r
-                }\r
-                days{\r
-                    format{\r
-                        abbreviated{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        narrow{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        wide{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                    }\r
-                }\r
-                months{\r
-                    format{\r
-                        abbreviated{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        narrow{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        wide{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                    }\r
-                }\r
-                solarTerms{\r
-                    format{\r
-                        abbreviated{\r
-                            "vårstart",\r
-                            "regnvann",\r
-                            "insekter våkner",\r
-                            "vårjevndøgn",\r
-                            "lyst og klart",\r
-                            "kornregn",\r
-                            "sommerstart",\r
-                            "tidl. korn",\r
-                            "korn i aks",\r
-                            "sommersolverv",\r
-                            "liten varme",\r
-                            "stor varme",\r
-                            "høststart",\r
-                            "varmeslutt",\r
-                            "hvit dugg",\r
-                            "høstjevndøgn",\r
-                            "kalddugg",\r
-                            "første frost",\r
-                            "vinterstart",\r
-                            "litt snø",\r
-                            "mye snø",\r
-                            "vintersolverv",\r
-                            "liten kulde",\r
-                            "stor kulde",\r
-                        }\r
-                        narrow{\r
-                            "vårstart",\r
-                            "regnvann",\r
-                            "insekter våkner",\r
-                            "vårjevndøgn",\r
-                            "lyst og klart",\r
-                            "kornregn",\r
-                            "sommerstart",\r
-                            "tidl. korn",\r
-                            "korn i aks",\r
-                            "sommersolverv",\r
-                            "liten varme",\r
-                            "stor varme",\r
-                            "høststart",\r
-                            "varmeslutt",\r
-                            "hvit dugg",\r
-                            "høstjevndøgn",\r
-                            "kalddugg",\r
-                            "første frost",\r
-                            "vinterstart",\r
-                            "litt snø",\r
-                            "mye snø",\r
-                            "vintersolverv",\r
-                            "liten kulde",\r
-                            "stor kulde",\r
-                        }\r
-                        wide{\r
-                            "vårstart",\r
-                            "regnvann",\r
-                            "insekter våkner",\r
-                            "vårjevndøgn",\r
-                            "lyst og klart",\r
-                            "kornregn",\r
-                            "sommerstart",\r
-                            "tidl. korn",\r
-                            "korn i aks",\r
-                            "sommersolverv",\r
-                            "liten varme",\r
-                            "stor varme",\r
-                            "høststart",\r
-                            "varmeslutt",\r
-                            "hvit dugg",\r
-                            "høstjevndøgn",\r
-                            "kalddugg",\r
-                            "første frost",\r
-                            "vinterstart",\r
-                            "litt snø",\r
-                            "mye snø",\r
-                            "vintersolverv",\r
-                            "liten kulde",\r
-                            "stor kulde",\r
-                        }\r
-                    }\r
-                }\r
-                years{\r
-                    format{\r
-                        abbreviated{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        narrow{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        wide{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                    }\r
-                }\r
-                zodiacs{\r
-                    format{\r
-                        abbreviated{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                        narrow{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                        wide{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hm{\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
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"MM.–MM."}\r
-                }\r
-                MEd{\r
-                    M{"dd.MM.E–dd.MM.E"}\r
-                    d{"dd.MM.E–dd.MM.E"}\r
-                }\r
-                MMM{\r
-                    M{"LLL–LLL"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"dd.MM.–dd.MM."}\r
-                    d{"dd.MM.–dd.MM."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    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
-                }\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
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"U–U"}\r
-                }\r
-                yM{\r
-                    M{"MM.y–MM.y"}\r
-                    y{"MM.y–MM.y"}\r
-                }\r
-                yMEd{\r
-                    M{"E dd.MM.y–E dd.MM.y"}\r
-                    d{"E dd.MM.y–E dd.MM.y"}\r
-                    y{"E dd.MM.y–E dd.MM.y"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM U"}\r
-                    y{"MMM U–MMM U"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM U"}\r
-                    d{"E d. MMM–E d. MMM U"}\r
-                    y{"E d. MMM U–E d. MMM U"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM U"}\r
-                    y{"MMMM U–MMMM U"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM U"}\r
-                    d{"d.–d. U MMM"}\r
-                    y{"d. MMM U–d. MMM U"}\r
-                }\r
-                yMd{\r
-                    M{"dd.MM.y–dd.MM.y"}\r
-                    d{"dd.MM.y–dd.MM.y"}\r
-                    y{"dd.MM.y–dd.MM.y"}\r
-                }\r
-            }\r
-            monthNames{\r
-                format{\r
-                    abbreviated{\r
-                        "M01",\r
-                        "M02",\r
-                        "M03",\r
-                        "M04",\r
-                        "M05",\r
-                        "M06",\r
-                        "M07",\r
-                        "M08",\r
-                        "M09",\r
-                        "M10",\r
-                        "M11",\r
-                        "M12",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "M01",\r
-                        "M02",\r
-                        "M03",\r
-                        "M04",\r
-                        "M05",\r
-                        "M06",\r
-                        "M07",\r
-                        "M08",\r
-                        "M09",\r
-                        "M10",\r
-                        "M11",\r
-                        "M12",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "M01",\r
-                        "M02",\r
-                        "M03",\r
-                        "M04",\r
-                        "M05",\r
-                        "M06",\r
-                        "M07",\r
-                        "M08",\r
-                        "M09",\r
-                        "M10",\r
-                        "M11",\r
-                        "M12",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "M01",\r
-                        "M02",\r
-                        "M03",\r
-                        "M04",\r
-                        "M05",\r
-                        "M06",\r
-                        "M07",\r
-                        "M08",\r
-                        "M09",\r
-                        "M10",\r
-                        "M11",\r
-                        "M12",\r
-                    }\r
-                }\r
-            }\r
-            monthPatterns{\r
-                format{\r
-                    abbreviated{\r
-                        leap{"{0}bis"}\r
-                    }\r
-                    narrow{\r
-                        leap{"{0}b"}\r
-                    }\r
-                    wide{\r
-                        leap{"{0}bis"}\r
-                    }\r
-                }\r
-                numeric{\r
-                    all{\r
-                        leap{"{0}bis"}\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        leap{"{0}bis"}\r
-                    }\r
-                    narrow{\r
-                        leap{"{0}b"}\r
-                    }\r
-                    wide{\r
-                        leap{"{0}bis"}\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        coptic{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y G",\r
-                "d. MMMM y G",\r
-                "d. MMM y G",\r
-                "d.M.y G",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                GyMMMEd{"E d. MMM y G"}\r
-                GyMMMd{"d. MMM y G"}\r
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
-            eras{\r
-                abbreviated{\r
-                    "0. t.a.",\r
-                    "1. t.a.",\r
-                }\r
-                narrow{\r
-                    "TA0",\r
-                    "TA1",\r
-                }\r
-                wide{\r
-                    "0. tidsalder",\r
-                    "1. tidsalder",\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E d.M.–E d.M."}\r
-                    d{"E d.M.–E d.M."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"d.M.–d.M."}\r
-                    d{"d.M.–d.M."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    h{"h–h a"}\r
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
-                yM{\r
-                    M{"M.y–M.y G"}\r
-                    y{"M.y–M.y G"}\r
-                }\r
-                yMEd{\r
-                    M{"E d.M.y–E d.M.y G"}\r
-                    d{"E d.M.y–E d.M.y G"}\r
-                    y{"E d.M.y–E d.M.y G"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                yMd{\r
-                    M{"d.M.y–d.M.y G"}\r
-                    d{"d.M.y–d.M.y G"}\r
-                    y{"d.M.y–d.M.y G"}\r
-                }\r
-            }\r
-            monthNames{\r
-                format{\r
-                    abbreviated{\r
-                        "tout",\r
-                        "baba",\r
-                        "hator",\r
-                        "kiahk",\r
-                        "toba",\r
-                        "amshir",\r
-                        "baramhat",\r
-                        "baramouda",\r
-                        "bashans",\r
-                        "paona",\r
-                        "epep",\r
-                        "mesra",\r
-                        "nasie",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "tout",\r
-                        "baba",\r
-                        "hator",\r
-                        "kiahk",\r
-                        "toba",\r
-                        "amshir",\r
-                        "baramhat",\r
-                        "baramouda",\r
-                        "bashans",\r
-                        "paona",\r
-                        "epep",\r
-                        "mesra",\r
-                        "nasie",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "tout",\r
-                        "baba",\r
-                        "hator",\r
-                        "kiahk",\r
-                        "toba",\r
-                        "amshir",\r
-                        "baramhat",\r
-                        "baramouda",\r
-                        "bashans",\r
-                        "paona",\r
-                        "epep",\r
-                        "mesra",\r
-                        "nasie",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "tout",\r
-                        "baba",\r
-                        "hator",\r
-                        "kiahk",\r
-                        "toba",\r
-                        "amshir",\r
-                        "baramhat",\r
-                        "baramouda",\r
-                        "bashans",\r
-                        "paona",\r
-                        "epep",\r
-                        "mesra",\r
-                        "nasie",\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        dangi{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM r(U)",\r
-                "d. MMMM r(U)",\r
-                "d. MMM r",\r
-                "d.M.r",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"r(U)"}\r
-                GyMMM{"MMM r(U)"}\r
-                GyMMMEd{"E d. MMM r(U)"}\r
-                GyMMMd{"d. MMM r"}\r
-                M{"L."}\r
-                MEd{"E dd.MM."}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                Md{"dd.MM"}\r
-                UM{"MM. U"}\r
-                UMMM{"MMM U"}\r
-                UMMMd{"d. MMM U"}\r
-                UMd{"d.MM. U"}\r
-                d{"d."}\r
-                y{"r(U)"}\r
-                yMd{"dd.MM.r"}\r
-                yyyy{"r(U)"}\r
-                yyyyM{"MM.r"}\r
-                yyyyMEd{"E dd.MM.r"}\r
-                yyyyMMM{"MMM r(U)"}\r
-                yyyyMMMEd{"E d. MMM r(U)"}\r
-                yyyyMMMM{"MMMM r(U)"}\r
-                yyyyMMMd{"d. MMM r"}\r
-                yyyyMd{"dd.MM.r"}\r
-                yyyyQQQ{"QQQ r(U)"}\r
-                yyyyQQQQ{"QQQQ r(U)"}\r
-            }\r
-            cyclicNameSets{\r
-                dayParts{\r
-                    format{\r
-                        abbreviated{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                        narrow{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                        wide{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                    }\r
-                }\r
-                days{\r
-                    format{\r
-                        abbreviated{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        narrow{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        wide{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                    }\r
-                }\r
-                months{\r
-                    format{\r
-                        abbreviated{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        narrow{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        wide{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                    }\r
-                }\r
-                solarTerms{\r
-                    format{\r
-                        abbreviated{\r
-                            "vårstart",\r
-                            "regnvann",\r
-                            "insekter våkner",\r
-                            "vårjevndøgn",\r
-                            "lyst og klart",\r
-                            "kornregn",\r
-                            "sommerstart",\r
-                            "tidl. korn",\r
-                            "korn i aks",\r
-                            "sommersolverv",\r
-                            "liten varme",\r
-                            "stor varme",\r
-                            "høststart",\r
-                            "varmeslutt",\r
-                            "hvit dugg",\r
-                            "høstjevndøgn",\r
-                            "kalddugg",\r
-                            "første frost",\r
-                            "vinterstart",\r
-                            "litt snø",\r
-                            "mye snø",\r
-                            "vintersolverv",\r
-                            "liten kulde",\r
-                            "stor kulde",\r
-                        }\r
-                        narrow{\r
-                            "vårstart",\r
-                            "regnvann",\r
-                            "insekter våkner",\r
-                            "vårjevndøgn",\r
-                            "lyst og klart",\r
-                            "kornregn",\r
-                            "sommerstart",\r
-                            "tidl. korn",\r
-                            "korn i aks",\r
-                            "sommersolverv",\r
-                            "liten varme",\r
-                            "stor varme",\r
-                            "høststart",\r
-                            "varmeslutt",\r
-                            "hvit dugg",\r
-                            "høstjevndøgn",\r
-                            "kalddugg",\r
-                            "første frost",\r
-                            "vinterstart",\r
-                            "litt snø",\r
-                            "mye snø",\r
-                            "vintersolverv",\r
-                            "liten kulde",\r
-                            "stor kulde",\r
-                        }\r
-                        wide{\r
-                            "vårstart",\r
-                            "regnvann",\r
-                            "insekter våkner",\r
-                            "vårjevndøgn",\r
-                            "lyst og klart",\r
-                            "kornregn",\r
-                            "sommerstart",\r
-                            "tidl. korn",\r
-                            "korn i aks",\r
-                            "sommersolverv",\r
-                            "liten varme",\r
-                            "stor varme",\r
-                            "høststart",\r
-                            "varmeslutt",\r
-                            "hvit dugg",\r
-                            "høstjevndøgn",\r
-                            "kalddugg",\r
-                            "første frost",\r
-                            "vinterstart",\r
-                            "litt snø",\r
-                            "mye snø",\r
-                            "vintersolverv",\r
-                            "liten kulde",\r
-                            "stor kulde",\r
-                        }\r
-                    }\r
-                }\r
-                years{\r
-                    format{\r
-                        abbreviated{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        narrow{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                        wide{\r
-                            "jia-zi",\r
-                            "yi-chou",\r
-                            "bing-yin",\r
-                            "ding-mao",\r
-                            "wu-chen",\r
-                            "ji-si",\r
-                            "geng-wu",\r
-                            "xin-wei",\r
-                            "ren-shen",\r
-                            "gui-you",\r
-                            "jia-xu",\r
-                            "yi-hai",\r
-                            "bing-zi",\r
-                            "ding-chou",\r
-                            "wu-yin",\r
-                            "ji-mao",\r
-                            "geng-chen",\r
-                            "xin-si",\r
-                            "ren-wu",\r
-                            "gui-wei",\r
-                            "jia-shen",\r
-                            "yi-you",\r
-                            "bing-xu",\r
-                            "ding-hai",\r
-                            "wu-zi",\r
-                            "ji-chou",\r
-                            "geng-yin",\r
-                            "xin-mao",\r
-                            "ren-chen",\r
-                            "gui-si",\r
-                            "jia-wu",\r
-                            "yi-wei",\r
-                            "bing-shen",\r
-                            "ding-you",\r
-                            "wu-xu",\r
-                            "ji-hai",\r
-                            "geng-zi",\r
-                            "xin-chou",\r
-                            "ren-yin",\r
-                            "gui-mao",\r
-                            "jia-chen",\r
-                            "yi-si",\r
-                            "bing-wu",\r
-                            "ding-wei",\r
-                            "wu-shen",\r
-                            "ji-you",\r
-                            "geng-xu",\r
-                            "xin-hai",\r
-                            "ren-zi",\r
-                            "gui-chou",\r
-                            "jia-yin",\r
-                            "yi-mao",\r
-                            "bing-chen",\r
-                            "ding-si",\r
-                            "wu-wu",\r
-                            "ji-wei",\r
-                            "geng-shen",\r
-                            "xin-you",\r
-                            "ren-xu",\r
-                            "gui-hai",\r
-                        }\r
-                    }\r
-                }\r
-                zodiacs{\r
-                    format{\r
-                        abbreviated{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                        narrow{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                        wide{\r
-                            "zi",\r
-                            "chou",\r
-                            "yin",\r
-                            "mao",\r
-                            "chen",\r
-                            "si",\r
-                            "wu",\r
-                            "wei",\r
-                            "shen",\r
-                            "you",\r
-                            "xu",\r
-                            "hai",\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"MM.–MM."}\r
-                }\r
-                MEd{\r
-                    M{"dd.MM.E–dd.MM.E"}\r
-                    d{"dd.MM.E–dd.MM.E"}\r
-                }\r
-                MMM{\r
-                    M{"LLL–LLL"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"dd.MM.–dd.MM."}\r
-                    d{"dd.MM.–dd.MM."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    h{"h–h a"}\r
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"U–U"}\r
-                }\r
-                yM{\r
-                    M{"MM.y–MM.y"}\r
-                    y{"MM.y–MM.y"}\r
-                }\r
-                yMEd{\r
-                    M{"E dd.MM.y–E dd.MM.y"}\r
-                    d{"E dd.MM.y–E dd.MM.y"}\r
-                    y{"E dd.MM.y–E dd.MM.y"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM U"}\r
-                    y{"MMM U–MMM U"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM U"}\r
-                    d{"E d. MMM–E d. MMM U"}\r
-                    y{"E d. MMM U–E d. MMM U"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM U"}\r
-                    y{"MMMM U–MMMM U"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM U"}\r
-                    d{"d.–d. U MMM"}\r
-                    y{"d. MMM U–d. MMM U"}\r
-                }\r
-                yMd{\r
-                    M{"dd.MM.y–dd.MM.y"}\r
-                    d{"dd.MM.y–dd.MM.y"}\r
-                    y{"dd.MM.y–dd.MM.y"}\r
-                }\r
-            }\r
-            monthNames{\r
-                format{\r
-                    abbreviated{\r
-                        "M01",\r
-                        "M02",\r
-                        "M03",\r
-                        "M04",\r
-                        "M05",\r
-                        "M06",\r
-                        "M07",\r
-                        "M08",\r
-                        "M09",\r
-                        "M10",\r
-                        "M11",\r
-                        "M12",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "M01",\r
-                        "M02",\r
-                        "M03",\r
-                        "M04",\r
-                        "M05",\r
-                        "M06",\r
-                        "M07",\r
-                        "M08",\r
-                        "M09",\r
-                        "M10",\r
-                        "M11",\r
-                        "M12",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "M01",\r
-                        "M02",\r
-                        "M03",\r
-                        "M04",\r
-                        "M05",\r
-                        "M06",\r
-                        "M07",\r
-                        "M08",\r
-                        "M09",\r
-                        "M10",\r
-                        "M11",\r
-                        "M12",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "M01",\r
-                        "M02",\r
-                        "M03",\r
-                        "M04",\r
-                        "M05",\r
-                        "M06",\r
-                        "M07",\r
-                        "M08",\r
-                        "M09",\r
-                        "M10",\r
-                        "M11",\r
-                        "M12",\r
-                    }\r
-                }\r
-            }\r
-            monthPatterns{\r
-                format{\r
-                    abbreviated{\r
-                        leap{"{0}bis"}\r
-                    }\r
-                    narrow{\r
-                        leap{"{0}b"}\r
-                    }\r
-                    wide{\r
-                        leap{"{0}bis"}\r
-                    }\r
-                }\r
-                numeric{\r
-                    all{\r
-                        leap{"{0}bis"}\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        leap{"{0}bis"}\r
-                    }\r
-                    narrow{\r
-                        leap{"{0}b"}\r
-                    }\r
-                    wide{\r
-                        leap{"{0}bis"}\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        ethiopic{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y G",\r
-                "d. MMMM y G",\r
-                "d. MMM y G",\r
-                "d.M.y G",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                GyMMMEd{"E d. MMM y G"}\r
-                GyMMMd{"d. MMM y G"}\r
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
-            eras{\r
-                abbreviated{\r
-                    "0. t.a.",\r
-                    "1. t.a.",\r
-                }\r
-                narrow{\r
-                    "TA0",\r
-                    "TA1",\r
-                }\r
-                wide{\r
-                    "0. tidsalder",\r
-                    "1. tidsalder",\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E d.M.–E d.M."}\r
-                    d{"E d.M.–E d.M."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"d.M.–d.M."}\r
-                    d{"d.M.–d.M."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    h{"h–h a"}\r
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
-                yM{\r
-                    M{"M.y–M.y G"}\r
-                    y{"M.y–M.y G"}\r
-                }\r
-                yMEd{\r
-                    M{"E d.M.y–E d.M.y G"}\r
-                    d{"E d.M.y–E d.M.y G"}\r
-                    y{"E d.M.y–E d.M.y G"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                yMd{\r
-                    M{"d.M.y–d.M.y G"}\r
-                    d{"d.M.y–d.M.y G"}\r
-                    y{"d.M.y–d.M.y G"}\r
-                }\r
-            }\r
-            monthNames{\r
-                format{\r
-                    abbreviated{\r
-                        "meskerem",\r
-                        "tekemt",\r
-                        "hedar",\r
-                        "tahsas",\r
-                        "ter",\r
-                        "yekatit",\r
-                        "megabit",\r
-                        "miazia",\r
-                        "genbot",\r
-                        "sene",\r
-                        "hamle",\r
-                        "nehasse",\r
-                        "pagumen",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "meskerem",\r
-                        "tekemt",\r
-                        "hedar",\r
-                        "tahsas",\r
-                        "ter",\r
-                        "yekatit",\r
-                        "megabit",\r
-                        "miazia",\r
-                        "genbot",\r
-                        "sene",\r
-                        "hamle",\r
-                        "nehasse",\r
-                        "pagumen",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "meskerem",\r
-                        "tekemt",\r
-                        "hedar",\r
-                        "tahsas",\r
-                        "ter",\r
-                        "yekatit",\r
-                        "megabit",\r
-                        "miazia",\r
-                        "genbot",\r
-                        "sene",\r
-                        "hamle",\r
-                        "nehasse",\r
-                        "pagumen",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "meskerem",\r
-                        "tekemt",\r
-                        "hedar",\r
-                        "tahsas",\r
-                        "ter",\r
-                        "yekatit",\r
-                        "megabit",\r
-                        "miazia",\r
-                        "genbot",\r
-                        "sene",\r
-                        "hamle",\r
-                        "nehasse",\r
-                        "pagumen",\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        ethiopic-amete-alem{\r
-            eras{\r
-                abbreviated{\r
-                    "0. t.a.",\r
-                }\r
-                narrow{\r
-                    "TA0",\r
-                }\r
-                wide{\r
-                    "0. tidsalder",\r
-                }\r
-            }\r
-        }\r
-        generic{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y G",\r
-                "d. MMMM y G",\r
-                "d. MMM y G",\r
-                "d.M.y G",\r
-                "{1} {0}",\r
-                "{1} 'kl'. {0}",\r
-                "{1} 'kl'. {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                Bh{"h B"}\r
-                Bhm{"h:mm B"}\r
-                Bhms{"h:mm:ss B"}\r
-                E{"ccc"}\r
-                EBhm{"E h:mm B"}\r
-                EBhms{"E h:mm:ss B"}\r
-                EHm{"E HH:mm"}\r
-                EHms{"E HH:mm:ss"}\r
-                Ed{"E d."}\r
-                Ehm{"E h:mm a"}\r
-                Ehms{"E h:mm:ss a"}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                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
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                h{"h a"}\r
-                hm{"h:mm a"}\r
-                hms{"h:mm:ss a"}\r
-                ms{"mm:ss"}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
-            intervalFormats{\r
-                Bh{\r
-                    B{"h B–h B"}\r
-                }\r
-                Bhm{\r
-                    B{"h:mm B–h:mm B"}\r
-                }\r
-                Gy{\r
-                    G{"y G–y G"}\r
-                    y{"y–y G"}\r
-                }\r
-                GyM{\r
-                    G{"MM.y GGGGG–MM.y GGGGG"}\r
-                    M{"MM.y–MM.y GGGGG"}\r
-                    y{"MM.y–MM.y GGGGG"}\r
-                }\r
-                GyMEd{\r
-                    G{"E dd.MM.y GGGGG–E dd.MM.y GGGGG"}\r
-                    M{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                    d{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                    y{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                }\r
-                GyMMM{\r
-                    G{"MMM y G–MMM y G"}\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                GyMMMEd{\r
-                    G{"E d. MMM y G–E d. MMM y G"}\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                GyMMMd{\r
-                    G{"d. MMM y G–d. MMM y G"}\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                GyMd{\r
-                    G{"dd.MM.y GGGGG–dd.MM.y GGGGG"}\r
-                    M{"dd.MM.y–dd.MM.y GGGGG"}\r
-                    d{"dd.MM.y–dd.MM.y GGGGG"}\r
-                    y{"dd.MM.y–dd.MM.y GGGGG"}\r
-                }\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hm{\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
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E d.M.–E d.M."}\r
-                    d{"E d.M.–E d.M."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"d.M.–d.M."}\r
-                    d{"d.M.–d.M."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a – h a"}\r
-                    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
-                }\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
-                }\r
-                hv{\r
-                    a{"h a – h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
-                yM{\r
-                    M{"M.y–M.y G"}\r
-                    y{"M.y–M.y G"}\r
-                }\r
-                yMEd{\r
-                    M{"E d.M.y–E d.M.y G"}\r
-                    d{"E d.M.y–E d.M.y G"}\r
-                    y{"E d.M.y–E d.M.y G"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                yMd{\r
-                    M{"d.M.y–d.M.y G"}\r
-                    d{"d.M.y–d.M.y G"}\r
-                    y{"d.M.y–d.M.y G"}\r
-                }\r
-            }\r
-        }\r
-        gregorian{\r
-            AmPmMarkers{\r
-                "a.m.",\r
-                "p.m.",\r
-            }\r
-            AmPmMarkersAbbr{\r
-                "a.m.",\r
-                "p.m.",\r
-            }\r
-            AmPmMarkersNarrow{\r
-                "a",\r
-                "p",\r
-            }\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y",\r
-                "d. MMMM y",\r
-                "d. MMM y",\r
-                "dd.MM.y",\r
-                "{1}, {0}",\r
-                "{1} 'kl'. {0}",\r
-                "{1} 'kl'. {0}",\r
-                "{1}, {0}",\r
-                "{1}, {0}",\r
-            }\r
-            appendItems{\r
-                Timezone{"{0} {1}"}\r
-            }\r
-            availableFormats{\r
-                Bh{"h B"}\r
-                Bhm{"h:mm B"}\r
-                Bhms{"h:mm:ss B"}\r
-                E{"ccc"}\r
-                EBhm{"E h:mm B"}\r
-                EBhms{"E h:mm:ss B"}\r
-                EHm{"E 'kl'. HH:mm"}\r
-                EHms{"E 'kl'. HH:mm:ss"}\r
-                Ed{"E d."}\r
-                Ehm{"E h:mm a"}\r
-                Ehms{"E h:mm:ss a"}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                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
-                Hmsv{"HH:mm:ss v"}\r
-                Hmv{"HH:mm v"}\r
-                M{"L."}\r
-                MEd{"E d.M."}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMW{\r
-                    one{"W. 'uke' 'i' MMMM"}\r
-                    other{"W. 'uke' 'i' MMMM"}\r
-                }\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                h{"h a"}\r
-                hm{"h:mm a"}\r
-                hms{"h:mm:ss a"}\r
-                hmsv{"h:mm:ss a v"}\r
-                hmv{"h:mm a v"}\r
-                ms{"mm:ss"}\r
-                y{"y"}\r
-                yM{"M.y"}\r
-                yMEd{"E d.M.y"}\r
-                yMM{"MM.y"}\r
-                yMMM{"MMM y"}\r
-                yMMMEd{"E d. MMM y"}\r
-                yMMMM{"MMMM y"}\r
-                yMMMd{"d. MMM y"}\r
-                yMd{"d.M.y"}\r
-                yQQQ{"QQQ y"}\r
-                yQQQQ{"QQQQ y"}\r
-                yw{\r
-                    one{"'uke' w 'i' Y"}\r
-                    other{"'uke' w 'i' Y"}\r
-                }\r
-            }\r
-            dayNames{\r
-                format{\r
-                    abbreviated{\r
-                        "søn.",\r
-                        "man.",\r
-                        "tir.",\r
-                        "ons.",\r
-                        "tor.",\r
-                        "fre.",\r
-                        "lør.",\r
-                    }\r
-                    narrow{\r
-                        "S",\r
-                        "M",\r
-                        "T",\r
-                        "O",\r
-                        "T",\r
-                        "F",\r
-                        "L",\r
-                    }\r
-                    short{\r
-                        "sø.",\r
-                        "ma.",\r
-                        "ti.",\r
-                        "on.",\r
-                        "to.",\r
-                        "fr.",\r
-                        "lø.",\r
-                    }\r
-                    wide{\r
-                        "søndag",\r
-                        "mandag",\r
-                        "tirsdag",\r
-                        "onsdag",\r
-                        "torsdag",\r
-                        "fredag",\r
-                        "lørdag",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "søn.",\r
-                        "man.",\r
-                        "tir.",\r
-                        "ons.",\r
-                        "tor.",\r
-                        "fre.",\r
-                        "lør.",\r
-                    }\r
-                    narrow{\r
-                        "S",\r
-                        "M",\r
-                        "T",\r
-                        "O",\r
-                        "T",\r
-                        "F",\r
-                        "L",\r
-                    }\r
-                    short{\r
-                        "sø.",\r
-                        "ma.",\r
-                        "ti.",\r
-                        "on.",\r
-                        "to.",\r
-                        "fr.",\r
-                        "lø.",\r
-                    }\r
-                    wide{\r
-                        "søndag",\r
-                        "mandag",\r
-                        "tirsdag",\r
-                        "onsdag",\r
-                        "torsdag",\r
-                        "fredag",\r
-                        "lørdag",\r
-                    }\r
-                }\r
-            }\r
-            dayPeriod{\r
-                format{\r
-                    abbreviated{\r
-                        afternoon1{"etterm."}\r
-                        evening1{"kveld"}\r
-                        midnight{"midn."}\r
-                        morning1{"morg."}\r
-                        morning2{"form."}\r
-                        night1{"natt"}\r
-                    }\r
-                    narrow{\r
-                        afternoon1{"em."}\r
-                        evening1{"kv."}\r
-                        midnight{"mn."}\r
-                        morning1{"mg."}\r
-                        morning2{"fm."}\r
-                        night1{"nt."}\r
-                    }\r
-                    wide{\r
-                        afternoon1{"på ettermiddagen"}\r
-                        evening1{"på kvelden"}\r
-                        midnight{"midnatt"}\r
-                        morning1{"på morgenen"}\r
-                        morning2{"på formiddagen"}\r
-                        night1{"på natten"}\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        afternoon1{"etterm."}\r
-                        am{"a.m."}\r
-                        evening1{"kveld"}\r
-                        midnight{"midn."}\r
-                        morning1{"morg."}\r
-                        morning2{"form."}\r
-                        night1{"natt"}\r
-                        pm{"p.m."}\r
-                    }\r
-                    narrow{\r
-                        afternoon1{"em."}\r
-                        am{"a.m."}\r
-                        evening1{"kv."}\r
-                        midnight{"mn."}\r
-                        morning1{"mg."}\r
-                        morning2{"fm."}\r
-                        night1{"nt."}\r
-                        pm{"p.m."}\r
-                    }\r
-                    wide{\r
-                        afternoon1{"ettermiddag"}\r
-                        am{"a.m."}\r
-                        evening1{"kveld"}\r
-                        midnight{"midnatt"}\r
-                        morning1{"morgen"}\r
-                        morning2{"formiddag"}\r
-                        night1{"natt"}\r
-                        pm{"p.m."}\r
-                    }\r
-                }\r
-            }\r
-            eras{\r
-                abbreviated{\r
-                    "f.Kr.",\r
-                    "e.Kr.",\r
-                }\r
-                abbreviated%variant{\r
-                    "fvt.",\r
-                    "evt.",\r
-                }\r
-                narrow{\r
-                    "f.Kr.",\r
-                    "e.Kr.",\r
-                }\r
-                narrow%variant{\r
-                    "fvt.",\r
-                    "vt.",\r
-                }\r
-                wide{\r
-                    "før Kristus",\r
-                    "etter Kristus",\r
-                }\r
-                wide%variant{\r
-                    "før vår tidsregning",\r
-                    "etter vår tidsregning",\r
-                }\r
-            }\r
-            intervalFormats{\r
-                Bh{\r
-                    B{"h B–h B"}\r
-                }\r
-                Bhm{\r
-                    B{"h:mm B–h:mm B"}\r
-                }\r
-                Gy{\r
-                    G{"y G–y G"}\r
-                    y{"y–y G"}\r
-                }\r
-                GyM{\r
-                    G{"MM.y GGGGG–MM.y GGGGG"}\r
-                    M{"MM.y–MM.y GGGGG"}\r
-                    y{"MM.y–MM.y GGGGG"}\r
-                }\r
-                GyMEd{\r
-                    G{"E dd.MM.y GGGGG–E dd.MM.y GGGGG"}\r
-                    M{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                    d{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                    y{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                }\r
-                GyMMM{\r
-                    G{"MMM y G–MMM y G"}\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                GyMMMEd{\r
-                    G{"E d. MMM y G–E d. MMM y G"}\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                GyMMMd{\r
-                    G{"d. MMM y G–d. MMM y G"}\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                GyMd{\r
-                    G{"dd.MM.y GGGGG–dd.MM.y GGGGG"}\r
-                    M{"dd.MM.y–dd.MM.y GGGGG"}\r
-                    d{"dd.MM.y–dd.MM.y GGGGG"}\r
-                    y{"dd.MM.y–dd.MM.y GGGGG"}\r
-                }\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hm{\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
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E dd.MM.–E dd.MM."}\r
-                    d{"E dd.MM.–E dd.MM."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d.–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"dd.MM.–dd.MM."}\r
-                    d{"dd.MM.–dd.MM."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    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
-                }\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
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y"}\r
-                }\r
-                yM{\r
-                    M{"MM.y–MM.y"}\r
-                    y{"MM.y–MM.y"}\r
-                }\r
-                yMEd{\r
-                    M{"E dd.MM.y–E dd.MM.y"}\r
-                    d{"E dd.MM.y–E dd.MM.y"}\r
-                    y{"E dd.MM.y–E dd.MM.y"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y"}\r
-                    y{"MMM y–MMM y"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y"}\r
-                    d{"E d.–E d. MMM y"}\r
-                    y{"E d. MMM y–E d. MMM y"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y"}\r
-                    y{"MMMM y–MMMM y"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y"}\r
-                    d{"d.–d. MMM y"}\r
-                    y{"d. MMM y–d. MMM y"}\r
-                }\r
-                yMd{\r
-                    M{"dd.MM.y–dd.MM.y"}\r
-                    d{"dd.MM.y–dd.MM.y"}\r
-                    y{"dd.MM.y–dd.MM.y"}\r
-                }\r
-            }\r
-            monthNames{\r
-                format{\r
-                    abbreviated{\r
-                        "jan.",\r
-                        "feb.",\r
-                        "mar.",\r
-                        "apr.",\r
-                        "mai",\r
-                        "jun.",\r
-                        "jul.",\r
-                        "aug.",\r
-                        "sep.",\r
-                        "okt.",\r
-                        "nov.",\r
-                        "des.",\r
-                    }\r
-                    narrow{\r
-                        "J",\r
-                        "F",\r
-                        "M",\r
-                        "A",\r
-                        "M",\r
-                        "J",\r
-                        "J",\r
-                        "A",\r
-                        "S",\r
-                        "O",\r
-                        "N",\r
-                        "D",\r
-                    }\r
-                    wide{\r
-                        "januar",\r
-                        "februar",\r
-                        "mars",\r
-                        "april",\r
-                        "mai",\r
-                        "juni",\r
-                        "juli",\r
-                        "august",\r
-                        "september",\r
-                        "oktober",\r
-                        "november",\r
-                        "desember",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "jan",\r
-                        "feb",\r
-                        "mar",\r
-                        "apr",\r
-                        "mai",\r
-                        "jun",\r
-                        "jul",\r
-                        "aug",\r
-                        "sep",\r
-                        "okt",\r
-                        "nov",\r
-                        "des",\r
-                    }\r
-                    narrow{\r
-                        "J",\r
-                        "F",\r
-                        "M",\r
-                        "A",\r
-                        "M",\r
-                        "J",\r
-                        "J",\r
-                        "A",\r
-                        "S",\r
-                        "O",\r
-                        "N",\r
-                        "D",\r
-                    }\r
-                    wide{\r
-                        "januar",\r
-                        "februar",\r
-                        "mars",\r
-                        "april",\r
-                        "mai",\r
-                        "juni",\r
-                        "juli",\r
-                        "august",\r
-                        "september",\r
-                        "oktober",\r
-                        "november",\r
-                        "desember",\r
-                    }\r
-                }\r
-            }\r
-            quarters{\r
-                format{\r
-                    abbreviated{\r
-                        "K1",\r
-                        "K2",\r
-                        "K3",\r
-                        "K4",\r
-                    }\r
-                    narrow{\r
-                        "1.",\r
-                        "2.",\r
-                        "3.",\r
-                        "4.",\r
-                    }\r
-                    wide{\r
-                        "1. kvartal",\r
-                        "2. kvartal",\r
-                        "3. kvartal",\r
-                        "4. kvartal",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "K1",\r
-                        "K2",\r
-                        "K3",\r
-                        "K4",\r
-                    }\r
-                    narrow{\r
-                        "1.",\r
-                        "2.",\r
-                        "3.",\r
-                        "4.",\r
-                    }\r
-                    wide{\r
-                        "1. kvartal",\r
-                        "2. kvartal",\r
-                        "3. kvartal",\r
-                        "4. kvartal",\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        hebrew{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y G",\r
-                "d. MMMM y G",\r
-                "d. MMM y G",\r
-                "d.M.y G",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                GyMMMEd{"E d. MMM y G"}\r
-                GyMMMd{"d. MMM y G"}\r
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
-            eras{\r
-                abbreviated{\r
-                    "AM",\r
-                }\r
-                narrow{\r
-                    "AM",\r
-                }\r
-                wide{\r
-                    "AM",\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E d.M.–E d.M."}\r
-                    d{"E d.M.–E d.M."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"d.M.–d.M."}\r
-                    d{"d.M.–d.M."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    h{"h–h a"}\r
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
-                yM{\r
-                    M{"M.y–M.y G"}\r
-                    y{"M.y–M.y G"}\r
-                }\r
-                yMEd{\r
-                    M{"E d.M.y–E d.M.y G"}\r
-                    d{"E d.M.y–E d.M.y G"}\r
-                    y{"E d.M.y–E d.M.y G"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                yMd{\r
-                    M{"d.M.y–d.M.y G"}\r
-                    d{"d.M.y–d.M.y G"}\r
-                    y{"d.M.y–d.M.y G"}\r
-                }\r
-            }\r
-            monthNames{\r
-                format{\r
-                    abbreviated{\r
-                        "tishri",\r
-                        "heshvan",\r
-                        "kislev",\r
-                        "tevet",\r
-                        "shevat",\r
-                        "adar I",\r
-                        "adar",\r
-                        "nisan",\r
-                        "iyar",\r
-                        "sivan",\r
-                        "tamuz",\r
-                        "av",\r
-                        "elul",\r
-                        "adar II",\r
-                    }\r
-                    narrow{\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
-                        "7",\r
-                    }\r
-                    wide{\r
-                        "tishri",\r
-                        "heshvan",\r
-                        "kislev",\r
-                        "tevet",\r
-                        "shevat",\r
-                        "adar I",\r
-                        "adar",\r
-                        "nisan",\r
-                        "iyar",\r
-                        "sivan",\r
-                        "tamuz",\r
-                        "av",\r
-                        "elul",\r
-                        "adar II",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "tishri",\r
-                        "heshvan",\r
-                        "kislev",\r
-                        "tevet",\r
-                        "shevat",\r
-                        "adar I",\r
-                        "adar",\r
-                        "nisan",\r
-                        "iyar",\r
-                        "sivan",\r
-                        "tamuz",\r
-                        "av",\r
-                        "elul",\r
-                        "adar II",\r
-                    }\r
-                    narrow{\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
-                        "7",\r
-                    }\r
-                    wide{\r
-                        "tishri",\r
-                        "heshvan",\r
-                        "kislev",\r
-                        "tevet",\r
-                        "shevat",\r
-                        "adar I",\r
-                        "adar",\r
-                        "nisan",\r
-                        "iyar",\r
-                        "sivan",\r
-                        "tamuz",\r
-                        "av",\r
-                        "elul",\r
-                        "adar II",\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        indian{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y G",\r
-                "d. MMMM y G",\r
-                "d. MMM y G",\r
-                "d.M.y G",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                GyMMMEd{"E d. MMM y G"}\r
-                GyMMMd{"d. MMM y G"}\r
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
-            eras{\r
-                abbreviated{\r
-                    "saka",\r
-                }\r
-                narrow{\r
-                    "saka",\r
-                }\r
-                wide{\r
-                    "saka",\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E d.M.–E d.M."}\r
-                    d{"E d.M.–E d.M."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"d.M.–d.M."}\r
-                    d{"d.M.–d.M."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    h{"h–h a"}\r
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
-                yM{\r
-                    M{"M.y–M.y G"}\r
-                    y{"M.y–M.y G"}\r
-                }\r
-                yMEd{\r
-                    M{"E d.M.y–E d.M.y G"}\r
-                    d{"E d.M.y–E d.M.y G"}\r
-                    y{"E d.M.y–E d.M.y G"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                yMd{\r
-                    M{"d.M.y–d.M.y G"}\r
-                    d{"d.M.y–d.M.y G"}\r
-                    y{"d.M.y–d.M.y G"}\r
-                }\r
-            }\r
-            monthNames{\r
-                format{\r
-                    abbreviated{\r
-                        "chaitra",\r
-                        "vaisakha",\r
-                        "jyaistha",\r
-                        "asadha",\r
-                        "sravana",\r
-                        "bhadra",\r
-                        "asvina",\r
-                        "kartika",\r
-                        "agrahayana",\r
-                        "pausa",\r
-                        "magha",\r
-                        "phalguna",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "chaitra",\r
-                        "vaisakha",\r
-                        "jyaistha",\r
-                        "asadha",\r
-                        "sravana",\r
-                        "bhadra",\r
-                        "asvina",\r
-                        "kartika",\r
-                        "agrahayana",\r
-                        "pausa",\r
-                        "magha",\r
-                        "phalguna",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "chaitra",\r
-                        "vaisakha",\r
-                        "jyaistha",\r
-                        "asadha",\r
-                        "sravana",\r
-                        "bhadra",\r
-                        "asvina",\r
-                        "kartika",\r
-                        "agrahayana",\r
-                        "pausa",\r
-                        "magha",\r
-                        "phalguna",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "chaitra",\r
-                        "vaisakha",\r
-                        "jyaistha",\r
-                        "asadha",\r
-                        "sravana",\r
-                        "bhadra",\r
-                        "asvina",\r
-                        "kartika",\r
-                        "agrahayana",\r
-                        "pausa",\r
-                        "magha",\r
-                        "phalguna",\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        islamic{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y G",\r
-                "d. MMMM y G",\r
-                "d. MMM y G",\r
-                "d.M.y G",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                GyMMMEd{"E d. MMM y G"}\r
-                GyMMMd{"d. MMM y G"}\r
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
-            eras{\r
-                abbreviated{\r
-                    "AH",\r
-                }\r
-                narrow{\r
-                    "AH",\r
-                }\r
-                wide{\r
-                    "AH",\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E d.M.–E d.M."}\r
-                    d{"E d.M.–E d.M."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"d.M.–d.M."}\r
-                    d{"d.M.–d.M."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    h{"h–h a"}\r
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
-                yM{\r
-                    M{"M.y–M.y G"}\r
-                    y{"M.y–M.y G"}\r
-                }\r
-                yMEd{\r
-                    M{"E d.M.y–E d.M.y G"}\r
-                    d{"E d.M.y–E d.M.y G"}\r
-                    y{"E d.M.y–E d.M.y G"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                yMd{\r
-                    M{"d.M.y–d.M.y G"}\r
-                    d{"d.M.y–d.M.y G"}\r
-                    y{"d.M.y–d.M.y G"}\r
-                }\r
-            }\r
-            monthNames{\r
-                format{\r
-                    abbreviated{\r
-                        "muh.",\r
-                        "saf.",\r
-                        "rab. I",\r
-                        "rab. II",\r
-                        "jum. I",\r
-                        "jum. II",\r
-                        "raj.",\r
-                        "sha.",\r
-                        "ram.",\r
-                        "shaw.",\r
-                        "dhuʻl-q.",\r
-                        "dhuʻl-h.",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "muharram",\r
-                        "safar",\r
-                        "rabiʻ I",\r
-                        "rabiʻ II",\r
-                        "jumada I",\r
-                        "jumada II",\r
-                        "rajab",\r
-                        "shaʻban",\r
-                        "ramadan",\r
-                        "shawwal",\r
-                        "dhuʻl-qiʻdah",\r
-                        "dhuʻl-hijjah",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "muh.",\r
-                        "saf.",\r
-                        "rab. I",\r
-                        "rab. II",\r
-                        "jum. I",\r
-                        "jum. II",\r
-                        "raj.",\r
-                        "sha.",\r
-                        "ram.",\r
-                        "shaw.",\r
-                        "dhuʻl-q.",\r
-                        "Dhuʻl-H.",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "muharram",\r
-                        "safar",\r
-                        "rabiʻ I",\r
-                        "rabiʻ II",\r
-                        "jumada I",\r
-                        "jumada II",\r
-                        "rajab",\r
-                        "shaʻban",\r
-                        "ramadan",\r
-                        "shawwal",\r
-                        "dhuʻl-qiʻdah",\r
-                        "dhuʻl-hijjah",\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        japanese{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y G",\r
-                "d. MMMM y G",\r
-                "d. MMM y G",\r
-                "d.M y G",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                GyMMMEd{"E d. MMM y G"}\r
-                GyMMMd{"d. MMM y G"}\r
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
-            eras{\r
-                abbreviated{\r
-                    "Taika (645–650)",\r
-                    "Hakuchi (650–671)",\r
-                    "Hakuhō (672–686)",\r
-                    "Shuchō (686–701)",\r
-                    "Taihō (701–704)",\r
-                    "Keiun (704–708)",\r
-                    "Wadō (708–715)",\r
-                    "Reiki (715–717)",\r
-                    "Yōrō (717–724)",\r
-                    "Jinki (724–729)",\r
-                    "Tenpyō (729–749)",\r
-                    "Tenpyō-kampō (749-749)",\r
-                    "Tenpyō-shōhō (749-757)",\r
-                    "Tenpyō-hōji (757-765)",\r
-                    "Tenpyō-jingo (765-767)",\r
-                    "Jingo-keiun (767-770)",\r
-                    "Hōki (770–780)",\r
-                    "Ten-ō (781-782)",\r
-                    "Enryaku (782–806)",\r
-                    "Daidō (806–810)",\r
-                    "Kōnin (810–824)",\r
-                    "Tenchō (824–834)",\r
-                    "Jōwa (834–848)",\r
-                    "Kajō (848–851)",\r
-                    "Ninju (851–854)",\r
-                    "Saikō (854–857)",\r
-                    "Ten-an (857-859)",\r
-                    "Jōgan (859–877)",\r
-                    "Gangyō (877–885)",\r
-                    "Ninna (885–889)",\r
-                    "Kanpyō (889–898)",\r
-                    "Shōtai (898–901)",\r
-                    "Engi (901–923)",\r
-                    "Enchō (923–931)",\r
-                    "Jōhei (931–938)",\r
-                    "Tengyō (938–947)",\r
-                    "Tenryaku (947–957)",\r
-                    "Tentoku (957–961)",\r
-                    "Ōwa (961–964)",\r
-                    "Kōhō (964–968)",\r
-                    "Anna (968–970)",\r
-                    "Tenroku (970–973)",\r
-                    "Ten’en (973–976)",\r
-                    "Jōgen (976–978)",\r
-                    "Tengen (978–983)",\r
-                    "Eikan (983–985)",\r
-                    "Kanna (985–987)",\r
-                    "Eien (987–989)",\r
-                    "Eiso (989–990)",\r
-                    "Shōryaku (990–995)",\r
-                    "Chōtoku (995–999)",\r
-                    "Chōhō (999–1004)",\r
-                    "Kankō (1004–1012)",\r
-                    "Chōwa (1012–1017)",\r
-                    "Kannin (1017–1021)",\r
-                    "Jian (1021–1024)",\r
-                    "Manju (1024–1028)",\r
-                    "Chōgen (1028–1037)",\r
-                    "Chōryaku (1037–1040)",\r
-                    "Chōkyū (1040–1044)",\r
-                    "Kantoku (1044–1046)",\r
-                    "Eishō (1046–1053)",\r
-                    "Tengi (1053–1058)",\r
-                    "Kōhei (1058–1065)",\r
-                    "Jiryaku (1065–1069)",\r
-                    "Enkyū (1069–1074)",\r
-                    "Shōho (1074–1077)",\r
-                    "Shōryaku (1077–1081)",\r
-                    "Eihō (1081–1084)",\r
-                    "Ōtoku (1084–1087)",\r
-                    "Kanji (1087–1094)",\r
-                    "Kahō (1094–1096)",\r
-                    "Eichō (1096–1097)",\r
-                    "Jōtoku (1097–1099)",\r
-                    "Kōwa (1099–1104)",\r
-                    "Chōji (1104–1106)",\r
-                    "Kashō (1106–1108)",\r
-                    "Tennin (1108–1110)",\r
-                    "Ten-ei (1110-1113)",\r
-                    "Eikyū (1113–1118)",\r
-                    "Gen’ei (1118–1120)",\r
-                    "Hōan (1120–1124)",\r
-                    "Tenji (1124–1126)",\r
-                    "Daiji (1126–1131)",\r
-                    "Tenshō (1131–1132)",\r
-                    "Chōshō (1132–1135)",\r
-                    "Hōen (1135–1141)",\r
-                    "Eiji (1141–1142)",\r
-                    "Kōji (1142–1144)",\r
-                    "Ten’yō (1144–1145)",\r
-                    "Kyūan (1145–1151)",\r
-                    "Ninpei (1151–1154)",\r
-                    "Kyūju (1154–1156)",\r
-                    "Hōgen (1156–1159)",\r
-                    "Heiji (1159–1160)",\r
-                    "Eiryaku (1160–1161)",\r
-                    "Ōho (1161–1163)",\r
-                    "Chōkan (1163–1165)",\r
-                    "Eiman (1165–1166)",\r
-                    "Nin’an (1166–1169)",\r
-                    "Kaō (1169–1171)",\r
-                    "Shōan (1171–1175)",\r
-                    "Angen (1175–1177)",\r
-                    "Jishō (1177–1181)",\r
-                    "Yōwa (1181–1182)",\r
-                    "Juei (1182–1184)",\r
-                    "Genryaku (1184–1185)",\r
-                    "Bunji (1185–1190)",\r
-                    "Kenkyū (1190–1199)",\r
-                    "Shōji (1199–1201)",\r
-                    "Kennin (1201–1204)",\r
-                    "Genkyū (1204–1206)",\r
-                    "Ken’ei (1206–1207)",\r
-                    "Jōgen (1207–1211)",\r
-                    "Kenryaku (1211–1213)",\r
-                    "Kenpō (1213–1219)",\r
-                    "Jōkyū (1219–1222)",\r
-                    "Jōō (1222–1224)",\r
-                    "Gennin (1224–1225)",\r
-                    "Karoku (1225–1227)",\r
-                    "Antei (1227–1229)",\r
-                    "Kanki (1229–1232)",\r
-                    "Jōei (1232–1233)",\r
-                    "Tenpuku (1233–1234)",\r
-                    "Bunryaku (1234–1235)",\r
-                    "Katei (1235–1238)",\r
-                    "Ryakunin (1238–1239)",\r
-                    "En’ō (1239–1240)",\r
-                    "Ninji (1240–1243)",\r
-                    "Kangen (1243–1247)",\r
-                    "Hōji (1247–1249)",\r
-                    "Kenchō (1249–1256)",\r
-                    "Kōgen (1256–1257)",\r
-                    "Shōka (1257–1259)",\r
-                    "Shōgen (1259–1260)",\r
-                    "Bun’ō (1260–1261)",\r
-                    "Kōchō (1261–1264)",\r
-                    "Bun’ei (1264–1275)",\r
-                    "Kenji (1275–1278)",\r
-                    "Kōan (1278–1288)",\r
-                    "Shōō (1288–1293)",\r
-                    "Einin (1293–1299)",\r
-                    "Shōan (1299–1302)",\r
-                    "Kengen (1302–1303)",\r
-                    "Kagen (1303–1306)",\r
-                    "Tokuji (1306–1308)",\r
-                    "Enkyō (1308–1311)",\r
-                    "Ōchō (1311–1312)",\r
-                    "Shōwa (1312–1317)",\r
-                    "Bunpō (1317–1319)",\r
-                    "Genō (1319–1321)",\r
-                    "Genkō (1321–1324)",\r
-                    "Shōchū (1324–1326)",\r
-                    "Karyaku (1326–1329)",\r
-                    "Gentoku (1329–1331)",\r
-                    "Genkō (1331–1334)",\r
-                    "Kenmu (1334–1336)",\r
-                    "Engen (1336–1340)",\r
-                    "Kōkoku (1340–1346)",\r
-                    "Shōhei (1346–1370)",\r
-                    "Kentoku (1370–1372)",\r
-                    "Bunchū (1372–1375)",\r
-                    "Tenju (1375–1379)",\r
-                    "Kōryaku (1379–1381)",\r
-                    "Kōwa (1381–1384)",\r
-                    "Genchū (1384–1392)",\r
-                    "Meitoku (1384–1387)",\r
-                    "Kakei (1387–1389)",\r
-                    "Kōō (1389–1390)",\r
-                    "Meitoku (1390–1394)",\r
-                    "Ōei (1394–1428)",\r
-                    "Shōchō (1428–1429)",\r
-                    "Eikyō (1429–1441)",\r
-                    "Kakitsu (1441–1444)",\r
-                    "Bun’an (1444–1449)",\r
-                    "Hōtoku (1449–1452)",\r
-                    "Kyōtoku (1452–1455)",\r
-                    "Kōshō (1455–1457)",\r
-                    "Chōroku (1457–1460)",\r
-                    "Kanshō (1460–1466)",\r
-                    "Bunshō (1466–1467)",\r
-                    "Ōnin (1467–1469)",\r
-                    "Bunmei (1469–1487)",\r
-                    "Chōkyō (1487–1489)",\r
-                    "Entoku (1489–1492)",\r
-                    "Meiō (1492–1501)",\r
-                    "Bunki (1501–1504)",\r
-                    "Eishō (1504–1521)",\r
-                    "Taiei (1521–1528)",\r
-                    "Kyōroku (1528–1532)",\r
-                    "Tenbun (1532–1555)",\r
-                    "Kōji (1555–1558)",\r
-                    "Eiroku (1558–1570)",\r
-                    "Genki (1570–1573)",\r
-                    "Tenshō (1573–1592)",\r
-                    "Bunroku (1592–1596)",\r
-                    "Keichō (1596–1615)",\r
-                    "Genna (1615–1624)",\r
-                    "Kan’ei (1624–1644)",\r
-                    "Shōho (1644–1648)",\r
-                    "Keian (1648–1652)",\r
-                    "Jōō (1652–1655)",\r
-                    "Meireki (1655–1658)",\r
-                    "Manji (1658–1661)",\r
-                    "Kanbun (1661–1673)",\r
-                    "Enpō (1673–1681)",\r
-                    "Tenna (1681–1684)",\r
-                    "Jōkyō (1684–1688)",\r
-                    "Genroku (1688–1704)",\r
-                    "Hōei (1704–1711)",\r
-                    "Shōtoku (1711–1716)",\r
-                    "Kyōhō (1716–1736)",\r
-                    "Genbun (1736–1741)",\r
-                    "Kanpō (1741–1744)",\r
-                    "Enkyō (1744–1748)",\r
-                    "Kan’en (1748–1751)",\r
-                    "Hōreki (1751–1764)",\r
-                    "Meiwa (1764–1772)",\r
-                    "An’ei (1772–1781)",\r
-                    "Tenmei (1781–1789)",\r
-                    "Kansei (1789–1801)",\r
-                    "Kyōwa (1801–1804)",\r
-                    "Bunka (1804–1818)",\r
-                    "Bunsei (1818–1830)",\r
-                    "Tenpō (1830–1844)",\r
-                    "Kōka (1844–1848)",\r
-                    "Kaei (1848–1854)",\r
-                    "Ansei (1854–1860)",\r
-                    "Man’en (1860–1861)",\r
-                    "Bunkyū (1861–1864)",\r
-                    "Genji (1864–1865)",\r
-                    "Keiō (1865–1868)",\r
-                    "Meiji",\r
-                    "Taishō",\r
-                    "Shōwa",\r
-                    "Heisei",\r
-                    "Reiwa",\r
-                }\r
-                narrow{\r
-                    "Taika (645–650)",\r
-                    "Hakuchi (650–671)",\r
-                    "Hakuhō (672–686)",\r
-                    "Shuchō (686–701)",\r
-                    "Taihō (701–704)",\r
-                    "Keiun (704–708)",\r
-                    "Wadō (708–715)",\r
-                    "Reiki (715–717)",\r
-                    "Yōrō (717–724)",\r
-                    "Jinki (724–729)",\r
-                    "Tenpyō (729–749)",\r
-                    "Tenpyō-kampō (749–749)",\r
-                    "Tenpyō-shōhō (749–757)",\r
-                    "Tenpyō-hōji (757–765)",\r
-                    "Tenpyō-jingo (765–767)",\r
-                    "Jingo-keiun (767–770)",\r
-                    "Hōki (770–780)",\r
-                    "Ten-ō (781–782)",\r
-                    "Enryaku (782–806)",\r
-                    "Daidō (806–810)",\r
-                    "Kōnin (810–824)",\r
-                    "Tenchō (824–834)",\r
-                    "Jōwa (834–848)",\r
-                    "Kajō (848–851)",\r
-                    "Ninju (851–854)",\r
-                    "Saikō (854–857)",\r
-                    "Ten-an (857–859)",\r
-                    "Jōgan (859–877)",\r
-                    "Gangyō (877–885)",\r
-                    "Ninna (885–889)",\r
-                    "Kanpyō (889–898)",\r
-                    "Shōtai (898–901)",\r
-                    "Engi (901–923)",\r
-                    "Enchō (923–931)",\r
-                    "Jōhei (931–938)",\r
-                    "Tengyō (938–947)",\r
-                    "Tenryaku (947–957)",\r
-                    "Tentoku (957–961)",\r
-                    "Ōwa (961–964)",\r
-                    "Kōhō (964–968)",\r
-                    "Anna (968–970)",\r
-                    "Tenroku (970–973)",\r
-                    "Ten’en (973–976)",\r
-                    "Jōgen (976–978)",\r
-                    "Tengen (978–983)",\r
-                    "Eikan (983–985)",\r
-                    "Kanna (985–987)",\r
-                    "Eien (987–989)",\r
-                    "Eiso (989–990)",\r
-                    "Shōryaku (990–995)",\r
-                    "Chōtoku (995–999)",\r
-                    "Chōhō (999–1004)",\r
-                    "Kankō (1004–1012)",\r
-                    "Chōwa (1012–1017)",\r
-                    "Kannin (1017–1021)",\r
-                    "Jian (1021–1024)",\r
-                    "Manju (1024–1028)",\r
-                    "Chōgen (1028–1037)",\r
-                    "Chōryaku (1037–1040)",\r
-                    "Chōkyū (1040–1044)",\r
-                    "Kantoku (1044–1046)",\r
-                    "Eishō (1046–1053)",\r
-                    "Tengi (1053–1058)",\r
-                    "Kōhei (1058–1065)",\r
-                    "Jiryaku (1065–1069)",\r
-                    "Enkyū (1069–1074)",\r
-                    "Shōho (1074–1077)",\r
-                    "Shōryaku (1077–1081)",\r
-                    "Eihō (1081–1084)",\r
-                    "Ōtoku (1084–1087)",\r
-                    "Kanji (1087–1094)",\r
-                    "Kahō (1094–1096)",\r
-                    "Eichō (1096–1097)",\r
-                    "Jōtoku (1097–1099)",\r
-                    "Kōwa (1099–1104)",\r
-                    "Chōji (1104–1106)",\r
-                    "Kashō (1106–1108)",\r
-                    "Tennin (1108–1110)",\r
-                    "Ten-ei (1110–1113)",\r
-                    "Eikyū (1113–1118)",\r
-                    "Gen’ei (1118–1120)",\r
-                    "Hōan (1120–1124)",\r
-                    "Tenji (1124–1126)",\r
-                    "Daiji (1126–1131)",\r
-                    "Tenshō (1131–1132)",\r
-                    "Chōshō (1132–1135)",\r
-                    "Hōen (1135–1141)",\r
-                    "Eiji (1141–1142)",\r
-                    "Kōji (1142–1144)",\r
-                    "Ten’yō (1144–1145)",\r
-                    "Kyūan (1145–1151)",\r
-                    "Ninpei (1151–1154)",\r
-                    "Kyūju (1154–1156)",\r
-                    "Hōgen (1156–1159)",\r
-                    "Heiji (1159–1160)",\r
-                    "Eiryaku (1160–1161)",\r
-                    "Ōho (1161–1163)",\r
-                    "Chōkan (1163–1165)",\r
-                    "Eiman (1165–1166)",\r
-                    "Nin’an (1166–1169)",\r
-                    "Kaō (1169–1171)",\r
-                    "Shōan (1171–1175)",\r
-                    "Angen (1175–1177)",\r
-                    "Jishō (1177–1181)",\r
-                    "Yōwa (1181–1182)",\r
-                    "Juei (1182–1184)",\r
-                    "Genryaku (1184–1185)",\r
-                    "Bunji (1185–1190)",\r
-                    "Kenkyū (1190–1199)",\r
-                    "Shōji (1199–1201)",\r
-                    "Kennin (1201–1204)",\r
-                    "Genkyū (1204–1206)",\r
-                    "Ken’ei (1206–1207)",\r
-                    "Jōgen (1207–1211)",\r
-                    "Kenryaku (1211–1213)",\r
-                    "Kenpō (1213–1219)",\r
-                    "Jōkyū (1219–1222)",\r
-                    "Jōō (1222–1224)",\r
-                    "Gennin (1224–1225)",\r
-                    "Karoku (1225–1227)",\r
-                    "Antei (1227–1229)",\r
-                    "Kanki (1229–1232)",\r
-                    "Jōei (1232–1233)",\r
-                    "Tenpuku (1233–1234)",\r
-                    "Bunryaku (1234–1235)",\r
-                    "Katei (1235–1238)",\r
-                    "Ryakunin (1238–1239)",\r
-                    "En’ō (1239–1240)",\r
-                    "Ninji (1240–1243)",\r
-                    "Kangen (1243–1247)",\r
-                    "Hōji (1247–1249)",\r
-                    "Kenchō (1249–1256)",\r
-                    "Kōgen (1256–1257)",\r
-                    "Shōka (1257–1259)",\r
-                    "Shōgen (1259–1260)",\r
-                    "Bun’ō (1260–1261)",\r
-                    "Kōchō (1261–1264)",\r
-                    "Bun’ei (1264–1275)",\r
-                    "Kenji (1275–1278)",\r
-                    "Kōan (1278–1288)",\r
-                    "Shōō (1288–1293)",\r
-                    "Einin (1293–1299)",\r
-                    "Shōan (1299–1302)",\r
-                    "Kengen (1302–1303)",\r
-                    "Kagen (1303–1306)",\r
-                    "Tokuji (1306–1308)",\r
-                    "Enkyō (1308–1311)",\r
-                    "Ōchō (1311–1312)",\r
-                    "Shōwa (1312–1317)",\r
-                    "Bunpō (1317–1319)",\r
-                    "Genō (1319–1321)",\r
-                    "Genkō (1321–1324)",\r
-                    "Shōchū (1324–1326)",\r
-                    "Karyaku (1326–1329)",\r
-                    "Gentoku (1329–1331)",\r
-                    "Genkō (1331–1334)",\r
-                    "Kenmu (1334–1336)",\r
-                    "Engen (1336–1340)",\r
-                    "Kōkoku (1340–1346)",\r
-                    "Shōhei (1346–1370)",\r
-                    "Kentoku (1370–1372)",\r
-                    "Bunchū (1372–1375)",\r
-                    "Tenju (1375–1379)",\r
-                    "Kōryaku (1379–1381)",\r
-                    "Kōwa (1381–1384)",\r
-                    "Genchū (1384–1392)",\r
-                    "Meitoku (1384–1387)",\r
-                    "Kakei (1387–1389)",\r
-                    "Kōō (1389–1390)",\r
-                    "Meitoku (1390–1394)",\r
-                    "Ōei (1394–1428)",\r
-                    "Shōchō (1428–1429)",\r
-                    "Eikyō (1429–1441)",\r
-                    "Kakitsu (1441–1444)",\r
-                    "Bun’an (1444–1449)",\r
-                    "Hōtoku (1449–1452)",\r
-                    "Kyōtoku (1452–1455)",\r
-                    "Kōshō (1455–1457)",\r
-                    "Chōroku (1457–1460)",\r
-                    "Kanshō (1460–1466)",\r
-                    "Bunshō (1466–1467)",\r
-                    "Ōnin (1467–1469)",\r
-                    "Bunmei (1469–1487)",\r
-                    "Chōkyō (1487–1489)",\r
-                    "Entoku (1489–1492)",\r
-                    "Meiō (1492–1501)",\r
-                    "Bunki (1501–1504)",\r
-                    "Eishō (1504–1521)",\r
-                    "Taiei (1521–1528)",\r
-                    "Kyōroku (1528–1532)",\r
-                    "Tenbun (1532–1555)",\r
-                    "Kōji (1555–1558)",\r
-                    "Eiroku (1558–1570)",\r
-                    "Genki (1570–1573)",\r
-                    "Tenshō (1573–1592)",\r
-                    "Bunroku (1592–1596)",\r
-                    "Keichō (1596–1615)",\r
-                    "Genna (1615–1624)",\r
-                    "Kan’ei (1624–1644)",\r
-                    "Shōho (1644–1648)",\r
-                    "Keian (1648–1652)",\r
-                    "Jōō (1652–1655)",\r
-                    "Meireki (1655–1658)",\r
-                    "Manji (1658–1661)",\r
-                    "Kanbun (1661–1673)",\r
-                    "Enpō (1673–1681)",\r
-                    "Tenna (1681–1684)",\r
-                    "Jōkyō (1684–1688)",\r
-                    "Genroku (1688–1704)",\r
-                    "Hōei (1704–1711)",\r
-                    "Shōtoku (1711–1716)",\r
-                    "Kyōhō (1716–1736)",\r
-                    "Genbun (1736–1741)",\r
-                    "Kanpō (1741–1744)",\r
-                    "Enkyō (1744–1748)",\r
-                    "Kan’en (1748–1751)",\r
-                    "Hōreki (1751–1764)",\r
-                    "Meiwa (1764–1772)",\r
-                    "An’ei (1772–1781)",\r
-                    "Tenmei (1781–1789)",\r
-                    "Kansei (1789–1801)",\r
-                    "Kyōwa (1801–1804)",\r
-                    "Bunka (1804–1818)",\r
-                    "Bunsei (1818–1830)",\r
-                    "Tenpō (1830–1844)",\r
-                    "Kōka (1844–1848)",\r
-                    "Kaei (1848–1854)",\r
-                    "Ansei (1854–1860)",\r
-                    "Man’en (1860–1861)",\r
-                    "Bunkyū (1861–1864)",\r
-                    "Genji (1864–1865)",\r
-                    "Keiō (1865–1868)",\r
-                    "M",\r
-                    "T",\r
-                    "S",\r
-                    "H",\r
-                    "R",\r
-                }\r
-                wide{\r
-                    "Taika (645–650)",\r
-                    "Hakuchi (650–671)",\r
-                    "Hakuhō (672–686)",\r
-                    "Shuchō (686–701)",\r
-                    "Taihō (701–704)",\r
-                    "Keiun (704–708)",\r
-                    "Wadō (708–715)",\r
-                    "Reiki (715–717)",\r
-                    "Yōrō (717–724)",\r
-                    "Jinki (724–729)",\r
-                    "Tenpyō (729–749)",\r
-                    "Tenpyō-kampō (749-749)",\r
-                    "Tenpyō-shōhō (749-757)",\r
-                    "Tenpyō-hōji (757-765)",\r
-                    "Tenpyō-jingo (765-767)",\r
-                    "Jingo-keiun (767-770)",\r
-                    "Hōki (770–780)",\r
-                    "Ten-ō (781-782)",\r
-                    "Enryaku (782–806)",\r
-                    "Daidō (806–810)",\r
-                    "Kōnin (810–824)",\r
-                    "Tenchō (824–834)",\r
-                    "Jōwa (834–848)",\r
-                    "Kajō (848–851)",\r
-                    "Ninju (851–854)",\r
-                    "Saikō (854–857)",\r
-                    "Ten-an (857-859)",\r
-                    "Jōgan (859–877)",\r
-                    "Gangyō (877–885)",\r
-                    "Ninna (885–889)",\r
-                    "Kanpyō (889–898)",\r
-                    "Shōtai (898–901)",\r
-                    "Engi (901–923)",\r
-                    "Enchō (923–931)",\r
-                    "Jōhei (931–938)",\r
-                    "Tengyō (938–947)",\r
-                    "Tenryaku (947–957)",\r
-                    "Tentoku (957–961)",\r
-                    "Ōwa (961–964)",\r
-                    "Kōhō (964–968)",\r
-                    "Anna (968–970)",\r
-                    "Tenroku (970–973)",\r
-                    "Ten’en (973–976)",\r
-                    "Jōgen (976–978)",\r
-                    "Tengen (978–983)",\r
-                    "Eikan (983–985)",\r
-                    "Kanna (985–987)",\r
-                    "Eien (987–989)",\r
-                    "Eiso (989–990)",\r
-                    "Shōryaku (990–995)",\r
-                    "Chōtoku (995–999)",\r
-                    "Chōhō (999–1004)",\r
-                    "Kankō (1004–1012)",\r
-                    "Chōwa (1012–1017)",\r
-                    "Kannin (1017–1021)",\r
-                    "Jian (1021–1024)",\r
-                    "Manju (1024–1028)",\r
-                    "Chōgen (1028–1037)",\r
-                    "Chōryaku (1037–1040)",\r
-                    "Chōkyū (1040–1044)",\r
-                    "Kantoku (1044–1046)",\r
-                    "Eishō (1046–1053)",\r
-                    "Tengi (1053–1058)",\r
-                    "Kōhei (1058–1065)",\r
-                    "Jiryaku (1065–1069)",\r
-                    "Enkyū (1069–1074)",\r
-                    "Shōho (1074–1077)",\r
-                    "Shōryaku (1077–1081)",\r
-                    "Eihō (1081–1084)",\r
-                    "Ōtoku (1084–1087)",\r
-                    "Kanji (1087–1094)",\r
-                    "Kahō (1094–1096)",\r
-                    "Eichō (1096–1097)",\r
-                    "Jōtoku (1097–1099)",\r
-                    "Kōwa (1099–1104)",\r
-                    "Chōji (1104–1106)",\r
-                    "Kashō (1106–1108)",\r
-                    "Tennin (1108–1110)",\r
-                    "Ten-ei (1110-1113)",\r
-                    "Eikyū (1113–1118)",\r
-                    "Gen’ei (1118–1120)",\r
-                    "Hōan (1120–1124)",\r
-                    "Tenji (1124–1126)",\r
-                    "Daiji (1126–1131)",\r
-                    "Tenshō (1131–1132)",\r
-                    "Chōshō (1132–1135)",\r
-                    "Hōen (1135–1141)",\r
-                    "Eiji (1141–1142)",\r
-                    "Kōji (1142–1144)",\r
-                    "Ten’yō (1144–1145)",\r
-                    "Kyūan (1145–1151)",\r
-                    "Ninpei (1151–1154)",\r
-                    "Kyūju (1154–1156)",\r
-                    "Hōgen (1156–1159)",\r
-                    "Heiji (1159–1160)",\r
-                    "Eiryaku (1160–1161)",\r
-                    "Ōho (1161–1163)",\r
-                    "Chōkan (1163–1165)",\r
-                    "Eiman (1165–1166)",\r
-                    "Nin’an (1166–1169)",\r
-                    "Kaō (1169–1171)",\r
-                    "Shōan (1171–1175)",\r
-                    "Angen (1175–1177)",\r
-                    "Jishō (1177–1181)",\r
-                    "Yōwa (1181–1182)",\r
-                    "Juei (1182–1184)",\r
-                    "Genryaku (1184–1185)",\r
-                    "Bunji (1185–1190)",\r
-                    "Kenkyū (1190–1199)",\r
-                    "Shōji (1199–1201)",\r
-                    "Kennin (1201–1204)",\r
-                    "Genkyū (1204–1206)",\r
-                    "Ken’ei (1206–1207)",\r
-                    "Jōgen (1207–1211)",\r
-                    "Kenryaku (1211–1213)",\r
-                    "Kenpō (1213–1219)",\r
-                    "Jōkyū (1219–1222)",\r
-                    "Jōō (1222–1224)",\r
-                    "Gennin (1224–1225)",\r
-                    "Karoku (1225–1227)",\r
-                    "Antei (1227–1229)",\r
-                    "Kanki (1229–1232)",\r
-                    "Jōei (1232–1233)",\r
-                    "Tenpuku (1233–1234)",\r
-                    "Bunryaku (1234–1235)",\r
-                    "Katei (1235–1238)",\r
-                    "Ryakunin (1238–1239)",\r
-                    "En’ō (1239–1240)",\r
-                    "Ninji (1240–1243)",\r
-                    "Kangen (1243–1247)",\r
-                    "Hōji (1247–1249)",\r
-                    "Kenchō (1249–1256)",\r
-                    "Kōgen (1256–1257)",\r
-                    "Shōka (1257–1259)",\r
-                    "Shōgen (1259–1260)",\r
-                    "Bun’ō (1260–1261)",\r
-                    "Kōchō (1261–1264)",\r
-                    "Bun’ei (1264–1275)",\r
-                    "Kenji (1275–1278)",\r
-                    "Kōan (1278–1288)",\r
-                    "Shōō (1288–1293)",\r
-                    "Einin (1293–1299)",\r
-                    "Shōan (1299–1302)",\r
-                    "Kengen (1302–1303)",\r
-                    "Kagen (1303–1306)",\r
-                    "Tokuji (1306–1308)",\r
-                    "Enkyō (1308–1311)",\r
-                    "Ōchō (1311–1312)",\r
-                    "Shōwa (1312–1317)",\r
-                    "Bunpō (1317–1319)",\r
-                    "Genō (1319–1321)",\r
-                    "Genkō (1321–1324)",\r
-                    "Shōchū (1324–1326)",\r
-                    "Karyaku (1326–1329)",\r
-                    "Gentoku (1329–1331)",\r
-                    "Genkō (1331–1334)",\r
-                    "Kenmu (1334–1336)",\r
-                    "Engen (1336–1340)",\r
-                    "Kōkoku (1340–1346)",\r
-                    "Shōhei (1346–1370)",\r
-                    "Kentoku (1370–1372)",\r
-                    "Bunchū (1372–1375)",\r
-                    "Tenju (1375–1379)",\r
-                    "Kōryaku (1379–1381)",\r
-                    "Kōwa (1381–1384)",\r
-                    "Genchū (1384–1392)",\r
-                    "Meitoku (1384–1387)",\r
-                    "Kakei (1387–1389)",\r
-                    "Kōō (1389–1390)",\r
-                    "Meitoku (1390–1394)",\r
-                    "Ōei (1394–1428)",\r
-                    "Shōchō (1428–1429)",\r
-                    "Eikyō (1429–1441)",\r
-                    "Kakitsu (1441–1444)",\r
-                    "Bun’an (1444–1449)",\r
-                    "Hōtoku (1449–1452)",\r
-                    "Kyōtoku (1452–1455)",\r
-                    "Kōshō (1455–1457)",\r
-                    "Chōroku (1457–1460)",\r
-                    "Kanshō (1460–1466)",\r
-                    "Bunshō (1466–1467)",\r
-                    "Ōnin (1467–1469)",\r
-                    "Bunmei (1469–1487)",\r
-                    "Chōkyō (1487–1489)",\r
-                    "Entoku (1489–1492)",\r
-                    "Meiō (1492–1501)",\r
-                    "Bunki (1501–1504)",\r
-                    "Eishō (1504–1521)",\r
-                    "Taiei (1521–1528)",\r
-                    "Kyōroku (1528–1532)",\r
-                    "Tenbun (1532–1555)",\r
-                    "Kōji (1555–1558)",\r
-                    "Eiroku (1558–1570)",\r
-                    "Genki (1570–1573)",\r
-                    "Tenshō (1573–1592)",\r
-                    "Bunroku (1592–1596)",\r
-                    "Keichō (1596–1615)",\r
-                    "Genna (1615–1624)",\r
-                    "Kan’ei (1624–1644)",\r
-                    "Shōho (1644–1648)",\r
-                    "Keian (1648–1652)",\r
-                    "Jōō (1652–1655)",\r
-                    "Meireki (1655–1658)",\r
-                    "Manji (1658–1661)",\r
-                    "Kanbun (1661–1673)",\r
-                    "Enpō (1673–1681)",\r
-                    "Tenna (1681–1684)",\r
-                    "Jōkyō (1684–1688)",\r
-                    "Genroku (1688–1704)",\r
-                    "Hōei (1704–1711)",\r
-                    "Shōtoku (1711–1716)",\r
-                    "Kyōhō (1716–1736)",\r
-                    "Genbun (1736–1741)",\r
-                    "Kanpō (1741–1744)",\r
-                    "Enkyō (1744–1748)",\r
-                    "Kan’en (1748–1751)",\r
-                    "Hōreki (1751–1764)",\r
-                    "Meiwa (1764–1772)",\r
-                    "An’ei (1772–1781)",\r
-                    "Tenmei (1781–1789)",\r
-                    "Kansei (1789–1801)",\r
-                    "Kyōwa (1801–1804)",\r
-                    "Bunka (1804–1818)",\r
-                    "Bunsei (1818–1830)",\r
-                    "Tenpō (1830–1844)",\r
-                    "Kōka (1844–1848)",\r
-                    "Kaei (1848–1854)",\r
-                    "Ansei (1854–1860)",\r
-                    "Man’en (1860–1861)",\r
-                    "Bunkyū (1861–1864)",\r
-                    "Genji (1864–1865)",\r
-                    "Keiō (1865–1868)",\r
-                    "Meiji",\r
-                    "Taishō",\r
-                    "Shōwa",\r
-                    "Heisei",\r
-                    "Reiwa",\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E d.M.–E d.M."}\r
-                    d{"E d.M.–E d.M."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"d.M.–d.M."}\r
-                    d{"d.M.–d.M."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    h{"h–h a"}\r
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
-                yM{\r
-                    M{"M.y–M.y G"}\r
-                    y{"M.y–M.y G"}\r
-                }\r
-                yMEd{\r
-                    M{"E d.M.y–E d.M.y G"}\r
-                    d{"E d.M.y–E d.M.y G"}\r
-                    y{"E d.M.y–E d.M.y G"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                yMd{\r
-                    M{"d.M.y–d.M.y G"}\r
-                    d{"d.M.y–d.M.y G"}\r
-                    y{"d.M.y–d.M.y G"}\r
-                }\r
-            }\r
-        }\r
-        persian{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y G",\r
-                "d. MMMM y G",\r
-                "d. MMM y G",\r
-                "d.M.y G",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                GyMMMEd{"E d. MMM y G"}\r
-                GyMMMd{"d. MMM y G"}\r
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
-            eras{\r
-                abbreviated{\r
-                    "AP",\r
-                }\r
-                narrow{\r
-                    "AP",\r
-                }\r
-                wide{\r
-                    "AP",\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E d.M.–E d.M."}\r
-                    d{"E d.M.–E d.M."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"d.M.–d.M."}\r
-                    d{"d.M.–d.M."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    h{"h–h a"}\r
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
-                yM{\r
-                    M{"M.y–M.y G"}\r
-                    y{"M.y–M.y G"}\r
-                }\r
-                yMEd{\r
-                    M{"E d.M.y–E d.M.y G"}\r
-                    d{"E d.M.y–E d.M.y G"}\r
-                    y{"E d.M.y–E d.M.y G"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                yMd{\r
-                    M{"d.M.y–d.M.y G"}\r
-                    d{"d.M.y–d.M.y G"}\r
-                    y{"d.M.y–d.M.y G"}\r
-                }\r
-            }\r
-            monthNames{\r
-                format{\r
-                    abbreviated{\r
-                        "farvardin",\r
-                        "ordibehesht",\r
-                        "khordad",\r
-                        "tir",\r
-                        "mordad",\r
-                        "shahrivar",\r
-                        "mehr",\r
-                        "aban",\r
-                        "azar",\r
-                        "dey",\r
-                        "bahman",\r
-                        "esfand",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "farvardin",\r
-                        "ordibehesht",\r
-                        "khordad",\r
-                        "tir",\r
-                        "mordad",\r
-                        "shahrivar",\r
-                        "mehr",\r
-                        "aban",\r
-                        "azar",\r
-                        "dey",\r
-                        "bahman",\r
-                        "esfand",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "farvardin",\r
-                        "ordibehesht",\r
-                        "khordad",\r
-                        "tir",\r
-                        "mordad",\r
-                        "shahrivar",\r
-                        "mehr",\r
-                        "aban",\r
-                        "azar",\r
-                        "dey",\r
-                        "bahman",\r
-                        "esfand",\r
-                    }\r
-                    narrow{\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
-                    }\r
-                    wide{\r
-                        "farvardin",\r
-                        "ordibehesht",\r
-                        "khordad",\r
-                        "tir",\r
-                        "mordad",\r
-                        "shahrivar",\r
-                        "mehr",\r
-                        "aban",\r
-                        "azar",\r
-                        "dey",\r
-                        "bahman",\r
-                        "esfand",\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        roc{\r
-            DateTimePatterns{\r
-                "HH:mm:ss zzzz",\r
-                "HH:mm:ss z",\r
-                "HH:mm:ss",\r
-                "HH:mm",\r
-                "EEEE d. MMMM y G",\r
-                "d. MMMM y G",\r
-                "d. MMM y G",\r
-                "d.M.y G",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-                "{1} {0}",\r
-            }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                GyMMMEd{"E d. MMM y G"}\r
-                GyMMMd{"d. MMM y G"}\r
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
-            eras{\r
-                abbreviated{\r
-                    "Før ROC",\r
-                    "Minguo",\r
-                }\r
-                narrow{\r
-                    "Før ROC",\r
-                    "Minguo",\r
-                }\r
-                wide{\r
-                    "Før R.O.C.",\r
-                    "Minguo",\r
-                }\r
-            }\r
-            intervalFormats{\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E d.M.–E d.M."}\r
-                    d{"E d.M.–E d.M."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d. MMM–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
-                Md{\r
-                    M{"d.M.–d.M."}\r
-                    d{"d.M.–d.M."}\r
-                }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
-                fallback{"{0}–{1}"}\r
-                h{\r
-                    a{"h a–h a"}\r
-                    h{"h–h a"}\r
-                }\r
-                hv{\r
-                    a{"h a–h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
-                yM{\r
-                    M{"M.y–M.y G"}\r
-                    y{"M.y–M.y G"}\r
-                }\r
-                yMEd{\r
-                    M{"E d.M.y–E d.M.y G"}\r
-                    d{"E d.M.y–E d.M.y G"}\r
-                    y{"E d.M.y–E d.M.y G"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                yMd{\r
-                    M{"d.M.y–d.M.y G"}\r
-                    d{"d.M.y–d.M.y G"}\r
-                    y{"d.M.y–d.M.y G"}\r
-                }\r
-            }\r
-        }\r
-    }\r
-    characterLabel{\r
-        activities{"aktiviteter"}\r
-        african_scripts{"afrikanske skriftsystemer"}\r
-        american_scripts{"amerikanske skriftsystemer"}\r
-        animal{"dyr"}\r
-        animals_nature{"dyr og natur"}\r
-        arrows{"piler"}\r
-        body{"kropp"}\r
-        box_drawing{"rutetegning"}\r
-        braille{"punktskrift"}\r
-        building{"bygning"}\r
-        bullets_stars{"punkttegn/stjerner"}\r
-        consonantal_jamo{"konsonantal jamo"}\r
-        currency_symbols{"valutasymboler"}\r
-        dash_connector{"tankestrek/bindetegn"}\r
-        digits{"sifre"}\r
-        dingbats{"dingbats"}\r
-        divination_symbols{"spådomssymboler"}\r
-        downwards_arrows{"piler som peker nedover"}\r
-        downwards_upwards_arrows{"piler som peker nedover og oppover"}\r
-        east_asian_scripts{"østasiatiske skriftsystemer"}\r
-        emoji{"emoji"}\r
-        european_scripts{"europeiske skriftsystemer"}\r
-        female{"kvinnelig"}\r
-        flag{"flagg"}\r
-        flags{"flagg"}\r
-        food_drink{"mat og drikke"}\r
-        format{"format"}\r
-        format_whitespace{"format og mellomrom"}\r
-        full_width_form_variant{"fullbreddeformvarianter"}\r
-        geometric_shapes{"geometriske figurer"}\r
-        half_width_form_variant{"halvbreddeformvarianter"}\r
-        han_characters{"han-tegn"}\r
-        han_radicals{"han-radikaler"}\r
-        hanja{"hanja"}\r
-        hanzi_simplified{"hanzi (forenklet)"}\r
-        hanzi_traditional{"hanzi (tradisjonell)"}\r
-        heart{"hjerte"}\r
-        historic_scripts{"historiske skriftsystemer"}\r
-        ideographic_desc_characters{"ideografiske beskrivende tegn"}\r
-        japanese_kana{"japansk kana"}\r
-        kanbun{"kanbun"}\r
-        kanji{"kanji"}\r
-        keycap{"taster"}\r
-        leftwards_arrows{"piler som peker til venstre"}\r
-        leftwards_rightwards_arrows{"piler som peker til høyre og venstre"}\r
-        letterlike_symbols{"bokstavlignende symboler"}\r
-        limited_use{"begrenset bruk"}\r
-        male{"mannlig"}\r
-        math_symbols{"matematikksymboler"}\r
-        middle_eastern_scripts{"skriftsystemer fra Midtøsten"}\r
-        miscellaneous{"diverse"}\r
-        modern_scripts{"moderne skriftsystemer"}\r
-        modifier{"modifikator"}\r
-        musical_symbols{"musikksymboler"}\r
-        nature{"natur"}\r
-        nonspacing{"uten bredde"}\r
-        numbers{"tall"}\r
-        objects{"objekter"}\r
-        other{"annet"}\r
-        paired{"par"}\r
-        person{"mennesker"}\r
-        phonetic_alphabet{"fonetisk alfabet"}\r
-        pictographs{"piktogrammer"}\r
-        place{"sted"}\r
-        plant{"plante"}\r
-        punctuation{"skilletegn"}\r
-        rightwards_arrows{"piler som peker til høyre"}\r
-        sign_standard_symbols{"tegn/standardsymboler"}\r
-        small_form_variant{"varianter av små tegn"}\r
-        smiley{"smilefjes"}\r
-        smileys_people{"smilefjes og mennesker"}\r
-        south_asian_scripts{"sørasiatiske skriftsystemer"}\r
-        southeast_asian_scripts{"sørøstasiatiske skriftsystemer"}\r
-        spacing{"med bredde"}\r
-        sport{"sport"}\r
-        symbols{"symboler"}\r
-        technical_symbols{"tekniske symboler"}\r
-        tone_marks{"tonemerker"}\r
-        travel{"reise"}\r
-        travel_places{"reise og steder"}\r
-        upwards_arrows{"piler som peker oppover"}\r
-        variant_forms{"varianter"}\r
-        vocalic_jamo{"vokalisk jamo"}\r
-        weather{"vær"}\r
-        western_asian_scripts{"vestasiatiske skriftsymboler"}\r
-        whitespace{"mellomrom"}\r
-    }\r
-    contextTransforms{\r
-        relative:intvector{\r
-            0,\r
-            1,\r
-        }\r
-        typographicNames:intvector{\r
-            1,\r
-            1,\r
-        }\r
-    }\r
-    delimiters{\r
-        alternateQuotationEnd{"’"}\r
-        alternateQuotationStart{"‘"}\r
-        quotationEnd{"»"}\r
-        quotationStart{"«"}\r
-    }\r
-    fields{\r
-        day{\r
-            dn{"dag"}\r
-            relative{\r
-                "-1"{"i går"}\r
-                "-2"{"i forgårs"}\r
-                "0"{"i dag"}\r
-                "1"{"i morgen"}\r
-                "2"{"i overmorgen"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} døgn"}\r
-                    other{"om {0} døgn"}\r
-                }\r
-                past{\r
-                    one{"for {0} døgn siden"}\r
-                    other{"for {0} døgn siden"}\r
-                }\r
-            }\r
-        }\r
-        day-narrow{\r
-            dn{"d."}\r
-            relative{\r
-                "-1"{"i går"}\r
-                "-2"{"-2 d."}\r
-                "0"{"i dag"}\r
-                "1"{"i morgen"}\r
-                "2"{"+2 d."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"+{0} d."}\r
-                    other{"+{0} d."}\r
-                }\r
-                past{\r
-                    one{"-{0} d."}\r
-                    other{"-{0} d."}\r
-                }\r
-            }\r
-        }\r
-        day-short{\r
-            dn{"dag"}\r
-            relative{\r
-                "-1"{"i går"}\r
-                "-2"{"i forgårs"}\r
-                "0"{"i dag"}\r
-                "1"{"i morgen"}\r
-                "2"{"i overmorgen"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} d."}\r
-                    other{"om {0} d."}\r
-                }\r
-                past{\r
-                    one{"for {0} d. siden"}\r
-                    other{"for {0} d. siden"}\r
-                }\r
-            }\r
-        }\r
-        dayOfYear{\r
-            dn{"dag i året"}\r
-        }\r
-        dayOfYear-narrow{\r
-            dn{"d. i året"}\r
-        }\r
-        dayOfYear-short{\r
-            dn{"dag i året"}\r
-        }\r
-        dayperiod{\r
-            dn{"a.m./p.m."}\r
-        }\r
-        dayperiod-narrow{\r
-            dn{"am/pm"}\r
-        }\r
-        dayperiod-short{\r
-            dn{"am/pm"}\r
-        }\r
-        era{\r
-            dn{"tidsalder"}\r
-        }\r
-        era-narrow{\r
-            dn{"tidsalder"}\r
-        }\r
-        era-short{\r
-            dn{"tidsalder"}\r
-        }\r
-        fri{\r
-            relative{\r
-                "-1"{"forrige fredag"}\r
-                "0"{"fredag"}\r
-                "1"{"neste fredag"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} fredag"}\r
-                    other{"om {0} fredager"}\r
-                }\r
-                past{\r
-                    one{"for {0} fredag siden"}\r
-                    other{"for {0} fredager siden"}\r
-                }\r
-            }\r
-        }\r
-        fri-narrow{\r
-            relative{\r
-                "-1"{"sist fr."}\r
-                "0"{"denne fr."}\r
-                "1"{"neste fr."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} fr."}\r
-                    other{"om {0} fr."}\r
-                }\r
-                past{\r
-                    one{"for {0} fr. siden"}\r
-                    other{"for {0} fr. siden"}\r
-                }\r
-            }\r
-        }\r
-        fri-short{\r
-            relative{\r
-                "-1"{"sist fre."}\r
-                "0"{"denne fre."}\r
-                "1"{"neste fre."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} fre."}\r
-                    other{"om {0} fre."}\r
-                }\r
-                past{\r
-                    one{"for {0} fre. siden"}\r
-                    other{"for {0} fre. siden"}\r
-                }\r
-            }\r
-        }\r
-        hour{\r
-            dn{"time"}\r
-            relative{\r
-                "0"{"denne timen"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} time"}\r
-                    other{"om {0} timer"}\r
-                }\r
-                past{\r
-                    one{"for {0} time siden"}\r
-                    other{"for {0} timer siden"}\r
-                }\r
-            }\r
-        }\r
-        hour-narrow{\r
-            dn{"t"}\r
-            relativeTime{\r
-                future{\r
-                    one{"+{0} t"}\r
-                    other{"+{0} t"}\r
-                }\r
-                past{\r
-                    one{"-{0} t"}\r
-                    other{"-{0} t"}\r
-                }\r
-            }\r
-        }\r
-        hour-short{\r
-            dn{"t"}\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} t"}\r
-                    other{"om {0} t"}\r
-                }\r
-                past{\r
-                    one{"for {0} t siden"}\r
-                    other{"for {0} t siden"}\r
-                }\r
-            }\r
-        }\r
-        minute{\r
-            dn{"minutt"}\r
-            relative{\r
-                "0"{"dette minuttet"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} minutt"}\r
-                    other{"om {0} minutter"}\r
-                }\r
-                past{\r
-                    one{"for {0} minutt siden"}\r
-                    other{"for {0} minutter siden"}\r
-                }\r
-            }\r
-        }\r
-        minute-narrow{\r
-            dn{"m"}\r
-            relativeTime{\r
-                future{\r
-                    one{"+{0} min"}\r
-                    other{"+{0} min"}\r
-                }\r
-                past{\r
-                    one{"-{0} min"}\r
-                    other{"-{0} min"}\r
-                }\r
-            }\r
-        }\r
-        minute-short{\r
-            dn{"min"}\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} min"}\r
-                    other{"om {0} min"}\r
-                }\r
-                past{\r
-                    one{"for {0} min siden"}\r
-                    other{"for {0} min siden"}\r
-                }\r
-            }\r
-        }\r
-        mon{\r
-            relative{\r
-                "-1"{"forrige mandag"}\r
-                "0"{"mandag"}\r
-                "1"{"neste mandag"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} mandag"}\r
-                    other{"om {0} mandager"}\r
-                }\r
-                past{\r
-                    one{"for {0} mandag siden"}\r
-                    other{"for {0} mandager siden"}\r
-                }\r
-            }\r
-        }\r
-        mon-narrow{\r
-            relative{\r
-                "-1"{"sist ma."}\r
-                "0"{"denne ma."}\r
-                "1"{"neste ma."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} ma."}\r
-                    other{"om {0} ma."}\r
-                }\r
-                past{\r
-                    one{"for {0} ma. siden"}\r
-                    other{"for {0} ma. siden"}\r
-                }\r
-            }\r
-        }\r
-        mon-short{\r
-            relative{\r
-                "-1"{"sist man."}\r
-                "0"{"denne man."}\r
-                "1"{"neste man."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} man."}\r
-                    other{"om {0} man."}\r
-                }\r
-                past{\r
-                    one{"for {0} man. siden"}\r
-                    other{"for {0} man. siden"}\r
-                }\r
-            }\r
-        }\r
-        month{\r
-            dn{"måned"}\r
-            relative{\r
-                "-1"{"forrige måned"}\r
-                "0"{"denne måneden"}\r
-                "1"{"neste måned"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} måned"}\r
-                    other{"om {0} måneder"}\r
-                }\r
-                past{\r
-                    one{"for {0} måned siden"}\r
-                    other{"for {0} måneder siden"}\r
-                }\r
-            }\r
-        }\r
-        month-narrow{\r
-            dn{"md."}\r
-            relative{\r
-                "-1"{"forrige md."}\r
-                "0"{"denne md."}\r
-                "1"{"neste md."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"+{0} md."}\r
-                    other{"+{0} md."}\r
-                }\r
-                past{\r
-                    one{"-{0} md."}\r
-                    other{"-{0} md."}\r
-                }\r
-            }\r
-        }\r
-        month-short{\r
-            dn{"mnd."}\r
-            relative{\r
-                "-1"{"forrige md."}\r
-                "0"{"denne md."}\r
-                "1"{"neste md."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} md."}\r
-                    other{"om {0} md."}\r
-                }\r
-                past{\r
-                    one{"for {0} md. siden"}\r
-                    other{"for {0} md. siden"}\r
-                }\r
-            }\r
-        }\r
-        quarter{\r
-            dn{"kvartal"}\r
-            relative{\r
-                "-1"{"forrige kvartal"}\r
-                "0"{"dette kvartalet"}\r
-                "1"{"neste kvartal"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} kvartal"}\r
-                    other{"om {0} kvartaler"}\r
-                }\r
-                past{\r
-                    one{"for {0} kvartal siden"}\r
-                    other{"for {0} kvartaler siden"}\r
-                }\r
-            }\r
-        }\r
-        quarter-narrow{\r
-            dn{"kv."}\r
-            relative{\r
-                "-1"{"forrige kv."}\r
-                "0"{"dette kv."}\r
-                "1"{"neste kv."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"+{0} kv."}\r
-                    other{"+{0} kv."}\r
-                }\r
-                past{\r
-                    one{"–{0} kv."}\r
-                    other{"–{0} kv."}\r
-                }\r
-            }\r
-        }\r
-        quarter-short{\r
-            dn{"kv."}\r
-            relative{\r
-                "-1"{"forrige kv."}\r
-                "0"{"dette kv."}\r
-                "1"{"neste kv."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} kv."}\r
-                    other{"om {0} kv."}\r
-                }\r
-                past{\r
-                    one{"for {0} kv. siden"}\r
-                    other{"for {0} kv. siden"}\r
-                }\r
-            }\r
-        }\r
-        sat{\r
-            relative{\r
-                "-1"{"forrige lørdag"}\r
-                "0"{"lørdag"}\r
-                "1"{"neste lørdag"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} lørdag"}\r
-                    other{"om {0} lørdager"}\r
-                }\r
-                past{\r
-                    one{"for {0} lørdag siden"}\r
-                    other{"for {0} lørdager siden"}\r
-                }\r
-            }\r
-        }\r
-        sat-narrow{\r
-            relative{\r
-                "-1"{"sist lø."}\r
-                "0"{"denne lø."}\r
-                "1"{"neste lø."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} lø."}\r
-                    other{"om {0} lø."}\r
-                }\r
-                past{\r
-                    one{"for {0} lø. siden"}\r
-                    other{"for {0} lø. siden"}\r
-                }\r
-            }\r
-        }\r
-        sat-short{\r
-            relative{\r
-                "-1"{"sist lør."}\r
-                "0"{"denne lør."}\r
-                "1"{"neste lør."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} lør."}\r
-                    other{"om {0} lør."}\r
-                }\r
-                past{\r
-                    one{"for {0} lør. siden"}\r
-                    other{"for {0} lør. siden"}\r
-                }\r
-            }\r
-        }\r
-        second{\r
-            dn{"sekund"}\r
-            relative{\r
-                "0"{"nå"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} sekund"}\r
-                    other{"om {0} sekunder"}\r
-                }\r
-                past{\r
-                    one{"for {0} sekund siden"}\r
-                    other{"for {0} sekunder siden"}\r
-                }\r
-            }\r
-        }\r
-        second-narrow{\r
-            dn{"s"}\r
-            relative{\r
-                "0"{"nå"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"+{0} s"}\r
-                    other{"+{0} s"}\r
-                }\r
-                past{\r
-                    one{"-{0} s"}\r
-                    other{"-{0} s"}\r
-                }\r
-            }\r
-        }\r
-        second-short{\r
-            dn{"sek"}\r
-            relative{\r
-                "0"{"nå"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} sek"}\r
-                    other{"om {0} sek"}\r
-                }\r
-                past{\r
-                    one{"for {0} sek siden"}\r
-                    other{"for {0} sek siden"}\r
-                }\r
-            }\r
-        }\r
-        sun{\r
-            relative{\r
-                "-1"{"forrige søndag"}\r
-                "0"{"søndag"}\r
-                "1"{"neste søndag"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} søndag"}\r
-                    other{"om {0} søndager"}\r
-                }\r
-                past{\r
-                    one{"for {0} søndag siden"}\r
-                    other{"for {0} søndager siden"}\r
-                }\r
-            }\r
-        }\r
-        sun-narrow{\r
-            relative{\r
-                "-1"{"sist sø."}\r
-                "0"{"denne sø."}\r
-                "1"{"neste sø."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} sø."}\r
-                    other{"om {0} sø."}\r
-                }\r
-                past{\r
-                    one{"for {0} sø. siden"}\r
-                    other{"for {0} sø. siden"}\r
-                }\r
-            }\r
-        }\r
-        sun-short{\r
-            relative{\r
-                "-1"{"sist søn."}\r
-                "0"{"denne søn."}\r
-                "1"{"neste søn."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} søn."}\r
-                    other{"om {0} søn."}\r
-                }\r
-                past{\r
-                    one{"for {0} søn. siden"}\r
-                    other{"for {0} søn. siden"}\r
-                }\r
-            }\r
-        }\r
-        thu{\r
-            relative{\r
-                "-1"{"forrige torsdag"}\r
-                "0"{"torsdag"}\r
-                "1"{"neste torsdag"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} torsdag"}\r
-                    other{"om {0} torsdager"}\r
-                }\r
-                past{\r
-                    one{"for {0} torsdag siden"}\r
-                    other{"for {0} torsdager siden"}\r
-                }\r
-            }\r
-        }\r
-        thu-narrow{\r
-            relative{\r
-                "-1"{"sist to."}\r
-                "0"{"denne to."}\r
-                "1"{"neste to."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} to."}\r
-                    other{"om {0} to."}\r
-                }\r
-                past{\r
-                    one{"for {0} to. siden"}\r
-                    other{"for {0} to. siden"}\r
-                }\r
-            }\r
-        }\r
-        thu-short{\r
-            relative{\r
-                "-1"{"sist tor."}\r
-                "0"{"denne tor."}\r
-                "1"{"neste tor."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} tor."}\r
-                    other{"om {0} tor."}\r
-                }\r
-                past{\r
-                    one{"for {0} tor. siden"}\r
-                    other{"for {0} tor. siden"}\r
-                }\r
-            }\r
-        }\r
-        tue{\r
-            relative{\r
-                "-1"{"forrige tirsdag"}\r
-                "0"{"tirsdag"}\r
-                "1"{"neste tirsdag"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} tirsdag"}\r
-                    other{"om {0} tirsdager"}\r
-                }\r
-                past{\r
-                    one{"for {0} tirsdag siden"}\r
-                    other{"for {0} tirsdager siden"}\r
-                }\r
-            }\r
-        }\r
-        tue-narrow{\r
-            relative{\r
-                "-1"{"sist ti."}\r
-                "0"{"denne ti."}\r
-                "1"{"neste ti."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} ti."}\r
-                    other{"om {0} ti."}\r
-                }\r
-                past{\r
-                    one{"for {0} ti. siden"}\r
-                    other{"for {0} ti. siden"}\r
-                }\r
-            }\r
-        }\r
-        tue-short{\r
-            relative{\r
-                "-1"{"sist tir."}\r
-                "0"{"denne tir."}\r
-                "1"{"neste tir."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} tir."}\r
-                    other{"om {0} tir."}\r
-                }\r
-                past{\r
-                    one{"for {0} tir. siden"}\r
-                    other{"for {0} tir. siden"}\r
-                }\r
-            }\r
-        }\r
-        wed{\r
-            relative{\r
-                "-1"{"forrige onsdag"}\r
-                "0"{"onsdag"}\r
-                "1"{"neste onsdag"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} onsdag"}\r
-                    other{"om {0} onsdager"}\r
-                }\r
-                past{\r
-                    one{"for {0} onsdag siden"}\r
-                    other{"for {0} onsdager siden"}\r
-                }\r
-            }\r
-        }\r
-        wed-narrow{\r
-            relative{\r
-                "-1"{"sist on."}\r
-                "0"{"denne on."}\r
-                "1"{"neste on."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} on."}\r
-                    other{"om {0} on."}\r
-                }\r
-                past{\r
-                    one{"for {0} on. siden"}\r
-                    other{"for {0} on. siden"}\r
-                }\r
-            }\r
-        }\r
-        wed-short{\r
-            relative{\r
-                "-1"{"sist ons."}\r
-                "0"{"denne ons."}\r
-                "1"{"neste ons."}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} ons."}\r
-                    other{"om {0} ons."}\r
-                }\r
-                past{\r
-                    one{"for {0} ons. siden"}\r
-                    other{"for {0} ons. siden"}\r
-                }\r
-            }\r
-        }\r
-        week{\r
-            dn{"uke"}\r
-            relative{\r
-                "-1"{"forrige uke"}\r
-                "0"{"denne uken"}\r
-                "1"{"neste uke"}\r
-            }\r
-            relativePeriod{"uken som inneholder {0}"}\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} uke"}\r
-                    other{"om {0} uker"}\r
-                }\r
-                past{\r
-                    one{"for {0} uke siden"}\r
-                    other{"for {0} uker siden"}\r
-                }\r
-            }\r
-        }\r
-        week-narrow{\r
-            dn{"u."}\r
-            relative{\r
-                "-1"{"forrige uke"}\r
-                "0"{"denne uken"}\r
-                "1"{"neste uke"}\r
-            }\r
-            relativePeriod{"u. {0}"}\r
-            relativeTime{\r
-                future{\r
-                    one{"+{0} u."}\r
-                    other{"+{0} u."}\r
-                }\r
-                past{\r
-                    one{"-{0} u."}\r
-                    other{"-{0} u."}\r
-                }\r
-            }\r
-        }\r
-        week-short{\r
-            dn{"uke"}\r
-            relative{\r
-                "-1"{"forrige uke"}\r
-                "0"{"denne uken"}\r
-                "1"{"neste uke"}\r
-            }\r
-            relativePeriod{"uken med {0}"}\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} u."}\r
-                    other{"om {0} u."}\r
-                }\r
-                past{\r
-                    one{"for {0} u. siden"}\r
-                    other{"for {0} u. siden"}\r
-                }\r
-            }\r
-        }\r
-        weekOfMonth{\r
-            dn{"uke i måneden"}\r
-        }\r
-        weekOfMonth-narrow{\r
-            dn{"uke i md."}\r
-        }\r
-        weekOfMonth-short{\r
-            dn{"uke i mnd."}\r
-        }\r
-        weekday{\r
-            dn{"ukedag"}\r
-        }\r
-        weekday-narrow{\r
-            dn{"uked."}\r
-        }\r
-        weekday-short{\r
-            dn{"ukedag"}\r
-        }\r
-        weekdayOfMonth{\r
-            dn{"ukedag i måneden"}\r
-        }\r
-        weekdayOfMonth-narrow{\r
-            dn{"uked. i md."}\r
-        }\r
-        weekdayOfMonth-short{\r
-            dn{"uked. i mnd."}\r
-        }\r
-        year{\r
-            dn{"år"}\r
-            relative{\r
-                "-1"{"i fjor"}\r
-                "0"{"i år"}\r
-                "1"{"neste år"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} år"}\r
-                    other{"om {0} år"}\r
-                }\r
-                past{\r
-                    one{"for {0} år siden"}\r
-                    other{"for {0} år siden"}\r
-                }\r
-            }\r
-        }\r
-        year-narrow{\r
-            dn{"år"}\r
-            relative{\r
-                "-1"{"i fjor"}\r
-                "0"{"i år"}\r
-                "1"{"neste år"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"+{0} år"}\r
-                    other{"+{0} år"}\r
-                }\r
-                past{\r
-                    one{"–{0} år"}\r
-                    other{"–{0} år"}\r
-                }\r
-            }\r
-        }\r
-        year-short{\r
-            dn{"år"}\r
-            relative{\r
-                "-1"{"i fjor"}\r
-                "0"{"i år"}\r
-                "1"{"neste år"}\r
-            }\r
-            relativeTime{\r
-                future{\r
-                    one{"om {0} år"}\r
-                    other{"om {0} år"}\r
-                }\r
-                past{\r
-                    one{"for {0} år siden"}\r
-                    other{"for {0} år siden"}\r
-                }\r
-            }\r
-        }\r
-        zone{\r
-            dn{"tidssone"}\r
-        }\r
-        zone-narrow{\r
-            dn{"tidssone"}\r
-        }\r
-        zone-short{\r
-            dn{"tidssone"}\r
-        }\r
-    }\r
-    listPattern{\r
-        or{\r
-            2{"{0} eller {1}"}\r
-            end{"{0} eller {1}"}\r
-            middle{"{0}, {1}"}\r
-            start{"{0}, {1}"}\r
-        }\r
-        standard{\r
-            2{"{0} og {1}"}\r
-            end{"{0} og {1}"}\r
-            middle{"{0}, {1}"}\r
-            start{"{0}, {1}"}\r
-        }\r
-        standard-short{\r
-            2{"{0} og {1}"}\r
-            end{"{0} og {1}"}\r
-        }\r
-        unit{\r
-            2{"{0} og {1}"}\r
-            end{"{0} og {1}"}\r
-            middle{"{0}, {1}"}\r
-            start{"{0}, {1}"}\r
-        }\r
-        unit-narrow{\r
-            2{"{0}, {1}"}\r
-            end{"{0}, {1}"}\r
-            middle{"{0}, {1}"}\r
-            start{"{0}, {1}"}\r
-        }\r
-        unit-short{\r
-            2{"{0}, {1}"}\r
-            end{"{0}, {1}"}\r
-            middle{"{0}, {1}"}\r
-            start{"{0}, {1}"}\r
-        }\r
-    }\r
-    measurementSystemNames{\r
-        UK{"engelsk"}\r
-        US{"amerikansk"}\r
-        metric{"metrisk"}\r
-    }\r
+    %%Parent{"no"}\r
 }\r
index dd087f1..2366b78 100644 (file)
@@ -866,6 +866,10 @@ nl{
             }\r
         }\r
         minimalPairs{\r
+            gender{\r
+                common{"De {0} is"}\r
+                neuter{"Het {0} is"}\r
+            }\r
             ordinal{\r
                 other{"Neem de {0}e afslag rechts."}\r
             }\r
index df11625..77971f5 100644 (file)
@@ -2,51 +2,20 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nn{\r
+    %%Parent{"no"}\r
     AuxExemplarCharacters{"[á ǎ č ç đ è ê ń ñ ŋ š ŧ ü ž ä ö]"}\r
-    Ellipsis{\r
-        final{"{0}…"}\r
-        initial{"…{0}"}\r
-        medial{"{0}…{1}"}\r
-        word-final{"{0} …"}\r
-        word-initial{"… {0}"}\r
-        word-medial{"{0} … {1}"}\r
-    }\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
-    ExemplarCharactersNumbers{"[  , % ‰ + − 0 1 2 3 4 5 6 7 8 9]"}\r
     ExemplarCharactersPunctuation{\r
         "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ "\r
         "′ ″]"\r
     }\r
     NumberElements{\r
-        default{"latn"}\r
         latn{\r
-            miscPatterns{\r
-                approximately{"ca. {0}"}\r
-                atLeast{"≥{0}"}\r
-                range{"{0}‒{1}"}\r
-            }\r
             patterns{\r
                 accountingFormat{"#,##0.00 ¤"}\r
                 currencyFormat{"#,##0.00 ¤"}\r
-                decimalFormat{"#,##0.###"}\r
-                percentFormat{"#,##0 %"}\r
-                scientificFormat{"#E0"}\r
             }\r
             patternsLong{\r
                 decimalFormat{\r
-                    1000{\r
-                        one{"0 tusen"}\r
-                        other{"0 tusen"}\r
-                    }\r
-                    10000{\r
-                        one{"00 tusen"}\r
-                        other{"00 tusen"}\r
-                    }\r
-                    100000{\r
-                        one{"000 tusen"}\r
-                        other{"000 tusen"}\r
-                    }\r
                     1000000{\r
                         one{"0 million"}\r
                         other{"0 millionar"}\r
@@ -87,18 +56,6 @@ nn{
             }\r
             symbols{\r
                 approximatelySign{"≈"}\r
-                decimal{","}\r
-                exponential{"E"}\r
-                group{" "}\r
-                infinity{"∞"}\r
-                list{";"}\r
-                minusSign{"−"}\r
-                nan{"NaN"}\r
-                perMille{"‰"}\r
-                percentSign{"%"}\r
-                plusSign{"+"}\r
-                superscriptingExponent{"×"}\r
-                timeSeparator{":"}\r
             }\r
         }\r
         minimalPairs{\r
@@ -110,8 +67,6 @@ nn{
                 other{"{0} dagar"}\r
             }\r
         }\r
-        minimumGroupingDigits{"1"}\r
-        native{"latn"}\r
     }\r
     calendar{\r
         generic{\r
@@ -130,142 +85,19 @@ nn{
                 "{1} {0}",\r
                 "{1} {0}",\r
             }\r
-            availableFormats{\r
-                E{"ccc"}\r
-                Ed{"E d."}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                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
-                M{"L."}\r
-                MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                h{"h a"}\r
-                hm{"h:mm a"}\r
-                hms{"h:mm:ss a"}\r
-                ms{"mm:ss"}\r
-                y{"y G"}\r
-                yyyy{"y G"}\r
-                yyyyM{"M.y G"}\r
-                yyyyMEd{"E d.M.y G"}\r
-                yyyyMM{"MM.y G"}\r
-                yyyyMMM{"MMM y G"}\r
-                yyyyMMMEd{"E d. MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
-                yyyyMMMd{"d. MMM y G"}\r
-                yyyyMd{"d.M.y G"}\r
-                yyyyQQQ{"QQQ y G"}\r
-                yyyyQQQQ{"QQQQ y G"}\r
-            }\r
             intervalFormats{\r
-                Gy{\r
-                    G{"y G–y G"}\r
-                    y{"y–y G"}\r
-                }\r
-                GyM{\r
-                    G{"MM.y GGGGG–MM.y GGGGG"}\r
-                    M{"MM.y–MM.y GGGGG"}\r
-                    y{"MM.y–MM.y GGGGG"}\r
-                }\r
-                GyMEd{\r
-                    G{"E dd.MM.y GGGGG–E dd.MM.y GGGGG"}\r
-                    M{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                    d{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                    y{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                }\r
-                GyMMM{\r
-                    G{"MMM y G–MMM y G"}\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                GyMMMEd{\r
-                    G{"E d. MMM y G–E d. MMM y G"}\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                GyMMMd{\r
-                    G{"d. MMM y G–d. MMM y G"}\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                GyMd{\r
-                    G{"dd.MM.y GGGGG–dd.MM.y GGGGG"}\r
-                    M{"dd.MM.y–dd.MM.y GGGGG"}\r
-                    d{"dd.MM.y–dd.MM.y GGGGG"}\r
-                    y{"dd.MM.y–dd.MM.y GGGGG"}\r
-                }\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hm{\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
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
                 MEd{\r
                     M{"E dd.MM.–E dd.MM."}\r
                     d{"E dd.MM.–E dd.MM."}\r
                 }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
                 MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
                     d{"E d.–E d. MMM"}\r
                 }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
                 Md{\r
                     M{"dd.MM.–dd.MM."}\r
                     d{"dd.MM.–dd.MM."}\r
                 }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
                 fallback{"{0} – {1}"}\r
-                h{\r
-                    a{"h a – h a"}\r
-                    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
-                }\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
-                }\r
-                hv{\r
-                    a{"h a – h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y G"}\r
-                }\r
                 yM{\r
                     M{"MM.y–MM.y G"}\r
                     y{"MM.y–MM.y G"}\r
@@ -275,23 +107,8 @@ nn{
                     d{"E dd.MM.y–E dd.MM.y G"}\r
                     y{"E dd.MM.y–E dd.MM.y G"}\r
                 }\r
-                yMMM{\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
                 yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y G"}\r
                     d{"E d.–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y G"}\r
-                    y{"MMMM y–MMMM y G"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
                 }\r
                 yMd{\r
                     M{"dd.MM.y–dd.MM.y G"}\r
@@ -328,60 +145,14 @@ nn{
                 "{1}, {0}",\r
                 "{1}, {0}",\r
             }\r
-            appendItems{\r
-                Timezone{"{0} {1}"}\r
-            }\r
             availableFormats{\r
-                Bh{"h B"}\r
-                Bhm{"h:mm B"}\r
-                Bhms{"h:mm:ss B"}\r
-                E{"ccc"}\r
-                EBhm{"E h:mm B"}\r
-                EBhms{"E h:mm:ss B"}\r
                 EHm{"E HH:mm"}\r
                 EHms{"E HH:mm:ss"}\r
-                Ed{"E d."}\r
-                Ehm{"E h:mm a"}\r
-                Ehms{"E h:mm:ss a"}\r
-                Gy{"y G"}\r
-                GyMMM{"MMM y G"}\r
-                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
-                Hmsv{"HH:mm:ss v"}\r
-                Hmv{"HH:mm v"}\r
-                M{"L."}\r
                 MEd{"E d.M"}\r
-                MMM{"LLL"}\r
-                MMMEd{"E d. MMM"}\r
                 MMMMW{\r
                     one{"'veke' W 'i' MMMM"}\r
                     other{"'veke' W 'i' MMMM"}\r
                 }\r
-                MMMMd{"d. MMMM"}\r
-                MMMd{"d. MMM"}\r
-                MMdd{"d.M."}\r
-                Md{"d.M."}\r
-                d{"d."}\r
-                h{"h a"}\r
-                hm{"h:mm a"}\r
-                hms{"h:mm:ss a"}\r
-                hmsv{"h:mm:ss a v"}\r
-                hmv{"h:mm a v"}\r
-                ms{"mm:ss"}\r
-                y{"y"}\r
-                yM{"M.y"}\r
-                yMEd{"E d.M.y"}\r
-                yMM{"MM.y"}\r
-                yMMM{"MMM y"}\r
-                yMMMEd{"E d. MMM y"}\r
-                yMMMM{"MMMM y"}\r
-                yMMMd{"d. MMM y"}\r
-                yMd{"d.M.y"}\r
-                yQQQ{"QQQ y"}\r
-                yQQQQ{"QQQQ y"}\r
                 yw{\r
                     one{"'veke' w 'i' Y"}\r
                     other{"'veke' w 'i' Y"}\r
@@ -482,18 +253,10 @@ nn{
                 }\r
             }\r
             eras{\r
-                abbreviated{\r
-                    "f.Kr.",\r
-                    "e.Kr.",\r
-                }\r
                 abbreviated%variant{\r
                     "f.v.t.",\r
                     "v.t.",\r
                 }\r
-                narrow{\r
-                    "f.Kr.",\r
-                    "e.Kr.",\r
-                }\r
                 wide{\r
                     "f.Kr.",\r
                     "e.Kr.",\r
@@ -504,136 +267,22 @@ nn{
                 }\r
             }\r
             intervalFormats{\r
-                Gy{\r
-                    G{"y G–y G"}\r
-                    y{"y–y G"}\r
-                }\r
-                GyM{\r
-                    G{"MM.y GGGGG–MM.y GGGGG"}\r
-                    M{"MM.y–MM.y GGGGG"}\r
-                    y{"MM.y–MM.y GGGGG"}\r
-                }\r
-                GyMEd{\r
-                    G{"E dd.MM.y GGGGG–E dd.MM.y GGGGG"}\r
-                    M{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                    d{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                    y{"E dd.MM.y–E dd.MM.y GGGGG"}\r
-                }\r
-                GyMMM{\r
-                    G{"MMM y G–MMM y G"}\r
-                    M{"MMM–MMM y G"}\r
-                    y{"MMM y–MMM y G"}\r
-                }\r
-                GyMMMEd{\r
-                    G{"E d. MMM y G–E d. MMM y G"}\r
-                    M{"E d. MMM–E d. MMM y G"}\r
-                    d{"E d. MMM–E d. MMM y G"}\r
-                    y{"E d. MMM y–E d. MMM y G"}\r
-                }\r
-                GyMMMd{\r
-                    G{"d. MMM y G–d. MMM y G"}\r
-                    M{"d. MMM–d. MMM y G"}\r
-                    d{"d.–d. MMM y G"}\r
-                    y{"d. MMM y–d. MMM y G"}\r
-                }\r
-                GyMd{\r
-                    G{"dd.MM.y GGGGG–dd.MM.y GGGGG"}\r
-                    M{"dd.MM.y–dd.MM.y GGGGG"}\r
-                    d{"dd.MM.y–dd.MM.y GGGGG"}\r
-                    y{"dd.MM.y–dd.MM.y GGGGG"}\r
-                }\r
-                H{\r
-                    H{"HH–HH"}\r
-                }\r
-                Hm{\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
-                }\r
-                Hv{\r
-                    H{"HH–HH v"}\r
-                }\r
-                M{\r
-                    M{"M.–M."}\r
-                }\r
-                MEd{\r
-                    M{"E dd.MM.–E dd.MM."}\r
-                    d{"E dd.MM.–E dd.MM."}\r
-                }\r
-                MMM{\r
-                    M{"MMM–MMM"}\r
-                }\r
-                MMMEd{\r
-                    M{"E d. MMM–E d. MMM"}\r
-                    d{"E d.–E d. MMM"}\r
-                }\r
-                MMMd{\r
-                    M{"d. MMM–d. MMM"}\r
-                    d{"d.–d. MMM"}\r
-                }\r
                 Md{\r
                     M{"dd.MM–dd.MM"}\r
                     d{"dd.MM–dd.MM"}\r
                 }\r
-                d{\r
-                    d{"d.–d."}\r
-                }\r
                 fallback{"{0} – {1}"}\r
                 h{\r
                     a{"h a – h a"}\r
-                    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
                 }\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
                 }\r
                 hv{\r
                     a{"h a – h a v"}\r
-                    h{"h–h a v"}\r
-                }\r
-                y{\r
-                    y{"y–y"}\r
-                }\r
-                yM{\r
-                    M{"MM.y–MM.y"}\r
-                    y{"MM.y–MM.y"}\r
-                }\r
-                yMEd{\r
-                    M{"E dd.MM.y–E dd.MM.y"}\r
-                    d{"E dd.MM.y–E dd.MM.y"}\r
-                    y{"E dd.MM.y–E dd.MM.y"}\r
-                }\r
-                yMMM{\r
-                    M{"MMM–MMM y"}\r
-                    y{"MMM y–MMM y"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d. MMM–E d. MMM y"}\r
-                    d{"E d.–E d. MMM y"}\r
-                    y{"E d. MMM y–E d. MMM y"}\r
-                }\r
-                yMMMM{\r
-                    M{"MMMM–MMMM y"}\r
-                    y{"MMMM y–MMMM y"}\r
-                }\r
-                yMMMd{\r
-                    M{"d. MMM–d. MMM y"}\r
-                    d{"d.–d. MMM y"}\r
-                    y{"d. MMM y–d. MMM y"}\r
-                }\r
-                yMd{\r
-                    M{"dd.MM.y–dd.MM.y"}\r
-                    d{"dd.MM.y–dd.MM.y"}\r
-                    y{"dd.MM.y–dd.MM.y"}\r
                 }\r
             }\r
             monthNames{\r
@@ -652,120 +301,24 @@ nn{
                         "nov.",\r
                         "des.",\r
                     }\r
-                    narrow{\r
-                        "J",\r
-                        "F",\r
-                        "M",\r
-                        "A",\r
-                        "M",\r
-                        "J",\r
-                        "J",\r
-                        "A",\r
-                        "S",\r
-                        "O",\r
-                        "N",\r
-                        "D",\r
-                    }\r
-                    wide{\r
-                        "januar",\r
-                        "februar",\r
-                        "mars",\r
-                        "april",\r
-                        "mai",\r
-                        "juni",\r
-                        "juli",\r
-                        "august",\r
-                        "september",\r
-                        "oktober",\r
-                        "november",\r
-                        "desember",\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    abbreviated{\r
-                        "jan",\r
-                        "feb",\r
-                        "mar",\r
-                        "apr",\r
-                        "mai",\r
-                        "jun",\r
-                        "jul",\r
-                        "aug",\r
-                        "sep",\r
-                        "okt",\r
-                        "nov",\r
-                        "des",\r
-                    }\r
-                    narrow{\r
-                        "J",\r
-                        "F",\r
-                        "M",\r
-                        "A",\r
-                        "M",\r
-                        "J",\r
-                        "J",\r
-                        "A",\r
-                        "S",\r
-                        "O",\r
-                        "N",\r
-                        "D",\r
-                    }\r
-                    wide{\r
-                        "januar",\r
-                        "februar",\r
-                        "mars",\r
-                        "april",\r
-                        "mai",\r
-                        "juni",\r
-                        "juli",\r
-                        "august",\r
-                        "september",\r
-                        "oktober",\r
-                        "november",\r
-                        "desember",\r
-                    }\r
                 }\r
             }\r
             quarters{\r
                 format{\r
-                    abbreviated{\r
-                        "K1",\r
-                        "K2",\r
-                        "K3",\r
-                        "K4",\r
-                    }\r
                     narrow{\r
                         "1",\r
                         "2",\r
                         "3",\r
                         "4",\r
                     }\r
-                    wide{\r
-                        "1. kvartal",\r
-                        "2. kvartal",\r
-                        "3. kvartal",\r
-                        "4. kvartal",\r
-                    }\r
                 }\r
                 stand-alone{\r
-                    abbreviated{\r
-                        "K1",\r
-                        "K2",\r
-                        "K3",\r
-                        "K4",\r
-                    }\r
                     narrow{\r
                         "1",\r
                         "2",\r
                         "3",\r
                         "4",\r
                     }\r
-                    wide{\r
-                        "1. kvartal",\r
-                        "2. kvartal",\r
-                        "3. kvartal",\r
-                        "4. kvartal",\r
-                    }\r
                 }\r
             }\r
         }\r
@@ -774,45 +327,28 @@ nn{
         activities{"aktivitetar"}\r
         african_scripts{"afrikanske skriftsystem"}\r
         american_scripts{"amerikanske skriftsystem"}\r
-        animal{"dyr"}\r
         animals_nature{"dyr eller natur"}\r
-        arrows{"piler"}\r
-        body{"kropp"}\r
         box_drawing{"ruteteikning"}\r
-        braille{"punktskrift"}\r
-        building{"bygning"}\r
         bullets_stars{"punktteikn/stjerner"}\r
-        consonantal_jamo{"konsonantal jamo"}\r
         currency_symbols{"valutasymbol"}\r
         dash_connector{"tankestrek/bindeteikn"}\r
         digits{"siffer"}\r
-        dingbats{"dingbats"}\r
         divination_symbols{"spådomssymbol"}\r
         downwards_arrows{"piler som peiker nedover"}\r
         downwards_upwards_arrows{"piler som peiker nedover og oppover"}\r
         east_asian_scripts{"austasiatiske skriftsystem"}\r
-        emoji{"emoji"}\r
         european_scripts{"europeiske skriftsystem"}\r
         female{"kvinneleg"}\r
-        flag{"flagg"}\r
-        flags{"flagg"}\r
-        food_drink{"mat og drikke"}\r
-        format{"format"}\r
-        format_whitespace{"format og mellomrom"}\r
         full_width_form_variant{"fullbreiddvariantar"}\r
         geometric_shapes{"geometriske former"}\r
         half_width_form_variant{"halvbreiddvariantar"}\r
         han_characters{"han-teikn"}\r
         han_radicals{"han-radikalar"}\r
-        hanja{"hanja"}\r
         hanzi_simplified{"hanzi (forenkla)"}\r
-        hanzi_traditional{"hanzi (tradisjonell)"}\r
         heart{"hjarte"}\r
         historic_scripts{"historiske skriftsystem"}\r
         ideographic_desc_characters{"ideografiske beskrivande teikn"}\r
         japanese_kana{"japanske kana"}\r
-        kanbun{"kanbun"}\r
-        kanji{"kanji"}\r
         keycap{"tastar"}\r
         leftwards_arrows{"piler som peiker til venstre"}\r
         leftwards_rightwards_arrows{"piler som peiker til venstre og høgre"}\r
@@ -821,52 +357,34 @@ nn{
         male{"mannleg"}\r
         math_symbols{"matematikksymbol"}\r
         middle_eastern_scripts{"skriftsystem frå Midtausten"}\r
-        miscellaneous{"diverse"}\r
         modern_scripts{"moderne skriftsystem"}\r
-        modifier{"modifikator"}\r
         musical_symbols{"musikksymbol"}\r
-        nature{"natur"}\r
         nonspacing{"utan breidd"}\r
         numbers{"tal"}\r
         objects{"objekt"}\r
         other{"anna"}\r
-        paired{"par"}\r
         person{"person"}\r
-        phonetic_alphabet{"fonetisk alfabet"}\r
         pictographs{"piktogram"}\r
         place{"stad"}\r
-        plant{"plante"}\r
         punctuation{"skiljeteikn"}\r
         rightwards_arrows{"piler som peiker til høgre"}\r
         sign_standard_symbols{"teikn eller symbol"}\r
         small_form_variant{"små variantar"}\r
-        smiley{"smilefjes"}\r
         smileys_people{"smilefjes og personar"}\r
         south_asian_scripts{"sørasiatiske skriftsystem"}\r
         southeast_asian_scripts{"søraustasiatiske skriftsystem"}\r
         spacing{"med breidd"}\r
-        sport{"sport"}\r
         symbols{"symbol"}\r
         technical_symbols{"tekniske symbol"}\r
         tone_marks{"tonemerke"}\r
-        travel{"reise"}\r
         travel_places{"reise og stadar"}\r
         upwards_arrows{"pil som peiker oppover"}\r
         variant_forms{"variantar"}\r
-        vocalic_jamo{"vokalisk jamo"}\r
         weather{"vêr"}\r
         western_asian_scripts{"vestasiatiske skriftsystem"}\r
-        whitespace{"mellomrom"}\r
-    }\r
-    delimiters{\r
-        alternateQuotationEnd{"’"}\r
-        alternateQuotationStart{"‘"}\r
-        quotationEnd{"»"}\r
-        quotationStart{"«"}\r
     }\r
     fields{\r
         day{\r
-            dn{"dag"}\r
             relative{\r
                 "-1"{"i går"}\r
                 "-2"{"i førgår"}\r
@@ -875,10 +393,6 @@ nn{
                 "2"{"i overmorgon"}\r
             }\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} døgn"}\r
-                    other{"om {0} døgn"}\r
-                }\r
                 past{\r
                     one{"for {0} døgn sidan"}\r
                     other{"for {0} døgn sidan"}\r
@@ -886,12 +400,7 @@ nn{
             }\r
         }\r
         day-narrow{\r
-            dn{"d."}\r
             relativeTime{\r
-                future{\r
-                    one{"+{0} d."}\r
-                    other{"+{0} d."}\r
-                }\r
                 past{\r
                     one{"–{0} d."}\r
                     other{"–{0} d."}\r
@@ -899,45 +408,13 @@ nn{
             }\r
         }\r
         day-short{\r
-            dn{"dag"}\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} d."}\r
-                    other{"om {0} d."}\r
-                }\r
                 past{\r
                     one{"for {0} d. sidan"}\r
                     other{"for {0} d. sidan"}\r
                 }\r
             }\r
         }\r
-        dayOfYear{\r
-            dn{"dag i året"}\r
-        }\r
-        dayOfYear-narrow{\r
-            dn{"d. i året"}\r
-        }\r
-        dayOfYear-short{\r
-            dn{"dag i året"}\r
-        }\r
-        dayperiod{\r
-            dn{"a.m./p.m."}\r
-        }\r
-        dayperiod-narrow{\r
-            dn{"am/pm"}\r
-        }\r
-        dayperiod-short{\r
-            dn{"am/pm"}\r
-        }\r
-        era{\r
-            dn{"tidsalder"}\r
-        }\r
-        era-narrow{\r
-            dn{"tidsalder"}\r
-        }\r
-        era-short{\r
-            dn{"tidsalder"}\r
-        }\r
         fri{\r
             relative{\r
                 "-1"{"førre fredag"}\r
@@ -962,10 +439,6 @@ nn{
                 "1"{"neste fr."}\r
             }\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} fr."}\r
-                    other{"om {0} fr."}\r
-                }\r
                 past{\r
                     one{"for {0} fr. sidan"}\r
                     other{"for {0} fr. sidan"}\r
@@ -979,10 +452,6 @@ nn{
                 "1"{"neste fre."}\r
             }\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} fre."}\r
-                    other{"om {0} fre."}\r
-                }\r
                 past{\r
                     one{"for {0} fre. sidan"}\r
                     other{"for {0} fre. sidan"}\r
@@ -990,10 +459,6 @@ nn{
             }\r
         }\r
         hour{\r
-            dn{"time"}\r
-            relative{\r
-                "0"{"denne timen"}\r
-            }\r
             relativeTime{\r
                 future{\r
                     one{"om {0} time"}\r
@@ -1006,12 +471,7 @@ nn{
             }\r
         }\r
         hour-narrow{\r
-            dn{"t"}\r
             relativeTime{\r
-                future{\r
-                    one{"+{0} t"}\r
-                    other{"+{0} t"}\r
-                }\r
                 past{\r
                     one{"–{0} t"}\r
                     other{"–{0} t"}\r
@@ -1019,12 +479,7 @@ nn{
             }\r
         }\r
         hour-short{\r
-            dn{"t"}\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} t"}\r
-                    other{"om {0} t"}\r
-                }\r
                 past{\r
                     one{"for {0} t sidan"}\r
                     other{"for {0} t sidan"}\r
@@ -1032,10 +487,6 @@ nn{
             }\r
         }\r
         minute{\r
-            dn{"minutt"}\r
-            relative{\r
-                "0"{"dette minuttet"}\r
-            }\r
             relativeTime{\r
                 future{\r
                     one{"om {0} minutt"}\r
@@ -1048,12 +499,7 @@ nn{
             }\r
         }\r
         minute-narrow{\r
-            dn{"m"}\r
             relativeTime{\r
-                future{\r
-                    one{"+{0} min"}\r
-                    other{"+{0} min"}\r
-                }\r
                 past{\r
                     one{"–{0} min"}\r
                     other{"–{0} min"}\r
@@ -1061,12 +507,7 @@ nn{
             }\r
         }\r
         minute-short{\r
-            dn{"min"}\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} min"}\r
-                    other{"om {0} min"}\r
-                }\r
                 past{\r
                     one{"for {0} min sidan"}\r
                     other{"for {0} min sidan"}\r
@@ -1143,12 +584,7 @@ nn{
             }\r
         }\r
         month-narrow{\r
-            dn{"md."}\r
             relativeTime{\r
-                future{\r
-                    one{"+{0} md."}\r
-                    other{"+{0} md."}\r
-                }\r
                 past{\r
                     one{"–{0} md."}\r
                     other{"–{0} md."}\r
@@ -1158,10 +594,6 @@ nn{
         month-short{\r
             dn{"md."}\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} md."}\r
-                    other{"om {0} md."}\r
-                }\r
                 past{\r
                     one{"for {0} md. sidan"}\r
                     other{"for {0} md. sidan"}\r
@@ -1169,7 +601,6 @@ nn{
             }\r
         }\r
         quarter{\r
-            dn{"kvartal"}\r
             relative{\r
                 "-1"{"førre kvartal"}\r
                 "0"{"dette kvartalet"}\r
@@ -1186,26 +617,8 @@ nn{
                 }\r
             }\r
         }\r
-        quarter-narrow{\r
-            dn{"kv."}\r
-            relativeTime{\r
-                future{\r
-                    one{"+{0} kv."}\r
-                    other{"+{0} kv."}\r
-                }\r
-                past{\r
-                    one{"–{0} kv."}\r
-                    other{"–{0} kv."}\r
-                }\r
-            }\r
-        }\r
         quarter-short{\r
-            dn{"kv."}\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} kv."}\r
-                    other{"om {0} kv."}\r
-                }\r
                 past{\r
                     one{"for {0} kv. sidan"}\r
                     other{"for {0} kv. sidan"}\r
@@ -1264,7 +677,6 @@ nn{
             }\r
         }\r
         second{\r
-            dn{"sekund"}\r
             relative{\r
                 "0"{"no"}\r
             }\r
@@ -1280,12 +692,7 @@ nn{
             }\r
         }\r
         second-narrow{\r
-            dn{"s"}\r
             relativeTime{\r
-                future{\r
-                    one{"+{0} s"}\r
-                    other{"+{0} s"}\r
-                }\r
                 past{\r
                     one{"–{0} s"}\r
                     other{"–{0} s"}\r
@@ -1293,7 +700,6 @@ nn{
             }\r
         }\r
         second-short{\r
-            dn{"sek"}\r
             relativeTime{\r
                 future{\r
                     one{"om {0} sek"}\r
@@ -1380,10 +786,6 @@ nn{
                 "1"{"neste to."}\r
             }\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} to."}\r
-                    other{"om {0} to."}\r
-                }\r
                 past{\r
                     one{"for {0} to. sidan"}\r
                     other{"for {0} to. sidan"}\r
@@ -1397,10 +799,6 @@ nn{
                 "1"{"neste tor."}\r
             }\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} tor."}\r
-                    other{"om {0} tor."}\r
-                }\r
                 past{\r
                     one{"for {0} tor. sidan"}\r
                     other{"for {0} tor. sidan"}\r
@@ -1482,10 +880,6 @@ nn{
                 "1"{"neste on."}\r
             }\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} on."}\r
-                    other{"om {0} on."}\r
-                }\r
                 past{\r
                     one{"for {0} on. sidan"}\r
                     other{"for {0} on. sidan"}\r
@@ -1499,10 +893,6 @@ nn{
                 "1"{"neste ons."}\r
             }\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} ons."}\r
-                    other{"om {0} ons."}\r
-                }\r
                 past{\r
                     one{"for {0} ons. sidan"}\r
                     other{"for {0} ons. sidan"}\r
@@ -1583,17 +973,7 @@ nn{
             dn{"veked. i md."}\r
         }\r
         year{\r
-            dn{"år"}\r
-            relative{\r
-                "-1"{"i fjor"}\r
-                "0"{"i år"}\r
-                "1"{"neste år"}\r
-            }\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} år"}\r
-                    other{"om {0} år"}\r
-                }\r
                 past{\r
                     one{"for {0} år sidan"}\r
                     other{"for {0} år sidan"}\r
@@ -1601,7 +981,6 @@ nn{
             }\r
         }\r
         year-narrow{\r
-            dn{"år"}\r
             relativeTime{\r
                 future{\r
                     one{"om {0} år"}\r
@@ -1614,46 +993,18 @@ nn{
             }\r
         }\r
         year-short{\r
-            dn{"år"}\r
             relativeTime{\r
-                future{\r
-                    one{"om {0} år"}\r
-                    other{"om {0} år"}\r
-                }\r
                 past{\r
                     one{"for {0} år sidan"}\r
                     other{"for {0} år sidan"}\r
                 }\r
             }\r
         }\r
-        zone{\r
-            dn{"tidssone"}\r
-        }\r
-        zone-narrow{\r
-            dn{"tidssone"}\r
-        }\r
-        zone-short{\r
-            dn{"tidssone"}\r
-        }\r
     }\r
     listPattern{\r
-        or{\r
-            2{"{0} eller {1}"}\r
-            end{"{0} eller {1}"}\r
-            middle{"{0}, {1}"}\r
-            start{"{0}, {1}"}\r
-        }\r
-        standard{\r
-            2{"{0} og {1}"}\r
-            end{"{0} og {1}"}\r
-            middle{"{0}, {1}"}\r
-            start{"{0}, {1}"}\r
-        }\r
         unit{\r
             2{"{0}, {1}"}\r
             end{"{0}, {1}"}\r
-            middle{"{0}, {1}"}\r
-            start{"{0}, {1}"}\r
         }\r
         unit-narrow{\r
             2{"{0} {1}"}\r
@@ -1661,16 +1012,5 @@ nn{
             middle{"{0} {1}"}\r
             start{"{0} {1}"}\r
         }\r
-        unit-short{\r
-            2{"{0}, {1}"}\r
-            end{"{0}, {1}"}\r
-            middle{"{0}, {1}"}\r
-            start{"{0}, {1}"}\r
-        }\r
-    }\r
-    measurementSystemNames{\r
-        UK{"engelsk"}\r
-        US{"amerikansk"}\r
-        metric{"metrisk"}\r
     }\r
 }\r
index a6eca3c..0564eff 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no{\r
-    "%%ALIAS"{"nb"}\r
+    AuxExemplarCharacters{"[á ǎ ã č ç đ è ê í ń ñ ŋ š ŧ ú ü ž ä ö]"}\r
+    Ellipsis{\r
+        final{"{0}…"}\r
+        initial{"…{0}"}\r
+        medial{"{0}…{1}"}\r
+        word-final{"{0} …"}\r
+        word-initial{"… {0}"}\r
+        word-medial{"{0} … {1}"}\r
+    }\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
+    ExemplarCharactersNumbers{"[  , % ‰ + − 0 1 2 3 4 5 6 7 8 9]"}\r
+    ExemplarCharactersPunctuation{"[\\- ‑ – , ; \\: ! ? . ' \u0022 « » ( ) \\[ \\] \\{ \\} § @ * / \\\\]"}\r
+    MoreInformation{"?"}\r
+    NumberElements{\r
+        arab{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{"٫"}\r
+                exponential{"اس"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{"؛"}\r
+                minusSign{"؜−"}\r
+                nan{"NaN"}\r
+                perMille{"؉"}\r
+                percentSign{"٪؜"}\r
+                plusSign{"؜+"}\r
+                superscriptingExponent{"×"}\r
+                timeSeparator{"."}\r
+            }\r
+        }\r
+        arabext{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"×۱۰^"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{"؛"}\r
+                minusSign{"‎−‎"}\r
+                nan{"NaN"}\r
+                perMille{"؉"}\r
+                percentSign{"٪"}\r
+                plusSign{"‎+‎"}\r
+                superscriptingExponent{"×"}\r
+                timeSeparator{"."}\r
+            }\r
+        }\r
+        bali{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        beng{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        brah{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        cakm{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        cham{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        default{"latn"}\r
+        deva{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        fullwide{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        gujr{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        guru{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        hanidec{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        java{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        kali{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        khmr{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        knda{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        lana{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        lanatham{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        laoo{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        latn{\r
+            miscPatterns{\r
+                approximately{"ca. {0}"}\r
+                atLeast{"≥ {0}"}\r
+                atMost{"≤ {0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            patternsLong{\r
+                decimalFormat{\r
+                    1000{\r
+                        one{"0 tusen"}\r
+                        other{"0 tusen"}\r
+                    }\r
+                    10000{\r
+                        one{"00 tusen"}\r
+                        other{"00 tusen"}\r
+                    }\r
+                    100000{\r
+                        one{"000 tusen"}\r
+                        other{"000 tusen"}\r
+                    }\r
+                    1000000{\r
+                        one{"0 million"}\r
+                        other{"0 millioner"}\r
+                    }\r
+                    10000000{\r
+                        one{"00 millioner"}\r
+                        other{"00 millioner"}\r
+                    }\r
+                    100000000{\r
+                        one{"000 millioner"}\r
+                        other{"000 millioner"}\r
+                    }\r
+                    1000000000{\r
+                        one{"0 milliard"}\r
+                        other{"0 milliarder"}\r
+                    }\r
+                    10000000000{\r
+                        one{"00 milliarder"}\r
+                        other{"00 milliarder"}\r
+                    }\r
+                    100000000000{\r
+                        one{"000 milliarder"}\r
+                        other{"000 milliarder"}\r
+                    }\r
+                    1000000000000{\r
+                        one{"0 billion"}\r
+                        other{"0 billioner"}\r
+                    }\r
+                    10000000000000{\r
+                        one{"00 billioner"}\r
+                        other{"00 billioner"}\r
+                    }\r
+                    100000000000000{\r
+                        one{"000 billioner"}\r
+                        other{"000 billioner"}\r
+                    }\r
+                }\r
+            }\r
+            patternsShort{\r
+                currencyFormat{\r
+                    1000{\r
+                        one{"¤ 0k"}\r
+                        other{"¤ 0k"}\r
+                    }\r
+                    10000{\r
+                        one{"¤ 00k"}\r
+                        other{"¤ 00k"}\r
+                    }\r
+                    100000{\r
+                        one{"¤ 000k"}\r
+                        other{"¤ 000k"}\r
+                    }\r
+                    1000000{\r
+                        one{"¤ 0 mill'.'"}\r
+                        other{"¤ 0 mill'.'"}\r
+                    }\r
+                    10000000{\r
+                        one{"¤ 00 mill'.'"}\r
+                        other{"¤ 00 mill'.'"}\r
+                    }\r
+                    100000000{\r
+                        one{"¤ 000 mill'.'"}\r
+                        other{"¤ 000 mill'.'"}\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 bill'.'"}\r
+                        other{"¤ 0 bill'.'"}\r
+                    }\r
+                    10000000000000{\r
+                        one{"¤ 00 bill'.'"}\r
+                        other{"¤ 00 bill'.'"}\r
+                    }\r
+                    100000000000000{\r
+                        one{"¤ 000 bill'.'"}\r
+                        other{"¤ 000 bill'.'"}\r
+                    }\r
+                }\r
+                decimalFormat{\r
+                    1000{\r
+                        one{"0k"}\r
+                        other{"0k"}\r
+                    }\r
+                    10000{\r
+                        one{"00k"}\r
+                        other{"00k"}\r
+                    }\r
+                    100000{\r
+                        one{"000k"}\r
+                        other{"000k"}\r
+                    }\r
+                    1000000{\r
+                        one{"0 mill'.'"}\r
+                        other{"0 mill'.'"}\r
+                    }\r
+                    10000000{\r
+                        one{"00 mill'.'"}\r
+                        other{"00 mill'.'"}\r
+                    }\r
+                    100000000{\r
+                        one{"000 mill'.'"}\r
+                        other{"000 mill'.'"}\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 bill'.'"}\r
+                        other{"0 bill'.'"}\r
+                    }\r
+                    10000000000000{\r
+                        one{"00 bill'.'"}\r
+                        other{"00 bill'.'"}\r
+                    }\r
+                    100000000000000{\r
+                        one{"000 bill'.'"}\r
+                        other{"000 bill'.'"}\r
+                    }\r
+                }\r
+            }\r
+            symbols{\r
+                approximatelySign{"ca."}\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+                timeSeparator{":"}\r
+            }\r
+        }\r
+        lepc{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        limb{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        minimalPairs{\r
+            gender{\r
+                masculine{"Min {0} den har tre kanter"}\r
+                neuter{"Mitt {0} det har tre kanter"}\r
+            }\r
+            ordinal{\r
+                other{"Ta {0}. sving til høyre."}\r
+            }\r
+            plural{\r
+                one{"{0} dag"}\r
+                other{"{0} dager"}\r
+            }\r
+        }\r
+        minimumGroupingDigits{"1"}\r
+        mlym{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        mong{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        mtei{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        mymr{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        mymrshan{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        native{"latn"}\r
+        nkoo{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        olck{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        orya{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        osma{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        saur{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        shrd{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        sora{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        sund{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        takr{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        talu{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        tamldec{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        telu{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        thai{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        tibt{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+        vaii{\r
+            miscPatterns{\r
+                atLeast{"≥{0}"}\r
+                range{"{0}–{1}"}\r
+            }\r
+            patterns{\r
+                accountingFormat{"¤ #,##0.00"}\r
+                currencyFormat{"¤ #,##0.00"}\r
+                decimalFormat{"#,##0.###"}\r
+                percentFormat{"#,##0 %"}\r
+                scientificFormat{"#E0"}\r
+            }\r
+            symbols{\r
+                decimal{","}\r
+                exponential{"E"}\r
+                group{" "}\r
+                infinity{"∞"}\r
+                list{";"}\r
+                minusSign{"−"}\r
+                nan{"NaN"}\r
+                perMille{"‰"}\r
+                percentSign{"%"}\r
+                plusSign{"+"}\r
+                superscriptingExponent{"×"}\r
+            }\r
+        }\r
+    }\r
+    calendar{\r
+        buddhist{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y G",\r
+                "d. MMMM y G",\r
+                "d. MMM y G",\r
+                "d.M.y G",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                GyMMMEd{"E d. MMM y G"}\r
+                GyMMMd{"d. MMM y G"}\r
+                M{"L."}\r
+                MEd{"E d.M"}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                y{"y G"}\r
+                yyyy{"y G"}\r
+                yyyyM{"M.y G"}\r
+                yyyyMEd{"E d.M.y G"}\r
+                yyyyMM{"MM.y G"}\r
+                yyyyMMM{"MMM y G"}\r
+                yyyyMMMEd{"E d. MMM y G"}\r
+                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMd{"d. MMM y G"}\r
+                yyyyMd{"d.M.y G"}\r
+                yyyyQQQ{"QQQ y G"}\r
+                yyyyQQQQ{"QQQQ y G"}\r
+            }\r
+            eras{\r
+                abbreviated{\r
+                    "BE",\r
+                }\r
+                narrow{\r
+                    "BE",\r
+                }\r
+                wide{\r
+                    "BE",\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E d.M.–E d.M."}\r
+                    d{"E d.M.–E d.M."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"d.M.–d.M."}\r
+                    d{"d.M.–d.M."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    h{"h–h a"}\r
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y G"}\r
+                }\r
+                yM{\r
+                    M{"M.y–M.y G"}\r
+                    y{"M.y–M.y G"}\r
+                }\r
+                yMEd{\r
+                    M{"E d.M.y–E d.M.y G"}\r
+                    d{"E d.M.y–E d.M.y G"}\r
+                    y{"E d.M.y–E d.M.y G"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y G"}\r
+                    y{"MMMM y–MMMM y G"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                yMd{\r
+                    M{"d.M.y–d.M.y G"}\r
+                    d{"d.M.y–d.M.y G"}\r
+                    y{"d.M.y–d.M.y G"}\r
+                }\r
+            }\r
+        }\r
+        chinese{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM r(U)",\r
+                "d. MMMM r(U)",\r
+                "d. MMM r",\r
+                "d.M.r",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"r(U)"}\r
+                GyMMM{"MMM r(U)"}\r
+                GyMMMEd{"E d. MMM r(U)"}\r
+                GyMMMd{"d. MMM r"}\r
+                H{"HH"}\r
+                M{"L."}\r
+                MEd{"E dd.MM."}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                Md{"dd.MM"}\r
+                UM{"MM. U"}\r
+                UMMM{"MMM U"}\r
+                UMMMd{"d. MMM U"}\r
+                UMd{"d.MM. U"}\r
+                d{"d."}\r
+                h{"h a"}\r
+                y{"r(U)"}\r
+                yMd{"dd.MM.r"}\r
+                yyyy{"r(U)"}\r
+                yyyyM{"MM.r"}\r
+                yyyyMEd{"E dd.MM.r"}\r
+                yyyyMMM{"MMM r(U)"}\r
+                yyyyMMMEd{"E d. MMM r(U)"}\r
+                yyyyMMMM{"MMMM r(U)"}\r
+                yyyyMMMd{"d. MMM r"}\r
+                yyyyMd{"dd.MM.r"}\r
+                yyyyQQQ{"QQQ r(U)"}\r
+                yyyyQQQQ{"QQQQ r(U)"}\r
+            }\r
+            cyclicNameSets{\r
+                dayParts{\r
+                    format{\r
+                        abbreviated{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                        narrow{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                        wide{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                    }\r
+                }\r
+                days{\r
+                    format{\r
+                        abbreviated{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        narrow{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        wide{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                    }\r
+                }\r
+                months{\r
+                    format{\r
+                        abbreviated{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        narrow{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        wide{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                    }\r
+                }\r
+                solarTerms{\r
+                    format{\r
+                        abbreviated{\r
+                            "vårstart",\r
+                            "regnvann",\r
+                            "insekter våkner",\r
+                            "vårjevndøgn",\r
+                            "lyst og klart",\r
+                            "kornregn",\r
+                            "sommerstart",\r
+                            "tidl. korn",\r
+                            "korn i aks",\r
+                            "sommersolverv",\r
+                            "liten varme",\r
+                            "stor varme",\r
+                            "høststart",\r
+                            "varmeslutt",\r
+                            "hvit dugg",\r
+                            "høstjevndøgn",\r
+                            "kalddugg",\r
+                            "første frost",\r
+                            "vinterstart",\r
+                            "litt snø",\r
+                            "mye snø",\r
+                            "vintersolverv",\r
+                            "liten kulde",\r
+                            "stor kulde",\r
+                        }\r
+                        narrow{\r
+                            "vårstart",\r
+                            "regnvann",\r
+                            "insekter våkner",\r
+                            "vårjevndøgn",\r
+                            "lyst og klart",\r
+                            "kornregn",\r
+                            "sommerstart",\r
+                            "tidl. korn",\r
+                            "korn i aks",\r
+                            "sommersolverv",\r
+                            "liten varme",\r
+                            "stor varme",\r
+                            "høststart",\r
+                            "varmeslutt",\r
+                            "hvit dugg",\r
+                            "høstjevndøgn",\r
+                            "kalddugg",\r
+                            "første frost",\r
+                            "vinterstart",\r
+                            "litt snø",\r
+                            "mye snø",\r
+                            "vintersolverv",\r
+                            "liten kulde",\r
+                            "stor kulde",\r
+                        }\r
+                        wide{\r
+                            "vårstart",\r
+                            "regnvann",\r
+                            "insekter våkner",\r
+                            "vårjevndøgn",\r
+                            "lyst og klart",\r
+                            "kornregn",\r
+                            "sommerstart",\r
+                            "tidl. korn",\r
+                            "korn i aks",\r
+                            "sommersolverv",\r
+                            "liten varme",\r
+                            "stor varme",\r
+                            "høststart",\r
+                            "varmeslutt",\r
+                            "hvit dugg",\r
+                            "høstjevndøgn",\r
+                            "kalddugg",\r
+                            "første frost",\r
+                            "vinterstart",\r
+                            "litt snø",\r
+                            "mye snø",\r
+                            "vintersolverv",\r
+                            "liten kulde",\r
+                            "stor kulde",\r
+                        }\r
+                    }\r
+                }\r
+                years{\r
+                    format{\r
+                        abbreviated{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        narrow{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        wide{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                    }\r
+                }\r
+                zodiacs{\r
+                    format{\r
+                        abbreviated{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                        narrow{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                        wide{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hm{\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
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"MM.–MM."}\r
+                }\r
+                MEd{\r
+                    M{"dd.MM.E–dd.MM.E"}\r
+                    d{"dd.MM.E–dd.MM.E"}\r
+                }\r
+                MMM{\r
+                    M{"LLL–LLL"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"dd.MM.–dd.MM."}\r
+                    d{"dd.MM.–dd.MM."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    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
+                }\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
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"U–U"}\r
+                }\r
+                yM{\r
+                    M{"MM.y–MM.y"}\r
+                    y{"MM.y–MM.y"}\r
+                }\r
+                yMEd{\r
+                    M{"E dd.MM.y–E dd.MM.y"}\r
+                    d{"E dd.MM.y–E dd.MM.y"}\r
+                    y{"E dd.MM.y–E dd.MM.y"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM U"}\r
+                    y{"MMM U–MMM U"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM U"}\r
+                    d{"E d. MMM–E d. MMM U"}\r
+                    y{"E d. MMM U–E d. MMM U"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM U"}\r
+                    y{"MMMM U–MMMM U"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM U"}\r
+                    d{"d.–d. U MMM"}\r
+                    y{"d. MMM U–d. MMM U"}\r
+                }\r
+                yMd{\r
+                    M{"dd.MM.y–dd.MM.y"}\r
+                    d{"dd.MM.y–dd.MM.y"}\r
+                    y{"dd.MM.y–dd.MM.y"}\r
+                }\r
+            }\r
+            monthNames{\r
+                format{\r
+                    abbreviated{\r
+                        "M01",\r
+                        "M02",\r
+                        "M03",\r
+                        "M04",\r
+                        "M05",\r
+                        "M06",\r
+                        "M07",\r
+                        "M08",\r
+                        "M09",\r
+                        "M10",\r
+                        "M11",\r
+                        "M12",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "M01",\r
+                        "M02",\r
+                        "M03",\r
+                        "M04",\r
+                        "M05",\r
+                        "M06",\r
+                        "M07",\r
+                        "M08",\r
+                        "M09",\r
+                        "M10",\r
+                        "M11",\r
+                        "M12",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "M01",\r
+                        "M02",\r
+                        "M03",\r
+                        "M04",\r
+                        "M05",\r
+                        "M06",\r
+                        "M07",\r
+                        "M08",\r
+                        "M09",\r
+                        "M10",\r
+                        "M11",\r
+                        "M12",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "M01",\r
+                        "M02",\r
+                        "M03",\r
+                        "M04",\r
+                        "M05",\r
+                        "M06",\r
+                        "M07",\r
+                        "M08",\r
+                        "M09",\r
+                        "M10",\r
+                        "M11",\r
+                        "M12",\r
+                    }\r
+                }\r
+            }\r
+            monthPatterns{\r
+                format{\r
+                    abbreviated{\r
+                        leap{"{0}bis"}\r
+                    }\r
+                    narrow{\r
+                        leap{"{0}b"}\r
+                    }\r
+                    wide{\r
+                        leap{"{0}bis"}\r
+                    }\r
+                }\r
+                numeric{\r
+                    all{\r
+                        leap{"{0}bis"}\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        leap{"{0}bis"}\r
+                    }\r
+                    narrow{\r
+                        leap{"{0}b"}\r
+                    }\r
+                    wide{\r
+                        leap{"{0}bis"}\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        coptic{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y G",\r
+                "d. MMMM y G",\r
+                "d. MMM y G",\r
+                "d.M.y G",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                GyMMMEd{"E d. MMM y G"}\r
+                GyMMMd{"d. MMM y G"}\r
+                M{"L."}\r
+                MEd{"E d.M"}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                y{"y G"}\r
+                yyyy{"y G"}\r
+                yyyyM{"M.y G"}\r
+                yyyyMEd{"E d.M.y G"}\r
+                yyyyMM{"MM.y G"}\r
+                yyyyMMM{"MMM y G"}\r
+                yyyyMMMEd{"E d. MMM y G"}\r
+                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMd{"d. MMM y G"}\r
+                yyyyMd{"d.M.y G"}\r
+                yyyyQQQ{"QQQ y G"}\r
+                yyyyQQQQ{"QQQQ y G"}\r
+            }\r
+            eras{\r
+                abbreviated{\r
+                    "0. t.a.",\r
+                    "1. t.a.",\r
+                }\r
+                narrow{\r
+                    "TA0",\r
+                    "TA1",\r
+                }\r
+                wide{\r
+                    "0. tidsalder",\r
+                    "1. tidsalder",\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E d.M.–E d.M."}\r
+                    d{"E d.M.–E d.M."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"d.M.–d.M."}\r
+                    d{"d.M.–d.M."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    h{"h–h a"}\r
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y G"}\r
+                }\r
+                yM{\r
+                    M{"M.y–M.y G"}\r
+                    y{"M.y–M.y G"}\r
+                }\r
+                yMEd{\r
+                    M{"E d.M.y–E d.M.y G"}\r
+                    d{"E d.M.y–E d.M.y G"}\r
+                    y{"E d.M.y–E d.M.y G"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y G"}\r
+                    y{"MMMM y–MMMM y G"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                yMd{\r
+                    M{"d.M.y–d.M.y G"}\r
+                    d{"d.M.y–d.M.y G"}\r
+                    y{"d.M.y–d.M.y G"}\r
+                }\r
+            }\r
+            monthNames{\r
+                format{\r
+                    abbreviated{\r
+                        "tout",\r
+                        "baba",\r
+                        "hator",\r
+                        "kiahk",\r
+                        "toba",\r
+                        "amshir",\r
+                        "baramhat",\r
+                        "baramouda",\r
+                        "bashans",\r
+                        "paona",\r
+                        "epep",\r
+                        "mesra",\r
+                        "nasie",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "tout",\r
+                        "baba",\r
+                        "hator",\r
+                        "kiahk",\r
+                        "toba",\r
+                        "amshir",\r
+                        "baramhat",\r
+                        "baramouda",\r
+                        "bashans",\r
+                        "paona",\r
+                        "epep",\r
+                        "mesra",\r
+                        "nasie",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "tout",\r
+                        "baba",\r
+                        "hator",\r
+                        "kiahk",\r
+                        "toba",\r
+                        "amshir",\r
+                        "baramhat",\r
+                        "baramouda",\r
+                        "bashans",\r
+                        "paona",\r
+                        "epep",\r
+                        "mesra",\r
+                        "nasie",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "tout",\r
+                        "baba",\r
+                        "hator",\r
+                        "kiahk",\r
+                        "toba",\r
+                        "amshir",\r
+                        "baramhat",\r
+                        "baramouda",\r
+                        "bashans",\r
+                        "paona",\r
+                        "epep",\r
+                        "mesra",\r
+                        "nasie",\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        dangi{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM r(U)",\r
+                "d. MMMM r(U)",\r
+                "d. MMM r",\r
+                "d.M.r",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"r(U)"}\r
+                GyMMM{"MMM r(U)"}\r
+                GyMMMEd{"E d. MMM r(U)"}\r
+                GyMMMd{"d. MMM r"}\r
+                M{"L."}\r
+                MEd{"E dd.MM."}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                Md{"dd.MM"}\r
+                UM{"MM. U"}\r
+                UMMM{"MMM U"}\r
+                UMMMd{"d. MMM U"}\r
+                UMd{"d.MM. U"}\r
+                d{"d."}\r
+                y{"r(U)"}\r
+                yMd{"dd.MM.r"}\r
+                yyyy{"r(U)"}\r
+                yyyyM{"MM.r"}\r
+                yyyyMEd{"E dd.MM.r"}\r
+                yyyyMMM{"MMM r(U)"}\r
+                yyyyMMMEd{"E d. MMM r(U)"}\r
+                yyyyMMMM{"MMMM r(U)"}\r
+                yyyyMMMd{"d. MMM r"}\r
+                yyyyMd{"dd.MM.r"}\r
+                yyyyQQQ{"QQQ r(U)"}\r
+                yyyyQQQQ{"QQQQ r(U)"}\r
+            }\r
+            cyclicNameSets{\r
+                dayParts{\r
+                    format{\r
+                        abbreviated{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                        narrow{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                        wide{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                    }\r
+                }\r
+                days{\r
+                    format{\r
+                        abbreviated{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        narrow{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        wide{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                    }\r
+                }\r
+                months{\r
+                    format{\r
+                        abbreviated{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        narrow{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        wide{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                    }\r
+                }\r
+                solarTerms{\r
+                    format{\r
+                        abbreviated{\r
+                            "vårstart",\r
+                            "regnvann",\r
+                            "insekter våkner",\r
+                            "vårjevndøgn",\r
+                            "lyst og klart",\r
+                            "kornregn",\r
+                            "sommerstart",\r
+                            "tidl. korn",\r
+                            "korn i aks",\r
+                            "sommersolverv",\r
+                            "liten varme",\r
+                            "stor varme",\r
+                            "høststart",\r
+                            "varmeslutt",\r
+                            "hvit dugg",\r
+                            "høstjevndøgn",\r
+                            "kalddugg",\r
+                            "første frost",\r
+                            "vinterstart",\r
+                            "litt snø",\r
+                            "mye snø",\r
+                            "vintersolverv",\r
+                            "liten kulde",\r
+                            "stor kulde",\r
+                        }\r
+                        narrow{\r
+                            "vårstart",\r
+                            "regnvann",\r
+                            "insekter våkner",\r
+                            "vårjevndøgn",\r
+                            "lyst og klart",\r
+                            "kornregn",\r
+                            "sommerstart",\r
+                            "tidl. korn",\r
+                            "korn i aks",\r
+                            "sommersolverv",\r
+                            "liten varme",\r
+                            "stor varme",\r
+                            "høststart",\r
+                            "varmeslutt",\r
+                            "hvit dugg",\r
+                            "høstjevndøgn",\r
+                            "kalddugg",\r
+                            "første frost",\r
+                            "vinterstart",\r
+                            "litt snø",\r
+                            "mye snø",\r
+                            "vintersolverv",\r
+                            "liten kulde",\r
+                            "stor kulde",\r
+                        }\r
+                        wide{\r
+                            "vårstart",\r
+                            "regnvann",\r
+                            "insekter våkner",\r
+                            "vårjevndøgn",\r
+                            "lyst og klart",\r
+                            "kornregn",\r
+                            "sommerstart",\r
+                            "tidl. korn",\r
+                            "korn i aks",\r
+                            "sommersolverv",\r
+                            "liten varme",\r
+                            "stor varme",\r
+                            "høststart",\r
+                            "varmeslutt",\r
+                            "hvit dugg",\r
+                            "høstjevndøgn",\r
+                            "kalddugg",\r
+                            "første frost",\r
+                            "vinterstart",\r
+                            "litt snø",\r
+                            "mye snø",\r
+                            "vintersolverv",\r
+                            "liten kulde",\r
+                            "stor kulde",\r
+                        }\r
+                    }\r
+                }\r
+                years{\r
+                    format{\r
+                        abbreviated{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        narrow{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                        wide{\r
+                            "jia-zi",\r
+                            "yi-chou",\r
+                            "bing-yin",\r
+                            "ding-mao",\r
+                            "wu-chen",\r
+                            "ji-si",\r
+                            "geng-wu",\r
+                            "xin-wei",\r
+                            "ren-shen",\r
+                            "gui-you",\r
+                            "jia-xu",\r
+                            "yi-hai",\r
+                            "bing-zi",\r
+                            "ding-chou",\r
+                            "wu-yin",\r
+                            "ji-mao",\r
+                            "geng-chen",\r
+                            "xin-si",\r
+                            "ren-wu",\r
+                            "gui-wei",\r
+                            "jia-shen",\r
+                            "yi-you",\r
+                            "bing-xu",\r
+                            "ding-hai",\r
+                            "wu-zi",\r
+                            "ji-chou",\r
+                            "geng-yin",\r
+                            "xin-mao",\r
+                            "ren-chen",\r
+                            "gui-si",\r
+                            "jia-wu",\r
+                            "yi-wei",\r
+                            "bing-shen",\r
+                            "ding-you",\r
+                            "wu-xu",\r
+                            "ji-hai",\r
+                            "geng-zi",\r
+                            "xin-chou",\r
+                            "ren-yin",\r
+                            "gui-mao",\r
+                            "jia-chen",\r
+                            "yi-si",\r
+                            "bing-wu",\r
+                            "ding-wei",\r
+                            "wu-shen",\r
+                            "ji-you",\r
+                            "geng-xu",\r
+                            "xin-hai",\r
+                            "ren-zi",\r
+                            "gui-chou",\r
+                            "jia-yin",\r
+                            "yi-mao",\r
+                            "bing-chen",\r
+                            "ding-si",\r
+                            "wu-wu",\r
+                            "ji-wei",\r
+                            "geng-shen",\r
+                            "xin-you",\r
+                            "ren-xu",\r
+                            "gui-hai",\r
+                        }\r
+                    }\r
+                }\r
+                zodiacs{\r
+                    format{\r
+                        abbreviated{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                        narrow{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                        wide{\r
+                            "zi",\r
+                            "chou",\r
+                            "yin",\r
+                            "mao",\r
+                            "chen",\r
+                            "si",\r
+                            "wu",\r
+                            "wei",\r
+                            "shen",\r
+                            "you",\r
+                            "xu",\r
+                            "hai",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"MM.–MM."}\r
+                }\r
+                MEd{\r
+                    M{"dd.MM.E–dd.MM.E"}\r
+                    d{"dd.MM.E–dd.MM.E"}\r
+                }\r
+                MMM{\r
+                    M{"LLL–LLL"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"dd.MM.–dd.MM."}\r
+                    d{"dd.MM.–dd.MM."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    h{"h–h a"}\r
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"U–U"}\r
+                }\r
+                yM{\r
+                    M{"MM.y–MM.y"}\r
+                    y{"MM.y–MM.y"}\r
+                }\r
+                yMEd{\r
+                    M{"E dd.MM.y–E dd.MM.y"}\r
+                    d{"E dd.MM.y–E dd.MM.y"}\r
+                    y{"E dd.MM.y–E dd.MM.y"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM U"}\r
+                    y{"MMM U–MMM U"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM U"}\r
+                    d{"E d. MMM–E d. MMM U"}\r
+                    y{"E d. MMM U–E d. MMM U"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM U"}\r
+                    y{"MMMM U–MMMM U"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM U"}\r
+                    d{"d.–d. U MMM"}\r
+                    y{"d. MMM U–d. MMM U"}\r
+                }\r
+                yMd{\r
+                    M{"dd.MM.y–dd.MM.y"}\r
+                    d{"dd.MM.y–dd.MM.y"}\r
+                    y{"dd.MM.y–dd.MM.y"}\r
+                }\r
+            }\r
+            monthNames{\r
+                format{\r
+                    abbreviated{\r
+                        "M01",\r
+                        "M02",\r
+                        "M03",\r
+                        "M04",\r
+                        "M05",\r
+                        "M06",\r
+                        "M07",\r
+                        "M08",\r
+                        "M09",\r
+                        "M10",\r
+                        "M11",\r
+                        "M12",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "M01",\r
+                        "M02",\r
+                        "M03",\r
+                        "M04",\r
+                        "M05",\r
+                        "M06",\r
+                        "M07",\r
+                        "M08",\r
+                        "M09",\r
+                        "M10",\r
+                        "M11",\r
+                        "M12",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "M01",\r
+                        "M02",\r
+                        "M03",\r
+                        "M04",\r
+                        "M05",\r
+                        "M06",\r
+                        "M07",\r
+                        "M08",\r
+                        "M09",\r
+                        "M10",\r
+                        "M11",\r
+                        "M12",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "M01",\r
+                        "M02",\r
+                        "M03",\r
+                        "M04",\r
+                        "M05",\r
+                        "M06",\r
+                        "M07",\r
+                        "M08",\r
+                        "M09",\r
+                        "M10",\r
+                        "M11",\r
+                        "M12",\r
+                    }\r
+                }\r
+            }\r
+            monthPatterns{\r
+                format{\r
+                    abbreviated{\r
+                        leap{"{0}bis"}\r
+                    }\r
+                    narrow{\r
+                        leap{"{0}b"}\r
+                    }\r
+                    wide{\r
+                        leap{"{0}bis"}\r
+                    }\r
+                }\r
+                numeric{\r
+                    all{\r
+                        leap{"{0}bis"}\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        leap{"{0}bis"}\r
+                    }\r
+                    narrow{\r
+                        leap{"{0}b"}\r
+                    }\r
+                    wide{\r
+                        leap{"{0}bis"}\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        ethiopic{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y G",\r
+                "d. MMMM y G",\r
+                "d. MMM y G",\r
+                "d.M.y G",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                GyMMMEd{"E d. MMM y G"}\r
+                GyMMMd{"d. MMM y G"}\r
+                M{"L."}\r
+                MEd{"E d.M"}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                y{"y G"}\r
+                yyyy{"y G"}\r
+                yyyyM{"M.y G"}\r
+                yyyyMEd{"E d.M.y G"}\r
+                yyyyMM{"MM.y G"}\r
+                yyyyMMM{"MMM y G"}\r
+                yyyyMMMEd{"E d. MMM y G"}\r
+                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMd{"d. MMM y G"}\r
+                yyyyMd{"d.M.y G"}\r
+                yyyyQQQ{"QQQ y G"}\r
+                yyyyQQQQ{"QQQQ y G"}\r
+            }\r
+            eras{\r
+                abbreviated{\r
+                    "0. t.a.",\r
+                    "1. t.a.",\r
+                }\r
+                narrow{\r
+                    "TA0",\r
+                    "TA1",\r
+                }\r
+                wide{\r
+                    "0. tidsalder",\r
+                    "1. tidsalder",\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E d.M.–E d.M."}\r
+                    d{"E d.M.–E d.M."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"d.M.–d.M."}\r
+                    d{"d.M.–d.M."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    h{"h–h a"}\r
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y G"}\r
+                }\r
+                yM{\r
+                    M{"M.y–M.y G"}\r
+                    y{"M.y–M.y G"}\r
+                }\r
+                yMEd{\r
+                    M{"E d.M.y–E d.M.y G"}\r
+                    d{"E d.M.y–E d.M.y G"}\r
+                    y{"E d.M.y–E d.M.y G"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y G"}\r
+                    y{"MMMM y–MMMM y G"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                yMd{\r
+                    M{"d.M.y–d.M.y G"}\r
+                    d{"d.M.y–d.M.y G"}\r
+                    y{"d.M.y–d.M.y G"}\r
+                }\r
+            }\r
+            monthNames{\r
+                format{\r
+                    abbreviated{\r
+                        "meskerem",\r
+                        "tekemt",\r
+                        "hedar",\r
+                        "tahsas",\r
+                        "ter",\r
+                        "yekatit",\r
+                        "megabit",\r
+                        "miazia",\r
+                        "genbot",\r
+                        "sene",\r
+                        "hamle",\r
+                        "nehasse",\r
+                        "pagumen",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "meskerem",\r
+                        "tekemt",\r
+                        "hedar",\r
+                        "tahsas",\r
+                        "ter",\r
+                        "yekatit",\r
+                        "megabit",\r
+                        "miazia",\r
+                        "genbot",\r
+                        "sene",\r
+                        "hamle",\r
+                        "nehasse",\r
+                        "pagumen",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "meskerem",\r
+                        "tekemt",\r
+                        "hedar",\r
+                        "tahsas",\r
+                        "ter",\r
+                        "yekatit",\r
+                        "megabit",\r
+                        "miazia",\r
+                        "genbot",\r
+                        "sene",\r
+                        "hamle",\r
+                        "nehasse",\r
+                        "pagumen",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "meskerem",\r
+                        "tekemt",\r
+                        "hedar",\r
+                        "tahsas",\r
+                        "ter",\r
+                        "yekatit",\r
+                        "megabit",\r
+                        "miazia",\r
+                        "genbot",\r
+                        "sene",\r
+                        "hamle",\r
+                        "nehasse",\r
+                        "pagumen",\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        ethiopic-amete-alem{\r
+            eras{\r
+                abbreviated{\r
+                    "0. t.a.",\r
+                }\r
+                narrow{\r
+                    "TA0",\r
+                }\r
+                wide{\r
+                    "0. tidsalder",\r
+                }\r
+            }\r
+        }\r
+        generic{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y G",\r
+                "d. MMMM y G",\r
+                "d. MMM y G",\r
+                "d.M.y G",\r
+                "{1} {0}",\r
+                "{1} 'kl'. {0}",\r
+                "{1} 'kl'. {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                Bh{"h B"}\r
+                Bhm{"h:mm B"}\r
+                Bhms{"h:mm:ss B"}\r
+                E{"ccc"}\r
+                EBhm{"E h:mm B"}\r
+                EBhms{"E h:mm:ss B"}\r
+                EHm{"E HH:mm"}\r
+                EHms{"E HH:mm:ss"}\r
+                Ed{"E d."}\r
+                Ehm{"E h:mm a"}\r
+                Ehms{"E h:mm:ss a"}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                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
+                M{"L."}\r
+                MEd{"E d.M"}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                h{"h a"}\r
+                hm{"h:mm a"}\r
+                hms{"h:mm:ss a"}\r
+                ms{"mm:ss"}\r
+                y{"y G"}\r
+                yyyy{"y G"}\r
+                yyyyM{"M.y G"}\r
+                yyyyMEd{"E d.M.y G"}\r
+                yyyyMM{"MM.y G"}\r
+                yyyyMMM{"MMM y G"}\r
+                yyyyMMMEd{"E d. MMM y G"}\r
+                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMd{"d. MMM y G"}\r
+                yyyyMd{"d.M.y G"}\r
+                yyyyQQQ{"QQQ y G"}\r
+                yyyyQQQQ{"QQQQ y G"}\r
+            }\r
+            intervalFormats{\r
+                Bh{\r
+                    B{"h B–h B"}\r
+                }\r
+                Bhm{\r
+                    B{"h:mm B–h:mm B"}\r
+                }\r
+                Gy{\r
+                    G{"y G–y G"}\r
+                    y{"y–y G"}\r
+                }\r
+                GyM{\r
+                    G{"MM.y GGGGG–MM.y GGGGG"}\r
+                    M{"MM.y–MM.y GGGGG"}\r
+                    y{"MM.y–MM.y GGGGG"}\r
+                }\r
+                GyMEd{\r
+                    G{"E dd.MM.y GGGGG–E dd.MM.y GGGGG"}\r
+                    M{"E dd.MM.y–E dd.MM.y GGGGG"}\r
+                    d{"E dd.MM.y–E dd.MM.y GGGGG"}\r
+                    y{"E dd.MM.y–E dd.MM.y GGGGG"}\r
+                }\r
+                GyMMM{\r
+                    G{"MMM y G–MMM y G"}\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                GyMMMEd{\r
+                    G{"E d. MMM y G–E d. MMM y G"}\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                GyMMMd{\r
+                    G{"d. MMM y G–d. MMM y G"}\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                GyMd{\r
+                    G{"dd.MM.y GGGGG–dd.MM.y GGGGG"}\r
+                    M{"dd.MM.y–dd.MM.y GGGGG"}\r
+                    d{"dd.MM.y–dd.MM.y GGGGG"}\r
+                    y{"dd.MM.y–dd.MM.y GGGGG"}\r
+                }\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hm{\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
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E d.M.–E d.M."}\r
+                    d{"E d.M.–E d.M."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"d.M.–d.M."}\r
+                    d{"d.M.–d.M."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a – h a"}\r
+                    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
+                }\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
+                }\r
+                hv{\r
+                    a{"h a – h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y G"}\r
+                }\r
+                yM{\r
+                    M{"M.y–M.y G"}\r
+                    y{"M.y–M.y G"}\r
+                }\r
+                yMEd{\r
+                    M{"E d.M.y–E d.M.y G"}\r
+                    d{"E d.M.y–E d.M.y G"}\r
+                    y{"E d.M.y–E d.M.y G"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y G"}\r
+                    y{"MMMM y–MMMM y G"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                yMd{\r
+                    M{"d.M.y–d.M.y G"}\r
+                    d{"d.M.y–d.M.y G"}\r
+                    y{"d.M.y–d.M.y G"}\r
+                }\r
+            }\r
+        }\r
+        gregorian{\r
+            AmPmMarkers{\r
+                "a.m.",\r
+                "p.m.",\r
+            }\r
+            AmPmMarkersAbbr{\r
+                "a.m.",\r
+                "p.m.",\r
+            }\r
+            AmPmMarkersNarrow{\r
+                "a",\r
+                "p",\r
+            }\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y",\r
+                "d. MMMM y",\r
+                "d. MMM y",\r
+                "dd.MM.y",\r
+                "{1}, {0}",\r
+                "{1} 'kl'. {0}",\r
+                "{1} 'kl'. {0}",\r
+                "{1}, {0}",\r
+                "{1}, {0}",\r
+            }\r
+            appendItems{\r
+                Timezone{"{0} {1}"}\r
+            }\r
+            availableFormats{\r
+                Bh{"h B"}\r
+                Bhm{"h:mm B"}\r
+                Bhms{"h:mm:ss B"}\r
+                E{"ccc"}\r
+                EBhm{"E h:mm B"}\r
+                EBhms{"E h:mm:ss B"}\r
+                EHm{"E 'kl'. HH:mm"}\r
+                EHms{"E 'kl'. HH:mm:ss"}\r
+                Ed{"E d."}\r
+                Ehm{"E h:mm a"}\r
+                Ehms{"E h:mm:ss a"}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                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
+                Hmsv{"HH:mm:ss v"}\r
+                Hmv{"HH:mm v"}\r
+                M{"L."}\r
+                MEd{"E d.M."}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMW{\r
+                    one{"W. 'uke' 'i' MMMM"}\r
+                    other{"W. 'uke' 'i' MMMM"}\r
+                }\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                h{"h a"}\r
+                hm{"h:mm a"}\r
+                hms{"h:mm:ss a"}\r
+                hmsv{"h:mm:ss a v"}\r
+                hmv{"h:mm a v"}\r
+                ms{"mm:ss"}\r
+                y{"y"}\r
+                yM{"M.y"}\r
+                yMEd{"E d.M.y"}\r
+                yMM{"MM.y"}\r
+                yMMM{"MMM y"}\r
+                yMMMEd{"E d. MMM y"}\r
+                yMMMM{"MMMM y"}\r
+                yMMMd{"d. MMM y"}\r
+                yMd{"d.M.y"}\r
+                yQQQ{"QQQ y"}\r
+                yQQQQ{"QQQQ y"}\r
+                yw{\r
+                    one{"'uke' w 'i' Y"}\r
+                    other{"'uke' w 'i' Y"}\r
+                }\r
+            }\r
+            dayNames{\r
+                format{\r
+                    abbreviated{\r
+                        "søn.",\r
+                        "man.",\r
+                        "tir.",\r
+                        "ons.",\r
+                        "tor.",\r
+                        "fre.",\r
+                        "lør.",\r
+                    }\r
+                    narrow{\r
+                        "S",\r
+                        "M",\r
+                        "T",\r
+                        "O",\r
+                        "T",\r
+                        "F",\r
+                        "L",\r
+                    }\r
+                    short{\r
+                        "sø.",\r
+                        "ma.",\r
+                        "ti.",\r
+                        "on.",\r
+                        "to.",\r
+                        "fr.",\r
+                        "lø.",\r
+                    }\r
+                    wide{\r
+                        "søndag",\r
+                        "mandag",\r
+                        "tirsdag",\r
+                        "onsdag",\r
+                        "torsdag",\r
+                        "fredag",\r
+                        "lørdag",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "søn.",\r
+                        "man.",\r
+                        "tir.",\r
+                        "ons.",\r
+                        "tor.",\r
+                        "fre.",\r
+                        "lør.",\r
+                    }\r
+                    narrow{\r
+                        "S",\r
+                        "M",\r
+                        "T",\r
+                        "O",\r
+                        "T",\r
+                        "F",\r
+                        "L",\r
+                    }\r
+                    short{\r
+                        "sø.",\r
+                        "ma.",\r
+                        "ti.",\r
+                        "on.",\r
+                        "to.",\r
+                        "fr.",\r
+                        "lø.",\r
+                    }\r
+                    wide{\r
+                        "søndag",\r
+                        "mandag",\r
+                        "tirsdag",\r
+                        "onsdag",\r
+                        "torsdag",\r
+                        "fredag",\r
+                        "lørdag",\r
+                    }\r
+                }\r
+            }\r
+            dayPeriod{\r
+                format{\r
+                    abbreviated{\r
+                        afternoon1{"etterm."}\r
+                        evening1{"kveld"}\r
+                        midnight{"midn."}\r
+                        morning1{"morg."}\r
+                        morning2{"form."}\r
+                        night1{"natt"}\r
+                    }\r
+                    narrow{\r
+                        afternoon1{"em."}\r
+                        evening1{"kv."}\r
+                        midnight{"mn."}\r
+                        morning1{"mg."}\r
+                        morning2{"fm."}\r
+                        night1{"nt."}\r
+                    }\r
+                    wide{\r
+                        afternoon1{"på ettermiddagen"}\r
+                        evening1{"på kvelden"}\r
+                        midnight{"midnatt"}\r
+                        morning1{"på morgenen"}\r
+                        morning2{"på formiddagen"}\r
+                        night1{"på natten"}\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        afternoon1{"etterm."}\r
+                        am{"a.m."}\r
+                        evening1{"kveld"}\r
+                        midnight{"midn."}\r
+                        morning1{"morg."}\r
+                        morning2{"form."}\r
+                        night1{"natt"}\r
+                        pm{"p.m."}\r
+                    }\r
+                    narrow{\r
+                        afternoon1{"em."}\r
+                        am{"a.m."}\r
+                        evening1{"kv."}\r
+                        midnight{"mn."}\r
+                        morning1{"mg."}\r
+                        morning2{"fm."}\r
+                        night1{"nt."}\r
+                        pm{"p.m."}\r
+                    }\r
+                    wide{\r
+                        afternoon1{"ettermiddag"}\r
+                        am{"a.m."}\r
+                        evening1{"kveld"}\r
+                        midnight{"midnatt"}\r
+                        morning1{"morgen"}\r
+                        morning2{"formiddag"}\r
+                        night1{"natt"}\r
+                        pm{"p.m."}\r
+                    }\r
+                }\r
+            }\r
+            eras{\r
+                abbreviated{\r
+                    "f.Kr.",\r
+                    "e.Kr.",\r
+                }\r
+                abbreviated%variant{\r
+                    "fvt.",\r
+                    "evt.",\r
+                }\r
+                narrow{\r
+                    "f.Kr.",\r
+                    "e.Kr.",\r
+                }\r
+                narrow%variant{\r
+                    "fvt.",\r
+                    "vt.",\r
+                }\r
+                wide{\r
+                    "før Kristus",\r
+                    "etter Kristus",\r
+                }\r
+                wide%variant{\r
+                    "før vår tidsregning",\r
+                    "etter vår tidsregning",\r
+                }\r
+            }\r
+            intervalFormats{\r
+                Bh{\r
+                    B{"h B–h B"}\r
+                }\r
+                Bhm{\r
+                    B{"h:mm B–h:mm B"}\r
+                }\r
+                Gy{\r
+                    G{"y G–y G"}\r
+                    y{"y–y G"}\r
+                }\r
+                GyM{\r
+                    G{"MM.y GGGGG–MM.y GGGGG"}\r
+                    M{"MM.y–MM.y GGGGG"}\r
+                    y{"MM.y–MM.y GGGGG"}\r
+                }\r
+                GyMEd{\r
+                    G{"E dd.MM.y GGGGG–E dd.MM.y GGGGG"}\r
+                    M{"E dd.MM.y–E dd.MM.y GGGGG"}\r
+                    d{"E dd.MM.y–E dd.MM.y GGGGG"}\r
+                    y{"E dd.MM.y–E dd.MM.y GGGGG"}\r
+                }\r
+                GyMMM{\r
+                    G{"MMM y G–MMM y G"}\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                GyMMMEd{\r
+                    G{"E d. MMM y G–E d. MMM y G"}\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                GyMMMd{\r
+                    G{"d. MMM y G–d. MMM y G"}\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                GyMd{\r
+                    G{"dd.MM.y GGGGG–dd.MM.y GGGGG"}\r
+                    M{"dd.MM.y–dd.MM.y GGGGG"}\r
+                    d{"dd.MM.y–dd.MM.y GGGGG"}\r
+                    y{"dd.MM.y–dd.MM.y GGGGG"}\r
+                }\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hm{\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
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E dd.MM.–E dd.MM."}\r
+                    d{"E dd.MM.–E dd.MM."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d.–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"dd.MM.–dd.MM."}\r
+                    d{"dd.MM.–dd.MM."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    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
+                }\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
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y"}\r
+                }\r
+                yM{\r
+                    M{"MM.y–MM.y"}\r
+                    y{"MM.y–MM.y"}\r
+                }\r
+                yMEd{\r
+                    M{"E dd.MM.y–E dd.MM.y"}\r
+                    d{"E dd.MM.y–E dd.MM.y"}\r
+                    y{"E dd.MM.y–E dd.MM.y"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y"}\r
+                    y{"MMM y–MMM y"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y"}\r
+                    d{"E d.–E d. MMM y"}\r
+                    y{"E d. MMM y–E d. MMM y"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y"}\r
+                    y{"MMMM y–MMMM y"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y"}\r
+                    d{"d.–d. MMM y"}\r
+                    y{"d. MMM y–d. MMM y"}\r
+                }\r
+                yMd{\r
+                    M{"dd.MM.y–dd.MM.y"}\r
+                    d{"dd.MM.y–dd.MM.y"}\r
+                    y{"dd.MM.y–dd.MM.y"}\r
+                }\r
+            }\r
+            monthNames{\r
+                format{\r
+                    abbreviated{\r
+                        "jan.",\r
+                        "feb.",\r
+                        "mar.",\r
+                        "apr.",\r
+                        "mai",\r
+                        "jun.",\r
+                        "jul.",\r
+                        "aug.",\r
+                        "sep.",\r
+                        "okt.",\r
+                        "nov.",\r
+                        "des.",\r
+                    }\r
+                    narrow{\r
+                        "J",\r
+                        "F",\r
+                        "M",\r
+                        "A",\r
+                        "M",\r
+                        "J",\r
+                        "J",\r
+                        "A",\r
+                        "S",\r
+                        "O",\r
+                        "N",\r
+                        "D",\r
+                    }\r
+                    wide{\r
+                        "januar",\r
+                        "februar",\r
+                        "mars",\r
+                        "april",\r
+                        "mai",\r
+                        "juni",\r
+                        "juli",\r
+                        "august",\r
+                        "september",\r
+                        "oktober",\r
+                        "november",\r
+                        "desember",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "jan",\r
+                        "feb",\r
+                        "mar",\r
+                        "apr",\r
+                        "mai",\r
+                        "jun",\r
+                        "jul",\r
+                        "aug",\r
+                        "sep",\r
+                        "okt",\r
+                        "nov",\r
+                        "des",\r
+                    }\r
+                    narrow{\r
+                        "J",\r
+                        "F",\r
+                        "M",\r
+                        "A",\r
+                        "M",\r
+                        "J",\r
+                        "J",\r
+                        "A",\r
+                        "S",\r
+                        "O",\r
+                        "N",\r
+                        "D",\r
+                    }\r
+                    wide{\r
+                        "januar",\r
+                        "februar",\r
+                        "mars",\r
+                        "april",\r
+                        "mai",\r
+                        "juni",\r
+                        "juli",\r
+                        "august",\r
+                        "september",\r
+                        "oktober",\r
+                        "november",\r
+                        "desember",\r
+                    }\r
+                }\r
+            }\r
+            quarters{\r
+                format{\r
+                    abbreviated{\r
+                        "K1",\r
+                        "K2",\r
+                        "K3",\r
+                        "K4",\r
+                    }\r
+                    narrow{\r
+                        "1.",\r
+                        "2.",\r
+                        "3.",\r
+                        "4.",\r
+                    }\r
+                    wide{\r
+                        "1. kvartal",\r
+                        "2. kvartal",\r
+                        "3. kvartal",\r
+                        "4. kvartal",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "K1",\r
+                        "K2",\r
+                        "K3",\r
+                        "K4",\r
+                    }\r
+                    narrow{\r
+                        "1.",\r
+                        "2.",\r
+                        "3.",\r
+                        "4.",\r
+                    }\r
+                    wide{\r
+                        "1. kvartal",\r
+                        "2. kvartal",\r
+                        "3. kvartal",\r
+                        "4. kvartal",\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        hebrew{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y G",\r
+                "d. MMMM y G",\r
+                "d. MMM y G",\r
+                "d.M.y G",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                GyMMMEd{"E d. MMM y G"}\r
+                GyMMMd{"d. MMM y G"}\r
+                M{"L."}\r
+                MEd{"E d.M"}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                y{"y G"}\r
+                yyyy{"y G"}\r
+                yyyyM{"M.y G"}\r
+                yyyyMEd{"E d.M.y G"}\r
+                yyyyMM{"MM.y G"}\r
+                yyyyMMM{"MMM y G"}\r
+                yyyyMMMEd{"E d. MMM y G"}\r
+                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMd{"d. MMM y G"}\r
+                yyyyMd{"d.M.y G"}\r
+                yyyyQQQ{"QQQ y G"}\r
+                yyyyQQQQ{"QQQQ y G"}\r
+            }\r
+            eras{\r
+                abbreviated{\r
+                    "AM",\r
+                }\r
+                narrow{\r
+                    "AM",\r
+                }\r
+                wide{\r
+                    "AM",\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E d.M.–E d.M."}\r
+                    d{"E d.M.–E d.M."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"d.M.–d.M."}\r
+                    d{"d.M.–d.M."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    h{"h–h a"}\r
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y G"}\r
+                }\r
+                yM{\r
+                    M{"M.y–M.y G"}\r
+                    y{"M.y–M.y G"}\r
+                }\r
+                yMEd{\r
+                    M{"E d.M.y–E d.M.y G"}\r
+                    d{"E d.M.y–E d.M.y G"}\r
+                    y{"E d.M.y–E d.M.y G"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y G"}\r
+                    y{"MMMM y–MMMM y G"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                yMd{\r
+                    M{"d.M.y–d.M.y G"}\r
+                    d{"d.M.y–d.M.y G"}\r
+                    y{"d.M.y–d.M.y G"}\r
+                }\r
+            }\r
+            monthNames{\r
+                format{\r
+                    abbreviated{\r
+                        "tishri",\r
+                        "heshvan",\r
+                        "kislev",\r
+                        "tevet",\r
+                        "shevat",\r
+                        "adar I",\r
+                        "adar",\r
+                        "nisan",\r
+                        "iyar",\r
+                        "sivan",\r
+                        "tamuz",\r
+                        "av",\r
+                        "elul",\r
+                        "adar II",\r
+                    }\r
+                    narrow{\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
+                        "7",\r
+                    }\r
+                    wide{\r
+                        "tishri",\r
+                        "heshvan",\r
+                        "kislev",\r
+                        "tevet",\r
+                        "shevat",\r
+                        "adar I",\r
+                        "adar",\r
+                        "nisan",\r
+                        "iyar",\r
+                        "sivan",\r
+                        "tamuz",\r
+                        "av",\r
+                        "elul",\r
+                        "adar II",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "tishri",\r
+                        "heshvan",\r
+                        "kislev",\r
+                        "tevet",\r
+                        "shevat",\r
+                        "adar I",\r
+                        "adar",\r
+                        "nisan",\r
+                        "iyar",\r
+                        "sivan",\r
+                        "tamuz",\r
+                        "av",\r
+                        "elul",\r
+                        "adar II",\r
+                    }\r
+                    narrow{\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
+                        "7",\r
+                    }\r
+                    wide{\r
+                        "tishri",\r
+                        "heshvan",\r
+                        "kislev",\r
+                        "tevet",\r
+                        "shevat",\r
+                        "adar I",\r
+                        "adar",\r
+                        "nisan",\r
+                        "iyar",\r
+                        "sivan",\r
+                        "tamuz",\r
+                        "av",\r
+                        "elul",\r
+                        "adar II",\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        indian{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y G",\r
+                "d. MMMM y G",\r
+                "d. MMM y G",\r
+                "d.M.y G",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                GyMMMEd{"E d. MMM y G"}\r
+                GyMMMd{"d. MMM y G"}\r
+                M{"L."}\r
+                MEd{"E d.M"}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                y{"y G"}\r
+                yyyy{"y G"}\r
+                yyyyM{"M.y G"}\r
+                yyyyMEd{"E d.M.y G"}\r
+                yyyyMM{"MM.y G"}\r
+                yyyyMMM{"MMM y G"}\r
+                yyyyMMMEd{"E d. MMM y G"}\r
+                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMd{"d. MMM y G"}\r
+                yyyyMd{"d.M.y G"}\r
+                yyyyQQQ{"QQQ y G"}\r
+                yyyyQQQQ{"QQQQ y G"}\r
+            }\r
+            eras{\r
+                abbreviated{\r
+                    "saka",\r
+                }\r
+                narrow{\r
+                    "saka",\r
+                }\r
+                wide{\r
+                    "saka",\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E d.M.–E d.M."}\r
+                    d{"E d.M.–E d.M."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"d.M.–d.M."}\r
+                    d{"d.M.–d.M."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    h{"h–h a"}\r
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y G"}\r
+                }\r
+                yM{\r
+                    M{"M.y–M.y G"}\r
+                    y{"M.y–M.y G"}\r
+                }\r
+                yMEd{\r
+                    M{"E d.M.y–E d.M.y G"}\r
+                    d{"E d.M.y–E d.M.y G"}\r
+                    y{"E d.M.y–E d.M.y G"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y G"}\r
+                    y{"MMMM y–MMMM y G"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                yMd{\r
+                    M{"d.M.y–d.M.y G"}\r
+                    d{"d.M.y–d.M.y G"}\r
+                    y{"d.M.y–d.M.y G"}\r
+                }\r
+            }\r
+            monthNames{\r
+                format{\r
+                    abbreviated{\r
+                        "chaitra",\r
+                        "vaisakha",\r
+                        "jyaistha",\r
+                        "asadha",\r
+                        "sravana",\r
+                        "bhadra",\r
+                        "asvina",\r
+                        "kartika",\r
+                        "agrahayana",\r
+                        "pausa",\r
+                        "magha",\r
+                        "phalguna",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "chaitra",\r
+                        "vaisakha",\r
+                        "jyaistha",\r
+                        "asadha",\r
+                        "sravana",\r
+                        "bhadra",\r
+                        "asvina",\r
+                        "kartika",\r
+                        "agrahayana",\r
+                        "pausa",\r
+                        "magha",\r
+                        "phalguna",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "chaitra",\r
+                        "vaisakha",\r
+                        "jyaistha",\r
+                        "asadha",\r
+                        "sravana",\r
+                        "bhadra",\r
+                        "asvina",\r
+                        "kartika",\r
+                        "agrahayana",\r
+                        "pausa",\r
+                        "magha",\r
+                        "phalguna",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "chaitra",\r
+                        "vaisakha",\r
+                        "jyaistha",\r
+                        "asadha",\r
+                        "sravana",\r
+                        "bhadra",\r
+                        "asvina",\r
+                        "kartika",\r
+                        "agrahayana",\r
+                        "pausa",\r
+                        "magha",\r
+                        "phalguna",\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        islamic{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y G",\r
+                "d. MMMM y G",\r
+                "d. MMM y G",\r
+                "d.M.y G",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                GyMMMEd{"E d. MMM y G"}\r
+                GyMMMd{"d. MMM y G"}\r
+                M{"L."}\r
+                MEd{"E d.M"}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                y{"y G"}\r
+                yyyy{"y G"}\r
+                yyyyM{"M.y G"}\r
+                yyyyMEd{"E d.M.y G"}\r
+                yyyyMM{"MM.y G"}\r
+                yyyyMMM{"MMM y G"}\r
+                yyyyMMMEd{"E d. MMM y G"}\r
+                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMd{"d. MMM y G"}\r
+                yyyyMd{"d.M.y G"}\r
+                yyyyQQQ{"QQQ y G"}\r
+                yyyyQQQQ{"QQQQ y G"}\r
+            }\r
+            eras{\r
+                abbreviated{\r
+                    "AH",\r
+                }\r
+                narrow{\r
+                    "AH",\r
+                }\r
+                wide{\r
+                    "AH",\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E d.M.–E d.M."}\r
+                    d{"E d.M.–E d.M."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"d.M.–d.M."}\r
+                    d{"d.M.–d.M."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    h{"h–h a"}\r
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y G"}\r
+                }\r
+                yM{\r
+                    M{"M.y–M.y G"}\r
+                    y{"M.y–M.y G"}\r
+                }\r
+                yMEd{\r
+                    M{"E d.M.y–E d.M.y G"}\r
+                    d{"E d.M.y–E d.M.y G"}\r
+                    y{"E d.M.y–E d.M.y G"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y G"}\r
+                    y{"MMMM y–MMMM y G"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                yMd{\r
+                    M{"d.M.y–d.M.y G"}\r
+                    d{"d.M.y–d.M.y G"}\r
+                    y{"d.M.y–d.M.y G"}\r
+                }\r
+            }\r
+            monthNames{\r
+                format{\r
+                    abbreviated{\r
+                        "muh.",\r
+                        "saf.",\r
+                        "rab. I",\r
+                        "rab. II",\r
+                        "jum. I",\r
+                        "jum. II",\r
+                        "raj.",\r
+                        "sha.",\r
+                        "ram.",\r
+                        "shaw.",\r
+                        "dhuʻl-q.",\r
+                        "dhuʻl-h.",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "muharram",\r
+                        "safar",\r
+                        "rabiʻ I",\r
+                        "rabiʻ II",\r
+                        "jumada I",\r
+                        "jumada II",\r
+                        "rajab",\r
+                        "shaʻban",\r
+                        "ramadan",\r
+                        "shawwal",\r
+                        "dhuʻl-qiʻdah",\r
+                        "dhuʻl-hijjah",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "muh.",\r
+                        "saf.",\r
+                        "rab. I",\r
+                        "rab. II",\r
+                        "jum. I",\r
+                        "jum. II",\r
+                        "raj.",\r
+                        "sha.",\r
+                        "ram.",\r
+                        "shaw.",\r
+                        "dhuʻl-q.",\r
+                        "Dhuʻl-H.",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "muharram",\r
+                        "safar",\r
+                        "rabiʻ I",\r
+                        "rabiʻ II",\r
+                        "jumada I",\r
+                        "jumada II",\r
+                        "rajab",\r
+                        "shaʻban",\r
+                        "ramadan",\r
+                        "shawwal",\r
+                        "dhuʻl-qiʻdah",\r
+                        "dhuʻl-hijjah",\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        japanese{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y G",\r
+                "d. MMMM y G",\r
+                "d. MMM y G",\r
+                "d.M y G",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                GyMMMEd{"E d. MMM y G"}\r
+                GyMMMd{"d. MMM y G"}\r
+                M{"L."}\r
+                MEd{"E d.M"}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                y{"y G"}\r
+                yyyy{"y G"}\r
+                yyyyM{"M.y G"}\r
+                yyyyMEd{"E d.M.y G"}\r
+                yyyyMM{"MM.y G"}\r
+                yyyyMMM{"MMM y G"}\r
+                yyyyMMMEd{"E d. MMM y G"}\r
+                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMd{"d. MMM y G"}\r
+                yyyyMd{"d.M.y G"}\r
+                yyyyQQQ{"QQQ y G"}\r
+                yyyyQQQQ{"QQQQ y G"}\r
+            }\r
+            eras{\r
+                abbreviated{\r
+                    "Taika (645–650)",\r
+                    "Hakuchi (650–671)",\r
+                    "Hakuhō (672–686)",\r
+                    "Shuchō (686–701)",\r
+                    "Taihō (701–704)",\r
+                    "Keiun (704–708)",\r
+                    "Wadō (708–715)",\r
+                    "Reiki (715–717)",\r
+                    "Yōrō (717–724)",\r
+                    "Jinki (724–729)",\r
+                    "Tenpyō (729–749)",\r
+                    "Tenpyō-kampō (749-749)",\r
+                    "Tenpyō-shōhō (749-757)",\r
+                    "Tenpyō-hōji (757-765)",\r
+                    "Tenpyō-jingo (765-767)",\r
+                    "Jingo-keiun (767-770)",\r
+                    "Hōki (770–780)",\r
+                    "Ten-ō (781-782)",\r
+                    "Enryaku (782–806)",\r
+                    "Daidō (806–810)",\r
+                    "Kōnin (810–824)",\r
+                    "Tenchō (824–834)",\r
+                    "Jōwa (834–848)",\r
+                    "Kajō (848–851)",\r
+                    "Ninju (851–854)",\r
+                    "Saikō (854–857)",\r
+                    "Ten-an (857-859)",\r
+                    "Jōgan (859–877)",\r
+                    "Gangyō (877–885)",\r
+                    "Ninna (885–889)",\r
+                    "Kanpyō (889–898)",\r
+                    "Shōtai (898–901)",\r
+                    "Engi (901–923)",\r
+                    "Enchō (923–931)",\r
+                    "Jōhei (931–938)",\r
+                    "Tengyō (938–947)",\r
+                    "Tenryaku (947–957)",\r
+                    "Tentoku (957–961)",\r
+                    "Ōwa (961–964)",\r
+                    "Kōhō (964–968)",\r
+                    "Anna (968–970)",\r
+                    "Tenroku (970–973)",\r
+                    "Ten’en (973–976)",\r
+                    "Jōgen (976–978)",\r
+                    "Tengen (978–983)",\r
+                    "Eikan (983–985)",\r
+                    "Kanna (985–987)",\r
+                    "Eien (987–989)",\r
+                    "Eiso (989–990)",\r
+                    "Shōryaku (990–995)",\r
+                    "Chōtoku (995–999)",\r
+                    "Chōhō (999–1004)",\r
+                    "Kankō (1004–1012)",\r
+                    "Chōwa (1012–1017)",\r
+                    "Kannin (1017–1021)",\r
+                    "Jian (1021–1024)",\r
+                    "Manju (1024–1028)",\r
+                    "Chōgen (1028–1037)",\r
+                    "Chōryaku (1037–1040)",\r
+                    "Chōkyū (1040–1044)",\r
+                    "Kantoku (1044–1046)",\r
+                    "Eishō (1046–1053)",\r
+                    "Tengi (1053–1058)",\r
+                    "Kōhei (1058–1065)",\r
+                    "Jiryaku (1065–1069)",\r
+                    "Enkyū (1069–1074)",\r
+                    "Shōho (1074–1077)",\r
+                    "Shōryaku (1077–1081)",\r
+                    "Eihō (1081–1084)",\r
+                    "Ōtoku (1084–1087)",\r
+                    "Kanji (1087–1094)",\r
+                    "Kahō (1094–1096)",\r
+                    "Eichō (1096–1097)",\r
+                    "Jōtoku (1097–1099)",\r
+                    "Kōwa (1099–1104)",\r
+                    "Chōji (1104–1106)",\r
+                    "Kashō (1106–1108)",\r
+                    "Tennin (1108–1110)",\r
+                    "Ten-ei (1110-1113)",\r
+                    "Eikyū (1113–1118)",\r
+                    "Gen’ei (1118–1120)",\r
+                    "Hōan (1120–1124)",\r
+                    "Tenji (1124–1126)",\r
+                    "Daiji (1126–1131)",\r
+                    "Tenshō (1131–1132)",\r
+                    "Chōshō (1132–1135)",\r
+                    "Hōen (1135–1141)",\r
+                    "Eiji (1141–1142)",\r
+                    "Kōji (1142–1144)",\r
+                    "Ten’yō (1144–1145)",\r
+                    "Kyūan (1145–1151)",\r
+                    "Ninpei (1151–1154)",\r
+                    "Kyūju (1154–1156)",\r
+                    "Hōgen (1156–1159)",\r
+                    "Heiji (1159–1160)",\r
+                    "Eiryaku (1160–1161)",\r
+                    "Ōho (1161–1163)",\r
+                    "Chōkan (1163–1165)",\r
+                    "Eiman (1165–1166)",\r
+                    "Nin’an (1166–1169)",\r
+                    "Kaō (1169–1171)",\r
+                    "Shōan (1171–1175)",\r
+                    "Angen (1175–1177)",\r
+                    "Jishō (1177–1181)",\r
+                    "Yōwa (1181–1182)",\r
+                    "Juei (1182–1184)",\r
+                    "Genryaku (1184–1185)",\r
+                    "Bunji (1185–1190)",\r
+                    "Kenkyū (1190–1199)",\r
+                    "Shōji (1199–1201)",\r
+                    "Kennin (1201–1204)",\r
+                    "Genkyū (1204–1206)",\r
+                    "Ken’ei (1206–1207)",\r
+                    "Jōgen (1207–1211)",\r
+                    "Kenryaku (1211–1213)",\r
+                    "Kenpō (1213–1219)",\r
+                    "Jōkyū (1219–1222)",\r
+                    "Jōō (1222–1224)",\r
+                    "Gennin (1224–1225)",\r
+                    "Karoku (1225–1227)",\r
+                    "Antei (1227–1229)",\r
+                    "Kanki (1229–1232)",\r
+                    "Jōei (1232–1233)",\r
+                    "Tenpuku (1233–1234)",\r
+                    "Bunryaku (1234–1235)",\r
+                    "Katei (1235–1238)",\r
+                    "Ryakunin (1238–1239)",\r
+                    "En’ō (1239–1240)",\r
+                    "Ninji (1240–1243)",\r
+                    "Kangen (1243–1247)",\r
+                    "Hōji (1247–1249)",\r
+                    "Kenchō (1249–1256)",\r
+                    "Kōgen (1256–1257)",\r
+                    "Shōka (1257–1259)",\r
+                    "Shōgen (1259–1260)",\r
+                    "Bun’ō (1260–1261)",\r
+                    "Kōchō (1261–1264)",\r
+                    "Bun’ei (1264–1275)",\r
+                    "Kenji (1275–1278)",\r
+                    "Kōan (1278–1288)",\r
+                    "Shōō (1288–1293)",\r
+                    "Einin (1293–1299)",\r
+                    "Shōan (1299–1302)",\r
+                    "Kengen (1302–1303)",\r
+                    "Kagen (1303–1306)",\r
+                    "Tokuji (1306–1308)",\r
+                    "Enkyō (1308–1311)",\r
+                    "Ōchō (1311–1312)",\r
+                    "Shōwa (1312–1317)",\r
+                    "Bunpō (1317–1319)",\r
+                    "Genō (1319–1321)",\r
+                    "Genkō (1321–1324)",\r
+                    "Shōchū (1324–1326)",\r
+                    "Karyaku (1326–1329)",\r
+                    "Gentoku (1329–1331)",\r
+                    "Genkō (1331–1334)",\r
+                    "Kenmu (1334–1336)",\r
+                    "Engen (1336–1340)",\r
+                    "Kōkoku (1340–1346)",\r
+                    "Shōhei (1346–1370)",\r
+                    "Kentoku (1370–1372)",\r
+                    "Bunchū (1372–1375)",\r
+                    "Tenju (1375–1379)",\r
+                    "Kōryaku (1379–1381)",\r
+                    "Kōwa (1381–1384)",\r
+                    "Genchū (1384–1392)",\r
+                    "Meitoku (1384–1387)",\r
+                    "Kakei (1387–1389)",\r
+                    "Kōō (1389–1390)",\r
+                    "Meitoku (1390–1394)",\r
+                    "Ōei (1394–1428)",\r
+                    "Shōchō (1428–1429)",\r
+                    "Eikyō (1429–1441)",\r
+                    "Kakitsu (1441–1444)",\r
+                    "Bun’an (1444–1449)",\r
+                    "Hōtoku (1449–1452)",\r
+                    "Kyōtoku (1452–1455)",\r
+                    "Kōshō (1455–1457)",\r
+                    "Chōroku (1457–1460)",\r
+                    "Kanshō (1460–1466)",\r
+                    "Bunshō (1466–1467)",\r
+                    "Ōnin (1467–1469)",\r
+                    "Bunmei (1469–1487)",\r
+                    "Chōkyō (1487–1489)",\r
+                    "Entoku (1489–1492)",\r
+                    "Meiō (1492–1501)",\r
+                    "Bunki (1501–1504)",\r
+                    "Eishō (1504–1521)",\r
+                    "Taiei (1521–1528)",\r
+                    "Kyōroku (1528–1532)",\r
+                    "Tenbun (1532–1555)",\r
+                    "Kōji (1555–1558)",\r
+                    "Eiroku (1558–1570)",\r
+                    "Genki (1570–1573)",\r
+                    "Tenshō (1573–1592)",\r
+                    "Bunroku (1592–1596)",\r
+                    "Keichō (1596–1615)",\r
+                    "Genna (1615–1624)",\r
+                    "Kan’ei (1624–1644)",\r
+                    "Shōho (1644–1648)",\r
+                    "Keian (1648–1652)",\r
+                    "Jōō (1652–1655)",\r
+                    "Meireki (1655–1658)",\r
+                    "Manji (1658–1661)",\r
+                    "Kanbun (1661–1673)",\r
+                    "Enpō (1673–1681)",\r
+                    "Tenna (1681–1684)",\r
+                    "Jōkyō (1684–1688)",\r
+                    "Genroku (1688–1704)",\r
+                    "Hōei (1704–1711)",\r
+                    "Shōtoku (1711–1716)",\r
+                    "Kyōhō (1716–1736)",\r
+                    "Genbun (1736–1741)",\r
+                    "Kanpō (1741–1744)",\r
+                    "Enkyō (1744–1748)",\r
+                    "Kan’en (1748–1751)",\r
+                    "Hōreki (1751–1764)",\r
+                    "Meiwa (1764–1772)",\r
+                    "An’ei (1772–1781)",\r
+                    "Tenmei (1781–1789)",\r
+                    "Kansei (1789–1801)",\r
+                    "Kyōwa (1801–1804)",\r
+                    "Bunka (1804–1818)",\r
+                    "Bunsei (1818–1830)",\r
+                    "Tenpō (1830–1844)",\r
+                    "Kōka (1844–1848)",\r
+                    "Kaei (1848–1854)",\r
+                    "Ansei (1854–1860)",\r
+                    "Man’en (1860–1861)",\r
+                    "Bunkyū (1861–1864)",\r
+                    "Genji (1864–1865)",\r
+                    "Keiō (1865–1868)",\r
+                    "Meiji",\r
+                    "Taishō",\r
+                    "Shōwa",\r
+                    "Heisei",\r
+                    "Reiwa",\r
+                }\r
+                narrow{\r
+                    "Taika (645–650)",\r
+                    "Hakuchi (650–671)",\r
+                    "Hakuhō (672–686)",\r
+                    "Shuchō (686–701)",\r
+                    "Taihō (701–704)",\r
+                    "Keiun (704–708)",\r
+                    "Wadō (708–715)",\r
+                    "Reiki (715–717)",\r
+                    "Yōrō (717–724)",\r
+                    "Jinki (724–729)",\r
+                    "Tenpyō (729–749)",\r
+                    "Tenpyō-kampō (749–749)",\r
+                    "Tenpyō-shōhō (749–757)",\r
+                    "Tenpyō-hōji (757–765)",\r
+                    "Tenpyō-jingo (765–767)",\r
+                    "Jingo-keiun (767–770)",\r
+                    "Hōki (770–780)",\r
+                    "Ten-ō (781–782)",\r
+                    "Enryaku (782–806)",\r
+                    "Daidō (806–810)",\r
+                    "Kōnin (810–824)",\r
+                    "Tenchō (824–834)",\r
+                    "Jōwa (834–848)",\r
+                    "Kajō (848–851)",\r
+                    "Ninju (851–854)",\r
+                    "Saikō (854–857)",\r
+                    "Ten-an (857–859)",\r
+                    "Jōgan (859–877)",\r
+                    "Gangyō (877–885)",\r
+                    "Ninna (885–889)",\r
+                    "Kanpyō (889–898)",\r
+                    "Shōtai (898–901)",\r
+                    "Engi (901–923)",\r
+                    "Enchō (923–931)",\r
+                    "Jōhei (931–938)",\r
+                    "Tengyō (938–947)",\r
+                    "Tenryaku (947–957)",\r
+                    "Tentoku (957–961)",\r
+                    "Ōwa (961–964)",\r
+                    "Kōhō (964–968)",\r
+                    "Anna (968–970)",\r
+                    "Tenroku (970–973)",\r
+                    "Ten’en (973–976)",\r
+                    "Jōgen (976–978)",\r
+                    "Tengen (978–983)",\r
+                    "Eikan (983–985)",\r
+                    "Kanna (985–987)",\r
+                    "Eien (987–989)",\r
+                    "Eiso (989–990)",\r
+                    "Shōryaku (990–995)",\r
+                    "Chōtoku (995–999)",\r
+                    "Chōhō (999–1004)",\r
+                    "Kankō (1004–1012)",\r
+                    "Chōwa (1012–1017)",\r
+                    "Kannin (1017–1021)",\r
+                    "Jian (1021–1024)",\r
+                    "Manju (1024–1028)",\r
+                    "Chōgen (1028–1037)",\r
+                    "Chōryaku (1037–1040)",\r
+                    "Chōkyū (1040–1044)",\r
+                    "Kantoku (1044–1046)",\r
+                    "Eishō (1046–1053)",\r
+                    "Tengi (1053–1058)",\r
+                    "Kōhei (1058–1065)",\r
+                    "Jiryaku (1065–1069)",\r
+                    "Enkyū (1069–1074)",\r
+                    "Shōho (1074–1077)",\r
+                    "Shōryaku (1077–1081)",\r
+                    "Eihō (1081–1084)",\r
+                    "Ōtoku (1084–1087)",\r
+                    "Kanji (1087–1094)",\r
+                    "Kahō (1094–1096)",\r
+                    "Eichō (1096–1097)",\r
+                    "Jōtoku (1097–1099)",\r
+                    "Kōwa (1099–1104)",\r
+                    "Chōji (1104–1106)",\r
+                    "Kashō (1106–1108)",\r
+                    "Tennin (1108–1110)",\r
+                    "Ten-ei (1110–1113)",\r
+                    "Eikyū (1113–1118)",\r
+                    "Gen’ei (1118–1120)",\r
+                    "Hōan (1120–1124)",\r
+                    "Tenji (1124–1126)",\r
+                    "Daiji (1126–1131)",\r
+                    "Tenshō (1131–1132)",\r
+                    "Chōshō (1132–1135)",\r
+                    "Hōen (1135–1141)",\r
+                    "Eiji (1141–1142)",\r
+                    "Kōji (1142–1144)",\r
+                    "Ten’yō (1144–1145)",\r
+                    "Kyūan (1145–1151)",\r
+                    "Ninpei (1151–1154)",\r
+                    "Kyūju (1154–1156)",\r
+                    "Hōgen (1156–1159)",\r
+                    "Heiji (1159–1160)",\r
+                    "Eiryaku (1160–1161)",\r
+                    "Ōho (1161–1163)",\r
+                    "Chōkan (1163–1165)",\r
+                    "Eiman (1165–1166)",\r
+                    "Nin’an (1166–1169)",\r
+                    "Kaō (1169–1171)",\r
+                    "Shōan (1171–1175)",\r
+                    "Angen (1175–1177)",\r
+                    "Jishō (1177–1181)",\r
+                    "Yōwa (1181–1182)",\r
+                    "Juei (1182–1184)",\r
+                    "Genryaku (1184–1185)",\r
+                    "Bunji (1185–1190)",\r
+                    "Kenkyū (1190–1199)",\r
+                    "Shōji (1199–1201)",\r
+                    "Kennin (1201–1204)",\r
+                    "Genkyū (1204–1206)",\r
+                    "Ken’ei (1206–1207)",\r
+                    "Jōgen (1207–1211)",\r
+                    "Kenryaku (1211–1213)",\r
+                    "Kenpō (1213–1219)",\r
+                    "Jōkyū (1219–1222)",\r
+                    "Jōō (1222–1224)",\r
+                    "Gennin (1224–1225)",\r
+                    "Karoku (1225–1227)",\r
+                    "Antei (1227–1229)",\r
+                    "Kanki (1229–1232)",\r
+                    "Jōei (1232–1233)",\r
+                    "Tenpuku (1233–1234)",\r
+                    "Bunryaku (1234–1235)",\r
+                    "Katei (1235–1238)",\r
+                    "Ryakunin (1238–1239)",\r
+                    "En’ō (1239–1240)",\r
+                    "Ninji (1240–1243)",\r
+                    "Kangen (1243–1247)",\r
+                    "Hōji (1247–1249)",\r
+                    "Kenchō (1249–1256)",\r
+                    "Kōgen (1256–1257)",\r
+                    "Shōka (1257–1259)",\r
+                    "Shōgen (1259–1260)",\r
+                    "Bun’ō (1260–1261)",\r
+                    "Kōchō (1261–1264)",\r
+                    "Bun’ei (1264–1275)",\r
+                    "Kenji (1275–1278)",\r
+                    "Kōan (1278–1288)",\r
+                    "Shōō (1288–1293)",\r
+                    "Einin (1293–1299)",\r
+                    "Shōan (1299–1302)",\r
+                    "Kengen (1302–1303)",\r
+                    "Kagen (1303–1306)",\r
+                    "Tokuji (1306–1308)",\r
+                    "Enkyō (1308–1311)",\r
+                    "Ōchō (1311–1312)",\r
+                    "Shōwa (1312–1317)",\r
+                    "Bunpō (1317–1319)",\r
+                    "Genō (1319–1321)",\r
+                    "Genkō (1321–1324)",\r
+                    "Shōchū (1324–1326)",\r
+                    "Karyaku (1326–1329)",\r
+                    "Gentoku (1329–1331)",\r
+                    "Genkō (1331–1334)",\r
+                    "Kenmu (1334–1336)",\r
+                    "Engen (1336–1340)",\r
+                    "Kōkoku (1340–1346)",\r
+                    "Shōhei (1346–1370)",\r
+                    "Kentoku (1370–1372)",\r
+                    "Bunchū (1372–1375)",\r
+                    "Tenju (1375–1379)",\r
+                    "Kōryaku (1379–1381)",\r
+                    "Kōwa (1381–1384)",\r
+                    "Genchū (1384–1392)",\r
+                    "Meitoku (1384–1387)",\r
+                    "Kakei (1387–1389)",\r
+                    "Kōō (1389–1390)",\r
+                    "Meitoku (1390–1394)",\r
+                    "Ōei (1394–1428)",\r
+                    "Shōchō (1428–1429)",\r
+                    "Eikyō (1429–1441)",\r
+                    "Kakitsu (1441–1444)",\r
+                    "Bun’an (1444–1449)",\r
+                    "Hōtoku (1449–1452)",\r
+                    "Kyōtoku (1452–1455)",\r
+                    "Kōshō (1455–1457)",\r
+                    "Chōroku (1457–1460)",\r
+                    "Kanshō (1460–1466)",\r
+                    "Bunshō (1466–1467)",\r
+                    "Ōnin (1467–1469)",\r
+                    "Bunmei (1469–1487)",\r
+                    "Chōkyō (1487–1489)",\r
+                    "Entoku (1489–1492)",\r
+                    "Meiō (1492–1501)",\r
+                    "Bunki (1501–1504)",\r
+                    "Eishō (1504–1521)",\r
+                    "Taiei (1521–1528)",\r
+                    "Kyōroku (1528–1532)",\r
+                    "Tenbun (1532–1555)",\r
+                    "Kōji (1555–1558)",\r
+                    "Eiroku (1558–1570)",\r
+                    "Genki (1570–1573)",\r
+                    "Tenshō (1573–1592)",\r
+                    "Bunroku (1592–1596)",\r
+                    "Keichō (1596–1615)",\r
+                    "Genna (1615–1624)",\r
+                    "Kan’ei (1624–1644)",\r
+                    "Shōho (1644–1648)",\r
+                    "Keian (1648–1652)",\r
+                    "Jōō (1652–1655)",\r
+                    "Meireki (1655–1658)",\r
+                    "Manji (1658–1661)",\r
+                    "Kanbun (1661–1673)",\r
+                    "Enpō (1673–1681)",\r
+                    "Tenna (1681–1684)",\r
+                    "Jōkyō (1684–1688)",\r
+                    "Genroku (1688–1704)",\r
+                    "Hōei (1704–1711)",\r
+                    "Shōtoku (1711–1716)",\r
+                    "Kyōhō (1716–1736)",\r
+                    "Genbun (1736–1741)",\r
+                    "Kanpō (1741–1744)",\r
+                    "Enkyō (1744–1748)",\r
+                    "Kan’en (1748–1751)",\r
+                    "Hōreki (1751–1764)",\r
+                    "Meiwa (1764–1772)",\r
+                    "An’ei (1772–1781)",\r
+                    "Tenmei (1781–1789)",\r
+                    "Kansei (1789–1801)",\r
+                    "Kyōwa (1801–1804)",\r
+                    "Bunka (1804–1818)",\r
+                    "Bunsei (1818–1830)",\r
+                    "Tenpō (1830–1844)",\r
+                    "Kōka (1844–1848)",\r
+                    "Kaei (1848–1854)",\r
+                    "Ansei (1854–1860)",\r
+                    "Man’en (1860–1861)",\r
+                    "Bunkyū (1861–1864)",\r
+                    "Genji (1864–1865)",\r
+                    "Keiō (1865–1868)",\r
+                    "M",\r
+                    "T",\r
+                    "S",\r
+                    "H",\r
+                    "R",\r
+                }\r
+                wide{\r
+                    "Taika (645–650)",\r
+                    "Hakuchi (650–671)",\r
+                    "Hakuhō (672–686)",\r
+                    "Shuchō (686–701)",\r
+                    "Taihō (701–704)",\r
+                    "Keiun (704–708)",\r
+                    "Wadō (708–715)",\r
+                    "Reiki (715–717)",\r
+                    "Yōrō (717–724)",\r
+                    "Jinki (724–729)",\r
+                    "Tenpyō (729–749)",\r
+                    "Tenpyō-kampō (749-749)",\r
+                    "Tenpyō-shōhō (749-757)",\r
+                    "Tenpyō-hōji (757-765)",\r
+                    "Tenpyō-jingo (765-767)",\r
+                    "Jingo-keiun (767-770)",\r
+                    "Hōki (770–780)",\r
+                    "Ten-ō (781-782)",\r
+                    "Enryaku (782–806)",\r
+                    "Daidō (806–810)",\r
+                    "Kōnin (810–824)",\r
+                    "Tenchō (824–834)",\r
+                    "Jōwa (834–848)",\r
+                    "Kajō (848–851)",\r
+                    "Ninju (851–854)",\r
+                    "Saikō (854–857)",\r
+                    "Ten-an (857-859)",\r
+                    "Jōgan (859–877)",\r
+                    "Gangyō (877–885)",\r
+                    "Ninna (885–889)",\r
+                    "Kanpyō (889–898)",\r
+                    "Shōtai (898–901)",\r
+                    "Engi (901–923)",\r
+                    "Enchō (923–931)",\r
+                    "Jōhei (931–938)",\r
+                    "Tengyō (938–947)",\r
+                    "Tenryaku (947–957)",\r
+                    "Tentoku (957–961)",\r
+                    "Ōwa (961–964)",\r
+                    "Kōhō (964–968)",\r
+                    "Anna (968–970)",\r
+                    "Tenroku (970–973)",\r
+                    "Ten’en (973–976)",\r
+                    "Jōgen (976–978)",\r
+                    "Tengen (978–983)",\r
+                    "Eikan (983–985)",\r
+                    "Kanna (985–987)",\r
+                    "Eien (987–989)",\r
+                    "Eiso (989–990)",\r
+                    "Shōryaku (990–995)",\r
+                    "Chōtoku (995–999)",\r
+                    "Chōhō (999–1004)",\r
+                    "Kankō (1004–1012)",\r
+                    "Chōwa (1012–1017)",\r
+                    "Kannin (1017–1021)",\r
+                    "Jian (1021–1024)",\r
+                    "Manju (1024–1028)",\r
+                    "Chōgen (1028–1037)",\r
+                    "Chōryaku (1037–1040)",\r
+                    "Chōkyū (1040–1044)",\r
+                    "Kantoku (1044–1046)",\r
+                    "Eishō (1046–1053)",\r
+                    "Tengi (1053–1058)",\r
+                    "Kōhei (1058–1065)",\r
+                    "Jiryaku (1065–1069)",\r
+                    "Enkyū (1069–1074)",\r
+                    "Shōho (1074–1077)",\r
+                    "Shōryaku (1077–1081)",\r
+                    "Eihō (1081–1084)",\r
+                    "Ōtoku (1084–1087)",\r
+                    "Kanji (1087–1094)",\r
+                    "Kahō (1094–1096)",\r
+                    "Eichō (1096–1097)",\r
+                    "Jōtoku (1097–1099)",\r
+                    "Kōwa (1099–1104)",\r
+                    "Chōji (1104–1106)",\r
+                    "Kashō (1106–1108)",\r
+                    "Tennin (1108–1110)",\r
+                    "Ten-ei (1110-1113)",\r
+                    "Eikyū (1113–1118)",\r
+                    "Gen’ei (1118–1120)",\r
+                    "Hōan (1120–1124)",\r
+                    "Tenji (1124–1126)",\r
+                    "Daiji (1126–1131)",\r
+                    "Tenshō (1131–1132)",\r
+                    "Chōshō (1132–1135)",\r
+                    "Hōen (1135–1141)",\r
+                    "Eiji (1141–1142)",\r
+                    "Kōji (1142–1144)",\r
+                    "Ten’yō (1144–1145)",\r
+                    "Kyūan (1145–1151)",\r
+                    "Ninpei (1151–1154)",\r
+                    "Kyūju (1154–1156)",\r
+                    "Hōgen (1156–1159)",\r
+                    "Heiji (1159–1160)",\r
+                    "Eiryaku (1160–1161)",\r
+                    "Ōho (1161–1163)",\r
+                    "Chōkan (1163–1165)",\r
+                    "Eiman (1165–1166)",\r
+                    "Nin’an (1166–1169)",\r
+                    "Kaō (1169–1171)",\r
+                    "Shōan (1171–1175)",\r
+                    "Angen (1175–1177)",\r
+                    "Jishō (1177–1181)",\r
+                    "Yōwa (1181–1182)",\r
+                    "Juei (1182–1184)",\r
+                    "Genryaku (1184–1185)",\r
+                    "Bunji (1185–1190)",\r
+                    "Kenkyū (1190–1199)",\r
+                    "Shōji (1199–1201)",\r
+                    "Kennin (1201–1204)",\r
+                    "Genkyū (1204–1206)",\r
+                    "Ken’ei (1206–1207)",\r
+                    "Jōgen (1207–1211)",\r
+                    "Kenryaku (1211–1213)",\r
+                    "Kenpō (1213–1219)",\r
+                    "Jōkyū (1219–1222)",\r
+                    "Jōō (1222–1224)",\r
+                    "Gennin (1224–1225)",\r
+                    "Karoku (1225–1227)",\r
+                    "Antei (1227–1229)",\r
+                    "Kanki (1229–1232)",\r
+                    "Jōei (1232–1233)",\r
+                    "Tenpuku (1233–1234)",\r
+                    "Bunryaku (1234–1235)",\r
+                    "Katei (1235–1238)",\r
+                    "Ryakunin (1238–1239)",\r
+                    "En’ō (1239–1240)",\r
+                    "Ninji (1240–1243)",\r
+                    "Kangen (1243–1247)",\r
+                    "Hōji (1247–1249)",\r
+                    "Kenchō (1249–1256)",\r
+                    "Kōgen (1256–1257)",\r
+                    "Shōka (1257–1259)",\r
+                    "Shōgen (1259–1260)",\r
+                    "Bun’ō (1260–1261)",\r
+                    "Kōchō (1261–1264)",\r
+                    "Bun’ei (1264–1275)",\r
+                    "Kenji (1275–1278)",\r
+                    "Kōan (1278–1288)",\r
+                    "Shōō (1288–1293)",\r
+                    "Einin (1293–1299)",\r
+                    "Shōan (1299–1302)",\r
+                    "Kengen (1302–1303)",\r
+                    "Kagen (1303–1306)",\r
+                    "Tokuji (1306–1308)",\r
+                    "Enkyō (1308–1311)",\r
+                    "Ōchō (1311–1312)",\r
+                    "Shōwa (1312–1317)",\r
+                    "Bunpō (1317–1319)",\r
+                    "Genō (1319–1321)",\r
+                    "Genkō (1321–1324)",\r
+                    "Shōchū (1324–1326)",\r
+                    "Karyaku (1326–1329)",\r
+                    "Gentoku (1329–1331)",\r
+                    "Genkō (1331–1334)",\r
+                    "Kenmu (1334–1336)",\r
+                    "Engen (1336–1340)",\r
+                    "Kōkoku (1340–1346)",\r
+                    "Shōhei (1346–1370)",\r
+                    "Kentoku (1370–1372)",\r
+                    "Bunchū (1372–1375)",\r
+                    "Tenju (1375–1379)",\r
+                    "Kōryaku (1379–1381)",\r
+                    "Kōwa (1381–1384)",\r
+                    "Genchū (1384–1392)",\r
+                    "Meitoku (1384–1387)",\r
+                    "Kakei (1387–1389)",\r
+                    "Kōō (1389–1390)",\r
+                    "Meitoku (1390–1394)",\r
+                    "Ōei (1394–1428)",\r
+                    "Shōchō (1428–1429)",\r
+                    "Eikyō (1429–1441)",\r
+                    "Kakitsu (1441–1444)",\r
+                    "Bun’an (1444–1449)",\r
+                    "Hōtoku (1449–1452)",\r
+                    "Kyōtoku (1452–1455)",\r
+                    "Kōshō (1455–1457)",\r
+                    "Chōroku (1457–1460)",\r
+                    "Kanshō (1460–1466)",\r
+                    "Bunshō (1466–1467)",\r
+                    "Ōnin (1467–1469)",\r
+                    "Bunmei (1469–1487)",\r
+                    "Chōkyō (1487–1489)",\r
+                    "Entoku (1489–1492)",\r
+                    "Meiō (1492–1501)",\r
+                    "Bunki (1501–1504)",\r
+                    "Eishō (1504–1521)",\r
+                    "Taiei (1521–1528)",\r
+                    "Kyōroku (1528–1532)",\r
+                    "Tenbun (1532–1555)",\r
+                    "Kōji (1555–1558)",\r
+                    "Eiroku (1558–1570)",\r
+                    "Genki (1570–1573)",\r
+                    "Tenshō (1573–1592)",\r
+                    "Bunroku (1592–1596)",\r
+                    "Keichō (1596–1615)",\r
+                    "Genna (1615–1624)",\r
+                    "Kan’ei (1624–1644)",\r
+                    "Shōho (1644–1648)",\r
+                    "Keian (1648–1652)",\r
+                    "Jōō (1652–1655)",\r
+                    "Meireki (1655–1658)",\r
+                    "Manji (1658–1661)",\r
+                    "Kanbun (1661–1673)",\r
+                    "Enpō (1673–1681)",\r
+                    "Tenna (1681–1684)",\r
+                    "Jōkyō (1684–1688)",\r
+                    "Genroku (1688–1704)",\r
+                    "Hōei (1704–1711)",\r
+                    "Shōtoku (1711–1716)",\r
+                    "Kyōhō (1716–1736)",\r
+                    "Genbun (1736–1741)",\r
+                    "Kanpō (1741–1744)",\r
+                    "Enkyō (1744–1748)",\r
+                    "Kan’en (1748–1751)",\r
+                    "Hōreki (1751–1764)",\r
+                    "Meiwa (1764–1772)",\r
+                    "An’ei (1772–1781)",\r
+                    "Tenmei (1781–1789)",\r
+                    "Kansei (1789–1801)",\r
+                    "Kyōwa (1801–1804)",\r
+                    "Bunka (1804–1818)",\r
+                    "Bunsei (1818–1830)",\r
+                    "Tenpō (1830–1844)",\r
+                    "Kōka (1844–1848)",\r
+                    "Kaei (1848–1854)",\r
+                    "Ansei (1854–1860)",\r
+                    "Man’en (1860–1861)",\r
+                    "Bunkyū (1861–1864)",\r
+                    "Genji (1864–1865)",\r
+                    "Keiō (1865–1868)",\r
+                    "Meiji",\r
+                    "Taishō",\r
+                    "Shōwa",\r
+                    "Heisei",\r
+                    "Reiwa",\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E d.M.–E d.M."}\r
+                    d{"E d.M.–E d.M."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"d.M.–d.M."}\r
+                    d{"d.M.–d.M."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    h{"h–h a"}\r
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y G"}\r
+                }\r
+                yM{\r
+                    M{"M.y–M.y G"}\r
+                    y{"M.y–M.y G"}\r
+                }\r
+                yMEd{\r
+                    M{"E d.M.y–E d.M.y G"}\r
+                    d{"E d.M.y–E d.M.y G"}\r
+                    y{"E d.M.y–E d.M.y G"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y G"}\r
+                    y{"MMMM y–MMMM y G"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                yMd{\r
+                    M{"d.M.y–d.M.y G"}\r
+                    d{"d.M.y–d.M.y G"}\r
+                    y{"d.M.y–d.M.y G"}\r
+                }\r
+            }\r
+        }\r
+        persian{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y G",\r
+                "d. MMMM y G",\r
+                "d. MMM y G",\r
+                "d.M.y G",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                GyMMMEd{"E d. MMM y G"}\r
+                GyMMMd{"d. MMM y G"}\r
+                M{"L."}\r
+                MEd{"E d.M"}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                y{"y G"}\r
+                yyyy{"y G"}\r
+                yyyyM{"M.y G"}\r
+                yyyyMEd{"E d.M.y G"}\r
+                yyyyMM{"MM.y G"}\r
+                yyyyMMM{"MMM y G"}\r
+                yyyyMMMEd{"E d. MMM y G"}\r
+                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMd{"d. MMM y G"}\r
+                yyyyMd{"d.M.y G"}\r
+                yyyyQQQ{"QQQ y G"}\r
+                yyyyQQQQ{"QQQQ y G"}\r
+            }\r
+            eras{\r
+                abbreviated{\r
+                    "AP",\r
+                }\r
+                narrow{\r
+                    "AP",\r
+                }\r
+                wide{\r
+                    "AP",\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E d.M.–E d.M."}\r
+                    d{"E d.M.–E d.M."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"d.M.–d.M."}\r
+                    d{"d.M.–d.M."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    h{"h–h a"}\r
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y G"}\r
+                }\r
+                yM{\r
+                    M{"M.y–M.y G"}\r
+                    y{"M.y–M.y G"}\r
+                }\r
+                yMEd{\r
+                    M{"E d.M.y–E d.M.y G"}\r
+                    d{"E d.M.y–E d.M.y G"}\r
+                    y{"E d.M.y–E d.M.y G"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y G"}\r
+                    y{"MMMM y–MMMM y G"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                yMd{\r
+                    M{"d.M.y–d.M.y G"}\r
+                    d{"d.M.y–d.M.y G"}\r
+                    y{"d.M.y–d.M.y G"}\r
+                }\r
+            }\r
+            monthNames{\r
+                format{\r
+                    abbreviated{\r
+                        "farvardin",\r
+                        "ordibehesht",\r
+                        "khordad",\r
+                        "tir",\r
+                        "mordad",\r
+                        "shahrivar",\r
+                        "mehr",\r
+                        "aban",\r
+                        "azar",\r
+                        "dey",\r
+                        "bahman",\r
+                        "esfand",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "farvardin",\r
+                        "ordibehesht",\r
+                        "khordad",\r
+                        "tir",\r
+                        "mordad",\r
+                        "shahrivar",\r
+                        "mehr",\r
+                        "aban",\r
+                        "azar",\r
+                        "dey",\r
+                        "bahman",\r
+                        "esfand",\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    abbreviated{\r
+                        "farvardin",\r
+                        "ordibehesht",\r
+                        "khordad",\r
+                        "tir",\r
+                        "mordad",\r
+                        "shahrivar",\r
+                        "mehr",\r
+                        "aban",\r
+                        "azar",\r
+                        "dey",\r
+                        "bahman",\r
+                        "esfand",\r
+                    }\r
+                    narrow{\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
+                    }\r
+                    wide{\r
+                        "farvardin",\r
+                        "ordibehesht",\r
+                        "khordad",\r
+                        "tir",\r
+                        "mordad",\r
+                        "shahrivar",\r
+                        "mehr",\r
+                        "aban",\r
+                        "azar",\r
+                        "dey",\r
+                        "bahman",\r
+                        "esfand",\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        roc{\r
+            DateTimePatterns{\r
+                "HH:mm:ss zzzz",\r
+                "HH:mm:ss z",\r
+                "HH:mm:ss",\r
+                "HH:mm",\r
+                "EEEE d. MMMM y G",\r
+                "d. MMMM y G",\r
+                "d. MMM y G",\r
+                "d.M.y G",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+            }\r
+            availableFormats{\r
+                E{"ccc"}\r
+                Ed{"E d."}\r
+                Gy{"y G"}\r
+                GyMMM{"MMM y G"}\r
+                GyMMMEd{"E d. MMM y G"}\r
+                GyMMMd{"d. MMM y G"}\r
+                M{"L."}\r
+                MEd{"E d.M"}\r
+                MMM{"LLL"}\r
+                MMMEd{"E d. MMM"}\r
+                MMMMd{"d. MMMM"}\r
+                MMMd{"d. MMM"}\r
+                MMdd{"d.M."}\r
+                Md{"d.M."}\r
+                d{"d."}\r
+                y{"y G"}\r
+                yyyy{"y G"}\r
+                yyyyM{"M.y G"}\r
+                yyyyMEd{"E d.M.y G"}\r
+                yyyyMM{"MM.y G"}\r
+                yyyyMMM{"MMM y G"}\r
+                yyyyMMMEd{"E d. MMM y G"}\r
+                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMd{"d. MMM y G"}\r
+                yyyyMd{"d.M.y G"}\r
+                yyyyQQQ{"QQQ y G"}\r
+                yyyyQQQQ{"QQQQ y G"}\r
+            }\r
+            eras{\r
+                abbreviated{\r
+                    "Før ROC",\r
+                    "Minguo",\r
+                }\r
+                narrow{\r
+                    "Før ROC",\r
+                    "Minguo",\r
+                }\r
+                wide{\r
+                    "Før R.O.C.",\r
+                    "Minguo",\r
+                }\r
+            }\r
+            intervalFormats{\r
+                H{\r
+                    H{"HH–HH"}\r
+                }\r
+                Hv{\r
+                    H{"HH–HH v"}\r
+                }\r
+                M{\r
+                    M{"M.–M."}\r
+                }\r
+                MEd{\r
+                    M{"E d.M.–E d.M."}\r
+                    d{"E d.M.–E d.M."}\r
+                }\r
+                MMM{\r
+                    M{"MMM–MMM"}\r
+                }\r
+                MMMEd{\r
+                    M{"E d. MMM–E d. MMM"}\r
+                    d{"E d. MMM–E d. MMM"}\r
+                }\r
+                MMMd{\r
+                    M{"d. MMM–d. MMM"}\r
+                    d{"d.–d. MMM"}\r
+                }\r
+                Md{\r
+                    M{"d.M.–d.M."}\r
+                    d{"d.M.–d.M."}\r
+                }\r
+                d{\r
+                    d{"d.–d."}\r
+                }\r
+                fallback{"{0}–{1}"}\r
+                h{\r
+                    a{"h a–h a"}\r
+                    h{"h–h a"}\r
+                }\r
+                hv{\r
+                    a{"h a–h a v"}\r
+                    h{"h–h a v"}\r
+                }\r
+                y{\r
+                    y{"y–y G"}\r
+                }\r
+                yM{\r
+                    M{"M.y–M.y G"}\r
+                    y{"M.y–M.y G"}\r
+                }\r
+                yMEd{\r
+                    M{"E d.M.y–E d.M.y G"}\r
+                    d{"E d.M.y–E d.M.y G"}\r
+                    y{"E d.M.y–E d.M.y G"}\r
+                }\r
+                yMMM{\r
+                    M{"MMM–MMM y G"}\r
+                    y{"MMM y–MMM y G"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d. MMM–E d. MMM y G"}\r
+                    d{"E d. MMM–E d. MMM y G"}\r
+                    y{"E d. MMM y–E d. MMM y G"}\r
+                }\r
+                yMMMM{\r
+                    M{"MMMM–MMMM y G"}\r
+                    y{"MMMM y–MMMM y G"}\r
+                }\r
+                yMMMd{\r
+                    M{"d. MMM–d. MMM y G"}\r
+                    d{"d.–d. MMM y G"}\r
+                    y{"d. MMM y–d. MMM y G"}\r
+                }\r
+                yMd{\r
+                    M{"d.M.y–d.M.y G"}\r
+                    d{"d.M.y–d.M.y G"}\r
+                    y{"d.M.y–d.M.y G"}\r
+                }\r
+            }\r
+        }\r
+    }\r
+    characterLabel{\r
+        activities{"aktiviteter"}\r
+        african_scripts{"afrikanske skriftsystemer"}\r
+        american_scripts{"amerikanske skriftsystemer"}\r
+        animal{"dyr"}\r
+        animals_nature{"dyr og natur"}\r
+        arrows{"piler"}\r
+        body{"kropp"}\r
+        box_drawing{"rutetegning"}\r
+        braille{"punktskrift"}\r
+        building{"bygning"}\r
+        bullets_stars{"punkttegn/stjerner"}\r
+        consonantal_jamo{"konsonantal jamo"}\r
+        currency_symbols{"valutasymboler"}\r
+        dash_connector{"tankestrek/bindetegn"}\r
+        digits{"sifre"}\r
+        dingbats{"dingbats"}\r
+        divination_symbols{"spådomssymboler"}\r
+        downwards_arrows{"piler som peker nedover"}\r
+        downwards_upwards_arrows{"piler som peker nedover og oppover"}\r
+        east_asian_scripts{"østasiatiske skriftsystemer"}\r
+        emoji{"emoji"}\r
+        european_scripts{"europeiske skriftsystemer"}\r
+        female{"kvinnelig"}\r
+        flag{"flagg"}\r
+        flags{"flagg"}\r
+        food_drink{"mat og drikke"}\r
+        format{"format"}\r
+        format_whitespace{"format og mellomrom"}\r
+        full_width_form_variant{"fullbreddeformvarianter"}\r
+        geometric_shapes{"geometriske figurer"}\r
+        half_width_form_variant{"halvbreddeformvarianter"}\r
+        han_characters{"han-tegn"}\r
+        han_radicals{"han-radikaler"}\r
+        hanja{"hanja"}\r
+        hanzi_simplified{"hanzi (forenklet)"}\r
+        hanzi_traditional{"hanzi (tradisjonell)"}\r
+        heart{"hjerte"}\r
+        historic_scripts{"historiske skriftsystemer"}\r
+        ideographic_desc_characters{"ideografiske beskrivende tegn"}\r
+        japanese_kana{"japansk kana"}\r
+        kanbun{"kanbun"}\r
+        kanji{"kanji"}\r
+        keycap{"taster"}\r
+        leftwards_arrows{"piler som peker til venstre"}\r
+        leftwards_rightwards_arrows{"piler som peker til høyre og venstre"}\r
+        letterlike_symbols{"bokstavlignende symboler"}\r
+        limited_use{"begrenset bruk"}\r
+        male{"mannlig"}\r
+        math_symbols{"matematikksymboler"}\r
+        middle_eastern_scripts{"skriftsystemer fra Midtøsten"}\r
+        miscellaneous{"diverse"}\r
+        modern_scripts{"moderne skriftsystemer"}\r
+        modifier{"modifikator"}\r
+        musical_symbols{"musikksymboler"}\r
+        nature{"natur"}\r
+        nonspacing{"uten bredde"}\r
+        numbers{"tall"}\r
+        objects{"objekter"}\r
+        other{"annet"}\r
+        paired{"par"}\r
+        person{"mennesker"}\r
+        phonetic_alphabet{"fonetisk alfabet"}\r
+        pictographs{"piktogrammer"}\r
+        place{"sted"}\r
+        plant{"plante"}\r
+        punctuation{"skilletegn"}\r
+        rightwards_arrows{"piler som peker til høyre"}\r
+        sign_standard_symbols{"tegn/standardsymboler"}\r
+        small_form_variant{"varianter av små tegn"}\r
+        smiley{"smilefjes"}\r
+        smileys_people{"smilefjes og mennesker"}\r
+        south_asian_scripts{"sørasiatiske skriftsystemer"}\r
+        southeast_asian_scripts{"sørøstasiatiske skriftsystemer"}\r
+        spacing{"med bredde"}\r
+        sport{"sport"}\r
+        symbols{"symboler"}\r
+        technical_symbols{"tekniske symboler"}\r
+        tone_marks{"tonemerker"}\r
+        travel{"reise"}\r
+        travel_places{"reise og steder"}\r
+        upwards_arrows{"piler som peker oppover"}\r
+        variant_forms{"varianter"}\r
+        vocalic_jamo{"vokalisk jamo"}\r
+        weather{"vær"}\r
+        western_asian_scripts{"vestasiatiske skriftsymboler"}\r
+        whitespace{"mellomrom"}\r
+    }\r
+    contextTransforms{\r
+        relative:intvector{\r
+            0,\r
+            1,\r
+        }\r
+        typographicNames:intvector{\r
+            1,\r
+            1,\r
+        }\r
+    }\r
+    delimiters{\r
+        alternateQuotationEnd{"’"}\r
+        alternateQuotationStart{"‘"}\r
+        quotationEnd{"»"}\r
+        quotationStart{"«"}\r
+    }\r
+    fields{\r
+        day{\r
+            dn{"dag"}\r
+            relative{\r
+                "-1"{"i går"}\r
+                "-2"{"i forgårs"}\r
+                "0"{"i dag"}\r
+                "1"{"i morgen"}\r
+                "2"{"i overmorgen"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} døgn"}\r
+                    other{"om {0} døgn"}\r
+                }\r
+                past{\r
+                    one{"for {0} døgn siden"}\r
+                    other{"for {0} døgn siden"}\r
+                }\r
+            }\r
+        }\r
+        day-narrow{\r
+            dn{"d."}\r
+            relative{\r
+                "-1"{"i går"}\r
+                "-2"{"-2 d."}\r
+                "0"{"i dag"}\r
+                "1"{"i morgen"}\r
+                "2"{"+2 d."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"+{0} d."}\r
+                    other{"+{0} d."}\r
+                }\r
+                past{\r
+                    one{"-{0} d."}\r
+                    other{"-{0} d."}\r
+                }\r
+            }\r
+        }\r
+        day-short{\r
+            dn{"dag"}\r
+            relative{\r
+                "-1"{"i går"}\r
+                "-2"{"i forgårs"}\r
+                "0"{"i dag"}\r
+                "1"{"i morgen"}\r
+                "2"{"i overmorgen"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} d."}\r
+                    other{"om {0} d."}\r
+                }\r
+                past{\r
+                    one{"for {0} d. siden"}\r
+                    other{"for {0} d. siden"}\r
+                }\r
+            }\r
+        }\r
+        dayOfYear{\r
+            dn{"dag i året"}\r
+        }\r
+        dayOfYear-narrow{\r
+            dn{"d. i året"}\r
+        }\r
+        dayOfYear-short{\r
+            dn{"dag i året"}\r
+        }\r
+        dayperiod{\r
+            dn{"a.m./p.m."}\r
+        }\r
+        dayperiod-narrow{\r
+            dn{"am/pm"}\r
+        }\r
+        dayperiod-short{\r
+            dn{"am/pm"}\r
+        }\r
+        era{\r
+            dn{"tidsalder"}\r
+        }\r
+        era-narrow{\r
+            dn{"tidsalder"}\r
+        }\r
+        era-short{\r
+            dn{"tidsalder"}\r
+        }\r
+        fri{\r
+            relative{\r
+                "-1"{"forrige fredag"}\r
+                "0"{"fredag"}\r
+                "1"{"neste fredag"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} fredag"}\r
+                    other{"om {0} fredager"}\r
+                }\r
+                past{\r
+                    one{"for {0} fredag siden"}\r
+                    other{"for {0} fredager siden"}\r
+                }\r
+            }\r
+        }\r
+        fri-narrow{\r
+            relative{\r
+                "-1"{"sist fr."}\r
+                "0"{"denne fr."}\r
+                "1"{"neste fr."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} fr."}\r
+                    other{"om {0} fr."}\r
+                }\r
+                past{\r
+                    one{"for {0} fr. siden"}\r
+                    other{"for {0} fr. siden"}\r
+                }\r
+            }\r
+        }\r
+        fri-short{\r
+            relative{\r
+                "-1"{"sist fre."}\r
+                "0"{"denne fre."}\r
+                "1"{"neste fre."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} fre."}\r
+                    other{"om {0} fre."}\r
+                }\r
+                past{\r
+                    one{"for {0} fre. siden"}\r
+                    other{"for {0} fre. siden"}\r
+                }\r
+            }\r
+        }\r
+        hour{\r
+            dn{"time"}\r
+            relative{\r
+                "0"{"denne timen"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} time"}\r
+                    other{"om {0} timer"}\r
+                }\r
+                past{\r
+                    one{"for {0} time siden"}\r
+                    other{"for {0} timer siden"}\r
+                }\r
+            }\r
+        }\r
+        hour-narrow{\r
+            dn{"t"}\r
+            relativeTime{\r
+                future{\r
+                    one{"+{0} t"}\r
+                    other{"+{0} t"}\r
+                }\r
+                past{\r
+                    one{"-{0} t"}\r
+                    other{"-{0} t"}\r
+                }\r
+            }\r
+        }\r
+        hour-short{\r
+            dn{"t"}\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} t"}\r
+                    other{"om {0} t"}\r
+                }\r
+                past{\r
+                    one{"for {0} t siden"}\r
+                    other{"for {0} t siden"}\r
+                }\r
+            }\r
+        }\r
+        minute{\r
+            dn{"minutt"}\r
+            relative{\r
+                "0"{"dette minuttet"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} minutt"}\r
+                    other{"om {0} minutter"}\r
+                }\r
+                past{\r
+                    one{"for {0} minutt siden"}\r
+                    other{"for {0} minutter siden"}\r
+                }\r
+            }\r
+        }\r
+        minute-narrow{\r
+            dn{"m"}\r
+            relativeTime{\r
+                future{\r
+                    one{"+{0} min"}\r
+                    other{"+{0} min"}\r
+                }\r
+                past{\r
+                    one{"-{0} min"}\r
+                    other{"-{0} min"}\r
+                }\r
+            }\r
+        }\r
+        minute-short{\r
+            dn{"min"}\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} min"}\r
+                    other{"om {0} min"}\r
+                }\r
+                past{\r
+                    one{"for {0} min siden"}\r
+                    other{"for {0} min siden"}\r
+                }\r
+            }\r
+        }\r
+        mon{\r
+            relative{\r
+                "-1"{"forrige mandag"}\r
+                "0"{"mandag"}\r
+                "1"{"neste mandag"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} mandag"}\r
+                    other{"om {0} mandager"}\r
+                }\r
+                past{\r
+                    one{"for {0} mandag siden"}\r
+                    other{"for {0} mandager siden"}\r
+                }\r
+            }\r
+        }\r
+        mon-narrow{\r
+            relative{\r
+                "-1"{"sist ma."}\r
+                "0"{"denne ma."}\r
+                "1"{"neste ma."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} ma."}\r
+                    other{"om {0} ma."}\r
+                }\r
+                past{\r
+                    one{"for {0} ma. siden"}\r
+                    other{"for {0} ma. siden"}\r
+                }\r
+            }\r
+        }\r
+        mon-short{\r
+            relative{\r
+                "-1"{"sist man."}\r
+                "0"{"denne man."}\r
+                "1"{"neste man."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} man."}\r
+                    other{"om {0} man."}\r
+                }\r
+                past{\r
+                    one{"for {0} man. siden"}\r
+                    other{"for {0} man. siden"}\r
+                }\r
+            }\r
+        }\r
+        month{\r
+            dn{"måned"}\r
+            relative{\r
+                "-1"{"forrige måned"}\r
+                "0"{"denne måneden"}\r
+                "1"{"neste måned"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} måned"}\r
+                    other{"om {0} måneder"}\r
+                }\r
+                past{\r
+                    one{"for {0} måned siden"}\r
+                    other{"for {0} måneder siden"}\r
+                }\r
+            }\r
+        }\r
+        month-narrow{\r
+            dn{"md."}\r
+            relative{\r
+                "-1"{"forrige md."}\r
+                "0"{"denne md."}\r
+                "1"{"neste md."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"+{0} md."}\r
+                    other{"+{0} md."}\r
+                }\r
+                past{\r
+                    one{"-{0} md."}\r
+                    other{"-{0} md."}\r
+                }\r
+            }\r
+        }\r
+        month-short{\r
+            dn{"mnd."}\r
+            relative{\r
+                "-1"{"forrige md."}\r
+                "0"{"denne md."}\r
+                "1"{"neste md."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} md."}\r
+                    other{"om {0} md."}\r
+                }\r
+                past{\r
+                    one{"for {0} md. siden"}\r
+                    other{"for {0} md. siden"}\r
+                }\r
+            }\r
+        }\r
+        quarter{\r
+            dn{"kvartal"}\r
+            relative{\r
+                "-1"{"forrige kvartal"}\r
+                "0"{"dette kvartalet"}\r
+                "1"{"neste kvartal"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} kvartal"}\r
+                    other{"om {0} kvartaler"}\r
+                }\r
+                past{\r
+                    one{"for {0} kvartal siden"}\r
+                    other{"for {0} kvartaler siden"}\r
+                }\r
+            }\r
+        }\r
+        quarter-narrow{\r
+            dn{"kv."}\r
+            relative{\r
+                "-1"{"forrige kv."}\r
+                "0"{"dette kv."}\r
+                "1"{"neste kv."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"+{0} kv."}\r
+                    other{"+{0} kv."}\r
+                }\r
+                past{\r
+                    one{"–{0} kv."}\r
+                    other{"–{0} kv."}\r
+                }\r
+            }\r
+        }\r
+        quarter-short{\r
+            dn{"kv."}\r
+            relative{\r
+                "-1"{"forrige kv."}\r
+                "0"{"dette kv."}\r
+                "1"{"neste kv."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} kv."}\r
+                    other{"om {0} kv."}\r
+                }\r
+                past{\r
+                    one{"for {0} kv. siden"}\r
+                    other{"for {0} kv. siden"}\r
+                }\r
+            }\r
+        }\r
+        sat{\r
+            relative{\r
+                "-1"{"forrige lørdag"}\r
+                "0"{"lørdag"}\r
+                "1"{"neste lørdag"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} lørdag"}\r
+                    other{"om {0} lørdager"}\r
+                }\r
+                past{\r
+                    one{"for {0} lørdag siden"}\r
+                    other{"for {0} lørdager siden"}\r
+                }\r
+            }\r
+        }\r
+        sat-narrow{\r
+            relative{\r
+                "-1"{"sist lø."}\r
+                "0"{"denne lø."}\r
+                "1"{"neste lø."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} lø."}\r
+                    other{"om {0} lø."}\r
+                }\r
+                past{\r
+                    one{"for {0} lø. siden"}\r
+                    other{"for {0} lø. siden"}\r
+                }\r
+            }\r
+        }\r
+        sat-short{\r
+            relative{\r
+                "-1"{"sist lør."}\r
+                "0"{"denne lør."}\r
+                "1"{"neste lør."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} lør."}\r
+                    other{"om {0} lør."}\r
+                }\r
+                past{\r
+                    one{"for {0} lør. siden"}\r
+                    other{"for {0} lør. siden"}\r
+                }\r
+            }\r
+        }\r
+        second{\r
+            dn{"sekund"}\r
+            relative{\r
+                "0"{"nå"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} sekund"}\r
+                    other{"om {0} sekunder"}\r
+                }\r
+                past{\r
+                    one{"for {0} sekund siden"}\r
+                    other{"for {0} sekunder siden"}\r
+                }\r
+            }\r
+        }\r
+        second-narrow{\r
+            dn{"s"}\r
+            relative{\r
+                "0"{"nå"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"+{0} s"}\r
+                    other{"+{0} s"}\r
+                }\r
+                past{\r
+                    one{"-{0} s"}\r
+                    other{"-{0} s"}\r
+                }\r
+            }\r
+        }\r
+        second-short{\r
+            dn{"sek"}\r
+            relative{\r
+                "0"{"nå"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} sek"}\r
+                    other{"om {0} sek"}\r
+                }\r
+                past{\r
+                    one{"for {0} sek siden"}\r
+                    other{"for {0} sek siden"}\r
+                }\r
+            }\r
+        }\r
+        sun{\r
+            relative{\r
+                "-1"{"forrige søndag"}\r
+                "0"{"søndag"}\r
+                "1"{"neste søndag"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} søndag"}\r
+                    other{"om {0} søndager"}\r
+                }\r
+                past{\r
+                    one{"for {0} søndag siden"}\r
+                    other{"for {0} søndager siden"}\r
+                }\r
+            }\r
+        }\r
+        sun-narrow{\r
+            relative{\r
+                "-1"{"sist sø."}\r
+                "0"{"denne sø."}\r
+                "1"{"neste sø."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} sø."}\r
+                    other{"om {0} sø."}\r
+                }\r
+                past{\r
+                    one{"for {0} sø. siden"}\r
+                    other{"for {0} sø. siden"}\r
+                }\r
+            }\r
+        }\r
+        sun-short{\r
+            relative{\r
+                "-1"{"sist søn."}\r
+                "0"{"denne søn."}\r
+                "1"{"neste søn."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} søn."}\r
+                    other{"om {0} søn."}\r
+                }\r
+                past{\r
+                    one{"for {0} søn. siden"}\r
+                    other{"for {0} søn. siden"}\r
+                }\r
+            }\r
+        }\r
+        thu{\r
+            relative{\r
+                "-1"{"forrige torsdag"}\r
+                "0"{"torsdag"}\r
+                "1"{"neste torsdag"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} torsdag"}\r
+                    other{"om {0} torsdager"}\r
+                }\r
+                past{\r
+                    one{"for {0} torsdag siden"}\r
+                    other{"for {0} torsdager siden"}\r
+                }\r
+            }\r
+        }\r
+        thu-narrow{\r
+            relative{\r
+                "-1"{"sist to."}\r
+                "0"{"denne to."}\r
+                "1"{"neste to."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} to."}\r
+                    other{"om {0} to."}\r
+                }\r
+                past{\r
+                    one{"for {0} to. siden"}\r
+                    other{"for {0} to. siden"}\r
+                }\r
+            }\r
+        }\r
+        thu-short{\r
+            relative{\r
+                "-1"{"sist tor."}\r
+                "0"{"denne tor."}\r
+                "1"{"neste tor."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} tor."}\r
+                    other{"om {0} tor."}\r
+                }\r
+                past{\r
+                    one{"for {0} tor. siden"}\r
+                    other{"for {0} tor. siden"}\r
+                }\r
+            }\r
+        }\r
+        tue{\r
+            relative{\r
+                "-1"{"forrige tirsdag"}\r
+                "0"{"tirsdag"}\r
+                "1"{"neste tirsdag"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} tirsdag"}\r
+                    other{"om {0} tirsdager"}\r
+                }\r
+                past{\r
+                    one{"for {0} tirsdag siden"}\r
+                    other{"for {0} tirsdager siden"}\r
+                }\r
+            }\r
+        }\r
+        tue-narrow{\r
+            relative{\r
+                "-1"{"sist ti."}\r
+                "0"{"denne ti."}\r
+                "1"{"neste ti."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} ti."}\r
+                    other{"om {0} ti."}\r
+                }\r
+                past{\r
+                    one{"for {0} ti. siden"}\r
+                    other{"for {0} ti. siden"}\r
+                }\r
+            }\r
+        }\r
+        tue-short{\r
+            relative{\r
+                "-1"{"sist tir."}\r
+                "0"{"denne tir."}\r
+                "1"{"neste tir."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} tir."}\r
+                    other{"om {0} tir."}\r
+                }\r
+                past{\r
+                    one{"for {0} tir. siden"}\r
+                    other{"for {0} tir. siden"}\r
+                }\r
+            }\r
+        }\r
+        wed{\r
+            relative{\r
+                "-1"{"forrige onsdag"}\r
+                "0"{"onsdag"}\r
+                "1"{"neste onsdag"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} onsdag"}\r
+                    other{"om {0} onsdager"}\r
+                }\r
+                past{\r
+                    one{"for {0} onsdag siden"}\r
+                    other{"for {0} onsdager siden"}\r
+                }\r
+            }\r
+        }\r
+        wed-narrow{\r
+            relative{\r
+                "-1"{"sist on."}\r
+                "0"{"denne on."}\r
+                "1"{"neste on."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} on."}\r
+                    other{"om {0} on."}\r
+                }\r
+                past{\r
+                    one{"for {0} on. siden"}\r
+                    other{"for {0} on. siden"}\r
+                }\r
+            }\r
+        }\r
+        wed-short{\r
+            relative{\r
+                "-1"{"sist ons."}\r
+                "0"{"denne ons."}\r
+                "1"{"neste ons."}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} ons."}\r
+                    other{"om {0} ons."}\r
+                }\r
+                past{\r
+                    one{"for {0} ons. siden"}\r
+                    other{"for {0} ons. siden"}\r
+                }\r
+            }\r
+        }\r
+        week{\r
+            dn{"uke"}\r
+            relative{\r
+                "-1"{"forrige uke"}\r
+                "0"{"denne uken"}\r
+                "1"{"neste uke"}\r
+            }\r
+            relativePeriod{"uken som inneholder {0}"}\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} uke"}\r
+                    other{"om {0} uker"}\r
+                }\r
+                past{\r
+                    one{"for {0} uke siden"}\r
+                    other{"for {0} uker siden"}\r
+                }\r
+            }\r
+        }\r
+        week-narrow{\r
+            dn{"u."}\r
+            relative{\r
+                "-1"{"forrige uke"}\r
+                "0"{"denne uken"}\r
+                "1"{"neste uke"}\r
+            }\r
+            relativePeriod{"u. {0}"}\r
+            relativeTime{\r
+                future{\r
+                    one{"+{0} u."}\r
+                    other{"+{0} u."}\r
+                }\r
+                past{\r
+                    one{"-{0} u."}\r
+                    other{"-{0} u."}\r
+                }\r
+            }\r
+        }\r
+        week-short{\r
+            dn{"uke"}\r
+            relative{\r
+                "-1"{"forrige uke"}\r
+                "0"{"denne uken"}\r
+                "1"{"neste uke"}\r
+            }\r
+            relativePeriod{"uken med {0}"}\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} u."}\r
+                    other{"om {0} u."}\r
+                }\r
+                past{\r
+                    one{"for {0} u. siden"}\r
+                    other{"for {0} u. siden"}\r
+                }\r
+            }\r
+        }\r
+        weekOfMonth{\r
+            dn{"uke i måneden"}\r
+        }\r
+        weekOfMonth-narrow{\r
+            dn{"uke i md."}\r
+        }\r
+        weekOfMonth-short{\r
+            dn{"uke i mnd."}\r
+        }\r
+        weekday{\r
+            dn{"ukedag"}\r
+        }\r
+        weekday-narrow{\r
+            dn{"uked."}\r
+        }\r
+        weekday-short{\r
+            dn{"ukedag"}\r
+        }\r
+        weekdayOfMonth{\r
+            dn{"ukedag i måneden"}\r
+        }\r
+        weekdayOfMonth-narrow{\r
+            dn{"uked. i md."}\r
+        }\r
+        weekdayOfMonth-short{\r
+            dn{"uked. i mnd."}\r
+        }\r
+        year{\r
+            dn{"år"}\r
+            relative{\r
+                "-1"{"i fjor"}\r
+                "0"{"i år"}\r
+                "1"{"neste år"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} år"}\r
+                    other{"om {0} år"}\r
+                }\r
+                past{\r
+                    one{"for {0} år siden"}\r
+                    other{"for {0} år siden"}\r
+                }\r
+            }\r
+        }\r
+        year-narrow{\r
+            dn{"år"}\r
+            relative{\r
+                "-1"{"i fjor"}\r
+                "0"{"i år"}\r
+                "1"{"neste år"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"+{0} år"}\r
+                    other{"+{0} år"}\r
+                }\r
+                past{\r
+                    one{"–{0} år"}\r
+                    other{"–{0} år"}\r
+                }\r
+            }\r
+        }\r
+        year-short{\r
+            dn{"år"}\r
+            relative{\r
+                "-1"{"i fjor"}\r
+                "0"{"i år"}\r
+                "1"{"neste år"}\r
+            }\r
+            relativeTime{\r
+                future{\r
+                    one{"om {0} år"}\r
+                    other{"om {0} år"}\r
+                }\r
+                past{\r
+                    one{"for {0} år siden"}\r
+                    other{"for {0} år siden"}\r
+                }\r
+            }\r
+        }\r
+        zone{\r
+            dn{"tidssone"}\r
+        }\r
+        zone-narrow{\r
+            dn{"tidssone"}\r
+        }\r
+        zone-short{\r
+            dn{"tidssone"}\r
+        }\r
+    }\r
+    listPattern{\r
+        or{\r
+            2{"{0} eller {1}"}\r
+            end{"{0} eller {1}"}\r
+            middle{"{0}, {1}"}\r
+            start{"{0}, {1}"}\r
+        }\r
+        standard{\r
+            2{"{0} og {1}"}\r
+            end{"{0} og {1}"}\r
+            middle{"{0}, {1}"}\r
+            start{"{0}, {1}"}\r
+        }\r
+        standard-short{\r
+            2{"{0} og {1}"}\r
+            end{"{0} og {1}"}\r
+        }\r
+        unit{\r
+            2{"{0} og {1}"}\r
+            end{"{0} og {1}"}\r
+            middle{"{0}, {1}"}\r
+            start{"{0}, {1}"}\r
+        }\r
+        unit-narrow{\r
+            2{"{0}, {1}"}\r
+            end{"{0}, {1}"}\r
+            middle{"{0}, {1}"}\r
+            start{"{0}, {1}"}\r
+        }\r
+        unit-short{\r
+            2{"{0}, {1}"}\r
+            end{"{0}, {1}"}\r
+            middle{"{0}, {1}"}\r
+            start{"{0}, {1}"}\r
+        }\r
+    }\r
+    measurementSystemNames{\r
+        UK{"engelsk"}\r
+        US{"amerikansk"}\r
+        metric{"metrisk"}\r
+    }\r
 }\r
index 40a8b61..312565f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no_NO{\r
-    "%%ALIAS"{"nb_NO"}\r
+    "%%ALIAS"{"no"}\r
 }\r
index 4b973b6..e51f5fc 100644 (file)
@@ -271,6 +271,20 @@ pl{
             }\r
         }\r
         minimalPairs{\r
+            case{\r
+                accusative{"Widzę {0}"}\r
+                dative{"Ufam {0}"}\r
+                genitive{"Nie widzę {0}"}\r
+                instrumental{"Interesuję się {0}"}\r
+                locative{"Siedzę na {0}"}\r
+                nominative{"{0} jest/są tutaj"}\r
+                vocative{"Pani(e) {0}!"}\r
+            }\r
+            gender{\r
+                feminine{"ta {0}"}\r
+                inanimate{"ten {0}"}\r
+                neuter{"to {0}"}\r
+            }\r
             ordinal{\r
                 other{"Skręć w {0}. w prawo."}\r
             }\r
index 738359f..f299058 100644 (file)
@@ -202,6 +202,10 @@ pt{
             }\r
         }\r
         minimalPairs{\r
+            gender{\r
+                feminine{"A {0} é..."}\r
+                masculine{"O {0} é"}\r
+            }\r
             ordinal{\r
                 other{"Pegue a {0}ª à direita."}\r
             }\r
index 2c6b278..2edaf06 100644 (file)
@@ -166,6 +166,10 @@ pt_PT{
             }\r
         }\r
         minimalPairs{\r
+            gender{\r
+                feminine{"a {0}"}\r
+                masculine{"o {0}"}\r
+            }\r
             ordinal{\r
                 other{"{0}.º lugar"}\r
             }\r
index 6d158d8..469e578 100644 (file)
@@ -175,7 +175,7 @@ root{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"38.1"}\r
+    Version{"39"}\r
     calendar{\r
         buddhist{\r
             AmPmMarkers:alias{"/LOCALE/calendar/gregorian/AmPmMarkers"}\r
index a9b28f6..f9c65fa 100644 (file)
@@ -281,6 +281,19 @@ ru{
             }\r
         }\r
         minimalPairs{\r
+            case{\r
+                accusative{"Вижу {0}"}\r
+                dative{"Верю {0}"}\r
+                genitive{"Не хватает {0}"}\r
+                instrumental{"Занимаюсь {0}"}\r
+                locative{"Сижу на {0}"}\r
+                nominative{"{0} здесь"}\r
+                vocative{"Эй, {0}"}\r
+            }\r
+            gender{\r
+                feminine{"эта {0}"}\r
+                masculine{"этот {0}"}\r
+            }\r
             ordinal{\r
                 other{"Сверните направо на {0}-м перекрестке."}\r
             }\r
index 3020884..825aec7 100644 (file)
@@ -241,7 +241,7 @@ sd_Deva{
                         "1",\r
                         "2",\r
                         "3",\r
-                        "1",\r
+                        "4",\r
                     }\r
                     wide{\r
                         "पहिरों पाड़ो",\r
index 45bfeaf..435cc38 100644 (file)
@@ -2564,10 +2564,10 @@ sk{
             dn{"deň týždňa v mesiaci"}\r
         }\r
         weekdayOfMonth-narrow{\r
-            dn{"d.  týž. v mes."}\r
+            dn{"d. týž. v mes."}\r
         }\r
         weekdayOfMonth-short{\r
-            dn{"d.  týž. v mes."}\r
+            dn{"d. týž. v mes."}\r
         }\r
         year{\r
             dn{"rok"}\r
index 1df19b2..4466501 100644 (file)
@@ -240,6 +240,10 @@ sv{
             }\r
         }\r
         minimalPairs{\r
+            gender{\r
+                common{"En {0} är"}\r
+                neuter{"Ett {0} är"}\r
+            }\r
             ordinal{\r
                 one{"Ta {0}:a svängen till höger"}\r
                 other{"Ta {0}:e svängen till höger"}\r
index 2015b16..0bbcf51 100644 (file)
@@ -144,7 +144,7 @@ ug{
         }\r
         minimalPairs{\r
             plural{\r
-                one{"{0}  كىتاب"}\r
+                one{"{0} كىتاب"}\r
                 other{"{0} بېلىق كۆردۈم ۋە ئۇنى يەۋەتتىم."}\r
             }\r
         }\r
index e72e156..917d38a 100644 (file)
@@ -4,8 +4,8 @@
 yo{\r
     AuxExemplarCharacters{"[c q v x z]"}\r
     ExemplarCharacters{\r
-        "[a á à b d e é è ẹ {ẹ\u0301} {ẹ\u0300} f g {gb} h i í ì j k l m n ń o ó ò ọ "\r
-        "{ọ\u0301} {ọ\u0300} p r s ṣ t u ú ù w y]"\r
+        "[a á à b d e é è ẹ {ẹ\u0301} {ẹ\u0300} f g {gb} h i í ì j k l m ḿ {m\u0300} "\r
+        "n ń ǹ o ó ò ọ {ọ\u0301} {ọ\u0300} p r s ṣ t u ú ù w y]"\r
     }\r
     ExemplarCharactersIndex{"[A B D E F G H I J K L M N O P R S T U W Y]"}\r
     ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) @ * / \\& # † ‡ ′ ″]"}\r
index 464711e..e23c490 100644 (file)
@@ -1991,10 +1991,10 @@ zh{
                 "y年M月d日",\r
                 "y年M月d日",\r
                 "y/M/d",\r
-                "{1}{0}",\r
-                "{1}{0}",\r
                 "{1} {0}",\r
-                "{1}{0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
                 "{1} {0}",\r
             }\r
             appendItems{\r
index 5b1c21f..5ba7ca2 100644 (file)
@@ -116,10 +116,10 @@ zh_Hans_HK{
                 "y年M月d日",\r
                 "y年M月d日",\r
                 "d/M/yy",\r
-                "{1}{0}",\r
-                "{1}{0}",\r
                 "{1} {0}",\r
-                "{1}{0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
                 "{1} {0}",\r
             }\r
             availableFormats{\r
index b41c4db..8eeb349 100644 (file)
@@ -101,10 +101,10 @@ zh_Hans_MO{
                 "y年M月d日",\r
                 "y年M月d日",\r
                 "d/M/yy",\r
-                "{1}{0}",\r
-                "{1}{0}",\r
                 "{1} {0}",\r
-                "{1}{0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
                 "{1} {0}",\r
             }\r
             availableFormats{\r
index c186107..70cd483 100644 (file)
@@ -115,10 +115,10 @@ zh_Hans_SG{
                 "y年M月d日",\r
                 "y年M月d日",\r
                 "dd/MM/yy",\r
-                "{1}{0}",\r
-                "{1}{0}",\r
                 "{1} {0}",\r
-                "{1}{0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
+                "{1} {0}",\r
                 "{1} {0}",\r
             }\r
             availableFormats{\r
index 3f7acb6..9016aa2 100644 (file)
 \r
 ##############################################################################\r
 # Keep the following in sync with the version - see common/unicode/uvernum.h\r
-U_ICUDATA_NAME=icudt68\r
+U_ICUDATA_NAME=icudt69\r
 ##############################################################################\r
 !IF "$(UWP)" == "UWP"\r
 # Optionally change the name of the data file for the UWP version.\r
-U_ICUDATA_NAME=icudt68\r
+U_ICUDATA_NAME=icudt69\r
 !ENDIF\r
 U_ICUDATA_ENDIAN_SUFFIX=l\r
 UNICODE_VERSION=13.0\r
index 347da5d..813f084 100644 (file)
@@ -59,6 +59,7 @@ dayPeriods:table(nofallback){
         nb{"set8"}\r
         ne{"set38"}\r
         nl{"set4"}\r
+        no{"set8"}\r
         pa{"set39"}\r
         pl{"set30"}\r
         pt{"set11"}\r
@@ -141,6 +142,7 @@ dayPeriods:table(nofallback){
         nb{"set87"}\r
         ne{"set122"}\r
         nl{"set83"}\r
+        no{"set87"}\r
         pa{"set123"}\r
         pl{"set105"}\r
         pt{"set90"}\r
@@ -375,7 +377,7 @@ dayPeriods:table(nofallback){
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
+                before{"22:00"}\r
                 from{"18:00"}\r
             }\r
             morning1{\r
@@ -384,7 +386,7 @@ dayPeriods:table(nofallback){
             }\r
             night1{\r
                 before{"04:00"}\r
-                from{"00:00"}\r
+                from{"22:00"}\r
             }\r
         }\r
         set109{\r
@@ -1697,7 +1699,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
@@ -1709,7 +1711,7 @@ dayPeriods:table(nofallback){
             }\r
             night1{\r
                 before{"04:00"}\r
-                from{"00:00"}\r
+                from{"22:00"}\r
             }\r
             noon{\r
                 at{"12:00"}\r
diff --git a/source/data/misc/grammaticalFeatures.txt b/source/data/misc/grammaticalFeatures.txt
new file mode 100644 (file)
index 0000000..84cf9de
--- /dev/null
@@ -0,0 +1,1088 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html\r
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
+grammaticalFeatures:table(nofallback){\r
+    grammaticalData{\r
+        derivations{\r
+            de{\r
+                component{\r
+                    case{\r
+                        per{\r
+                            "compound",\r
+                            "accusative",\r
+                        }\r
+                        power{\r
+                            "nominative",\r
+                            "compound",\r
+                        }\r
+                        prefix{\r
+                            "nominative",\r
+                            "compound",\r
+                        }\r
+                        times{\r
+                            "nominative",\r
+                            "compound",\r
+                        }\r
+                    }\r
+                    plural{\r
+                        per{\r
+                            "compound",\r
+                            "one",\r
+                        }\r
+                        power{\r
+                            "one",\r
+                            "compound",\r
+                        }\r
+                        prefix{\r
+                            "one",\r
+                            "compound",\r
+                        }\r
+                        times{\r
+                            "one",\r
+                            "compound",\r
+                        }\r
+                    }\r
+                }\r
+                compound{\r
+                    gender{\r
+                        per{"0"}\r
+                        power{"0"}\r
+                        prefix{"0"}\r
+                        times{"1"}\r
+                    }\r
+                }\r
+            }\r
+            fr{\r
+                component{\r
+                    plural{\r
+                        per{\r
+                            "compound",\r
+                            "one",\r
+                        }\r
+                        power{\r
+                            "compound",\r
+                            "compound",\r
+                        }\r
+                        prefix{\r
+                            "one",\r
+                            "compound",\r
+                        }\r
+                        times{\r
+                            "compound",\r
+                            "compound",\r
+                        }\r
+                    }\r
+                }\r
+                compound{\r
+                    gender{\r
+                        per{"0"}\r
+                        power{"0"}\r
+                        prefix{"0"}\r
+                        times{"0"}\r
+                    }\r
+                }\r
+            }\r
+            root{\r
+                component{\r
+                    case{\r
+                        per{\r
+                            "compound",\r
+                            "nominative",\r
+                        }\r
+                        power{\r
+                            "nominative",\r
+                            "compound",\r
+                        }\r
+                        prefix{\r
+                            "nominative",\r
+                            "compound",\r
+                        }\r
+                        times{\r
+                            "nominative",\r
+                            "compound",\r
+                        }\r
+                    }\r
+                    plural{\r
+                        per{\r
+                            "compound",\r
+                            "one",\r
+                        }\r
+                        power{\r
+                            "one",\r
+                            "compound",\r
+                        }\r
+                        prefix{\r
+                            "one",\r
+                            "compound",\r
+                        }\r
+                        times{\r
+                            "one",\r
+                            "compound",\r
+                        }\r
+                    }\r
+                }\r
+                compound{\r
+                    gender{\r
+                        per{"0"}\r
+                        power{"0"}\r
+                        prefix{"0"}\r
+                        times{"1"}\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        features{\r
+            am{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "accusative",\r
+                        }\r
+                    }\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            ar{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "accusative",\r
+                        }\r
+                        units{""}\r
+                    }\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                            "construct",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            az{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "ablative",\r
+                            "locative",\r
+                        }\r
+                        units{""}\r
+                    }\r
+                }\r
+            }\r
+            bn{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "accusative",\r
+                            "genitive",\r
+                            "locative",\r
+                        }\r
+                    }\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            ca{\r
+                nominal{\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            cs{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "vocative",\r
+                            "locative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "animate",\r
+                            "inanimate",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            da{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                        }\r
+                        units{""}\r
+                    }\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                            "unspecified",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "common",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            de{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            el{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "accusative",\r
+                            "vocative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            es{\r
+                nominal{\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            fa{\r
+                nominal{\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                            "construct",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            fi{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "abessive",\r
+                            "ablative",\r
+                            "adessive",\r
+                            "allative",\r
+                            "comitative",\r
+                            "elative",\r
+                            "essive",\r
+                            "genitive",\r
+                            "illative",\r
+                            "inessive",\r
+                            "instrumental",\r
+                            "partitive",\r
+                            "translative",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            fr{\r
+                nominal{\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            gu{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "accusative",\r
+                            "dative",\r
+                            "locative",\r
+                            "instrumental",\r
+                            "vocative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            he{\r
+                nominal{\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                            "construct",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            hi{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "oblique",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            hr{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "vocative",\r
+                            "locative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "animate",\r
+                            "inanimate",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            hu{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "ablative",\r
+                            "accusative",\r
+                            "adessive",\r
+                            "allative",\r
+                            "causal",\r
+                            "dative",\r
+                            "delative",\r
+                            "elative",\r
+                            "essive",\r
+                            "illative",\r
+                            "inessive",\r
+                            "instrumental",\r
+                            "sublative",\r
+                            "superessive",\r
+                            "terminative",\r
+                            "translative",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            hy{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "ablative",\r
+                            "dative",\r
+                            "locative",\r
+                            "instrumental",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            id{\r
+                nominal{\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            is{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                        }\r
+                    }\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            it{\r
+                nominal{\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            kk{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "ablative",\r
+                            "locative",\r
+                        }\r
+                        units{""}\r
+                    }\r
+                }\r
+            }\r
+            kn{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "accusative",\r
+                            "dative",\r
+                            "locative",\r
+                            "instrumental",\r
+                            "vocative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            ky{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "ablative",\r
+                            "locative",\r
+                        }\r
+                        units{""}\r
+                    }\r
+                }\r
+            }\r
+            lij{\r
+                nominal{\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            lt{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "vocative",\r
+                            "locative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            lv{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "vocative",\r
+                            "locative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            ml{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "locative",\r
+                            "comitative",\r
+                            "locativecopulative",\r
+                            "sociative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "animate",\r
+                            "inanimate",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            mr{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "oblique",\r
+                            "accusative",\r
+                            "dative",\r
+                            "ergative",\r
+                            "locative",\r
+                            "ablative",\r
+                            "genitive",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            nb{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                        }\r
+                        units{""}\r
+                    }\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                        units{\r
+                            "masculine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            nl{\r
+                nominal{\r
+                    gender{\r
+                        _{\r
+                            "common",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            no{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                        }\r
+                        units{""}\r
+                    }\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                        units{\r
+                            "masculine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            pa{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "oblique",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            pl{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "vocative",\r
+                            "locative",\r
+                        }\r
+                        units{\r
+                            "accusative",\r
+                            "dative",\r
+                            "genitive",\r
+                            "instrumental",\r
+                            "locative",\r
+                            "nominative",\r
+                            "vocative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "animate",\r
+                            "inanimate",\r
+                            "personal",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                        units{\r
+                            "inanimate",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            pt{\r
+                nominal{\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            ro{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                        }\r
+                    }\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            ru{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "prepositional",\r
+                            "vocative",\r
+                            "locative",\r
+                        }\r
+                        units{\r
+                            "accusative",\r
+                            "dative",\r
+                            "genitive",\r
+                            "instrumental",\r
+                            "locative",\r
+                            "nominative",\r
+                            "vocative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                        units{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            si{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "ablative",\r
+                            "accusative",\r
+                            "dative",\r
+                        }\r
+                    }\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            sk{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "vocative",\r
+                            "locative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "animate",\r
+                            "inanimate",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            sl{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "accusative",\r
+                            "dative",\r
+                            "instrumental",\r
+                            "locative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            sr{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "vocative",\r
+                            "locative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "animate",\r
+                            "inanimate",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            sv{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                        }\r
+                        units{""}\r
+                    }\r
+                    definiteness{\r
+                        _{\r
+                            "definite",\r
+                            "indefinite",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "common",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            ta{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "accusative",\r
+                            "dative",\r
+                            "locative",\r
+                            "instrumental",\r
+                            "ablative",\r
+                            "vocative",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            te{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "oblique",\r
+                            "accusative",\r
+                            "dative",\r
+                            "locative",\r
+                            "instrumental",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            tr{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "ablative",\r
+                            "locative",\r
+                        }\r
+                        units{""}\r
+                    }\r
+                }\r
+            }\r
+            uk{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "instrumental",\r
+                            "vocative",\r
+                            "locative",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                            "neuter",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            ur{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "oblique",\r
+                        }\r
+                    }\r
+                    gender{\r
+                        _{\r
+                            "masculine",\r
+                            "feminine",\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            uz{\r
+                nominal{\r
+                    case{\r
+                        _{\r
+                            "nominative",\r
+                            "genitive",\r
+                            "dative",\r
+                            "accusative",\r
+                            "ablative",\r
+                            "locative",\r
+                        }\r
+                        units{""}\r
+                    }\r
+                }\r
+            }\r
+        }\r
+    }\r
+}\r
index 63d70b2..4f629b3 100644 (file)
@@ -8,7 +8,7 @@
 // *\r
 // ***************************************************************************\r
 icuver:table(nofallback){\r
-    CLDRVersion{"38.1"}\r
-    DataVersion{"68.2.0.0"}\r
-    ICUVersion{"68.2.0.0"}\r
+    CLDRVersion{"39"}\r
+    DataVersion{"69.1.0.0"}\r
+    ICUVersion{"69.1.0.0"}\r
 }\r
index 999be56..ce05db1 100644 (file)
@@ -150,7 +150,6 @@ langInfo:table(nofallback){
             "nlr","nrk",\r
             "nns","nbr",\r
             "nnx","ngv",\r
-            "no","nb",\r
             "noo","dtd",\r
             "npi","ne",\r
             "nts","pij",\r
@@ -546,6 +545,7 @@ langInfo:table(nofallback){
             "dia","Latn","ZZ",\r
             "zza","Latn","TR",\r
             "dje","Latn","NE",\r
+            "dmf","Medf","NG",\r
             "dob","Latn","ZZ",\r
             "dop","Latn","ZZ",\r
             "dow","Latn","ZZ",\r
@@ -1056,8 +1056,6 @@ langInfo:table(nofallback){
             "mhl","Latn","ZZ",\r
             "mif","Latn","ZZ",\r
             "min","Latn","ID",\r
-            "mis","Hatr","IQ",\r
-            "mis","Medf","NG",\r
             "miw","Latn","ZZ",\r
             "mki","Arab","ZZ",\r
             "mkl","Latn","ZZ",\r
@@ -1484,6 +1482,7 @@ langInfo:table(nofallback){
             "tyv","Cyrl","RU",\r
             "tzm","Latn","MA",\r
             "ubu","Latn","ZZ",\r
+            "udi","Aghb","RU",\r
             "udm","Cyrl","RU",\r
             "ug","Arab","CN",\r
             "ug","Cyrl","KZ",\r
@@ -1613,7 +1612,6 @@ langInfo:table(nofallback){
             "fr","Latn","WF",\r
             "sq","Latn","XK",\r
             "fr","Latn","YT",\r
-            "lez","Aghb","RU",\r
             "ks","Arab","GB",\r
             "ms","Arab","ID",\r
             "ur","Arab","IN",\r
@@ -1871,623 +1869,622 @@ langInfo:table(nofallback){
             "ZR","CD",\r
         }\r
         trie:bin{\r
-001a6dcc0f74c4f077c26777a2b778a4\r
-5279a4c27a0f6d7d7a5c7a30e1ad9ae8\r
-2ef5af3d10e1a539022a3c42cc184811\r
+001a6dcc0574c4f377c26777a2b778a4\r
+5279a4c27a0f6d7d7a5c7a30e1ad99e8\r
+2ef5af3c10e1a539022a3c42cc0e4811\r
 616e01e2a3fdf4a3f80b4d25540e54ca\r
-c5552a5610cea3fb10d3a3fa4dd81e50\r
+bb552a5610cea3fb10d3a3fa4dd81e44\r
 502a5310d2a3f602c1a3f5c6a3f3c8a3\r
-f447d4d4473248d81e324910c4a3f101\r
+f447d4ca473248d81e264910c4a3f101\r
 c2a3f9c6a3ef6d326e36733a7910e2ad\r
-9a10e9af3b10e5af3c10ed22012aa90e\r
-4310c3a90f6817683269366b3a6c10ed\r
-af3a10f8adb710e1af3910f4ad956132\r
-6436653a6710e8adc610e7af3610eaaf\r
-3710e1af3800126d46741b7434753877\r
-42e1adeaefaf0110edaf0601f5af07f6\r
-af0810e1af096d3c6e406f50725a7301\r
-e7ad86ebaf0510efadfd02e3adfee9ad\r
-fff5af0001e2af02f3af0310f3af0467\r
-266736683a693e6a4e6c10f3adfc10e9\r
-adf510e7adf602e2adf7f5adf8f6adf9\r
-01e1adfae9adfb6138625463646501ec\r
-a520f2adf404e5adebeaadececadedee\r
-adeef2adef02f0adf0f1adf1f2adf210\r
-e9adf30c6e3d7221722e7332774ee8af\r
-0d10e2af1304e1adbee9af14eca52fed\r
-af15f2af1610e5af176e346f3e7001e5\r
-a78df2adbb01e1adb5f2af1001e7af11\r
-eeaf12651d653a6c3e6d02e6af0feead\r
-abf2adae10f3af0c02e1af0ee3ada7e4\r
-ada8613462386301efad75f2ad7410f6\r
-af0a10e9af0b0d6d49733073307534e9\r
-a733efaf2a10f3af2f04e1af30e532ea\r
-af33f4af34f7af35012a2e4812616ef3\r
-af32012aaf314310ceaf326d3a6f3e72\r
-02e2af2ce5af2decaf2e10ecaf2910ee\r
-af2b6520653e67426b4c6c02e5af26e7\r
-af27ecaf2810f2af2201f2af23f7af24\r
-10efaf25612e62606410e4a73307f40c\r
-f4af1bf6af1cf9af1dfaaf1eeda7b6ef\r
-af18f0af19f3af1a02e1af1fe2af20f9\r
-af2174a25275a4d0760a6f1fe509e5ad\r
-dde9ad61efade56f3472387501eeade8\r
-f4ade910f4ade610efade7613c654c69\r
-566c606d01e6ade3f7ade402e7addbe9\r
-adcbeeaddc01e3addef0addf01e3ade0\r
-f6ade110f3ade200267576e91ff20ef2\r
-abc6f3abcaf4abd0f767f9abe0e9abab\r
-ebabb2ecabb6eeabbcefabbe7a247a36\r
-e1ab8ae5ab9ce72ee8aba710edabe301\r
-2a2e41127261e2aba3012aaba25010cb\r
-aba3753e7654776478cced7901e1abe1\r
-f6abe203e8abd7ecabd8edabd9f1abda\r
-02e4a7b9ecabdbf5abdc01e8abddf1ab\r
-de6b7d7049705e716e727273827406f1\r
-0cf1abbaf2abd4f3abd5f4abd6e4abd1\r
-e5abd2eaabd302e9abc2edabc3faabc4\r
-10efabc502f5abc7f6abc8f7abc904e4\r
-abcbe6abcce7abcdeaabcef7abcf6b42\r
-6c526d626e6c6f02e6abbfe7abc0f1ab\r
-c102ecabb3f2abb4f4abb502e6abb7f8\r
-abb8f9abb901e8abbaf9abbb10e8abbd\r
+9910e9af3a10e5af3b10ed22012aa90f\r
+4310c3a9106817683269366b3a6c10ed\r
+af3910f8adb610e1af3810f4ad946132\r
+6436653a6710e8adc510e7af3510eaaf\r
+3610e1af3700126d46741b7434753877\r
+42e1ade9efaf0010edaf0501f5af06f6\r
+af0710e1af086d3c6e406f50725a7301\r
+e7ad85ebaf0410efadfc02e3adfde9ad\r
+fef5adff01e2af01f3af0210f3af0367\r
+266736683a693e6a4e6c10f3adfb10e9\r
+adf410e7adf502e2adf6f5adf7f6adf8\r
+01e1adf9e9adfa6138625463646501ec\r
+a520f2adf304e5adeaeaadebecadecee\r
+adedf2adee02f0adeff1adf0f2adf110\r
+e9adf20c6e3d7221722e7332774ee8af\r
+0c10e2af1204e1adbde9af13eca52fed\r
+af14f2af1510e5af166e346f3e7001e5\r
+a78ef2adba01e1adb4f2af0f01e7af10\r
+eeaf11651d653a6c3e6d02e6af0eeead\r
+aaf2adad10f3af0b02e1af0de3ada6e4\r
+ada7613462386301efad74f2ad7310f6\r
+af0910e9af0a0d6d49733073307534e9\r
+a734efaf2910f3af2e04e1af2fe532ea\r
+af32f4af33f7af34012a2e4812616ef3\r
+af31012aaf304310ceaf316d3a6f3e72\r
+02e2af2be5af2cecaf2d10ecaf2810ee\r
+af2a6520653e67426b4c6c02e5af25e7\r
+af26ecaf2710f2af2101f2af22f7af23\r
+10efaf24612e62606410e4a73407f40c\r
+f4af1af6af1bf9af1cfaaf1deda7b7ef\r
+af17f0af18f3af1902e1af1ee2af1ff9\r
+af2074a25275a4d0760a6f1fe509e5ad\r
+dce9ad61efade46f3472387501eeade7\r
+f4ade810f4ade510efade6613c654c69\r
+566c606d01e6ade2f7ade302e7addae9\r
+adcaeeaddb01e3adddf0adde01e3addf\r
+f6ade010f3ade100267576e91ff20ef2\r
+abc5f3abc9f4abcff767f9abdfe9abaa\r
+ebabb1ecabb5eeabbbefabbd7a247a36\r
+e1ab89e5ab9be72ee8aba610edabe201\r
+2a2e41127261e2aba2012aaba15010cb\r
+aba2753e7654776478cce77901e1abe0\r
+f6abe103e8abd6ecabd7edabd8f1abd9\r
+02e4a7baecabdaf5abdb01e8abdcf1ab\r
+dd6b7d7049705e716e727273827406f1\r
+0cf1abb9f2abd3f3abd4f4abd5e4abd0\r
+e5abd1eaabd202e9abc1edabc2faabc3\r
+10efabc402f5abc6f6abc7f7abc804e4\r
+abcae6abcbe7abcceaabcdf7abce6b42\r
+6c526d626e6c6f02e6abbee7abbff1ab\r
+c002ecabb2f2abb3f4abb402e6abb6f8\r
+abb7f9abb801e8abb9f9abba10e8abbc\r
 6546655e6674677868886906eb0cebab\r
-aeedabafefabb0f6abb1e2a3b1e6abac\r
-e7abad03e4ab9dedab9eefab9ff4aba0\r
-10e9aba102e3aba4efaba5f5aba602ec\r
-aba8f1aba9f2abaa6144625a63866403\r
-e4ab98e7ab99e8ab9af5ab9b03eaab8b\r
-ecab8ceeab8df1ab8e06e70ce7ab92ef\r
-ab93f7ab94faab95e3ab8fe4ab90e6ab\r
-9101e9ab96f9ab970f7362e72ce742eb\r
-abeaf2ad49fa012a8641127261e2add9\r
+adedabaeefabaff6abb0e2a3b1e6abab\r
+e7abac03e4ab9cedab9defab9ef4ab9f\r
+10e9aba002e3aba3efaba4f5aba502ec\r
+aba7f1aba8f2aba96144625a63866403\r
+e4ab97e7ab98e8ab99f5ab9a03eaab8a\r
+ecab8beeab8cf1ab8d06e70ce7ab91ef\r
+ab92f7ab93faab94e3ab8ee4ab8fe6ab\r
+9001e9ab95f9ab960f7362e72ce742eb\r
+abeaf2ad49fa012a8641127261e2add8\r
 012a2e43127972ecabe7022aabe64b2a\r
 4d10ceabe810daabe773607464766e7a\r
-10ee012a2e41127261e2add9022aabf5\r
-412a4310ceadda10c6add910e1add501\r
-e8a549f2add601e8add7ecadd86d326d\r
-3e6e426f707202e9add2f4add3f7add4\r
-10e2abec01f226f8add0012a2e441265\r
-76e1adcf012aadce4e10d0adcf10ebad\r
-d162326436673a6c10e9abeb10f5abe4\r
-10edabe510e1abe970c39570a4f971a6\r
-d772a6e47300287884ec39f229f509f5\r
-ab79f6ab7ff7ab80f22cf3ab72f4ab76\r
-22032aab2c4da4bf522a5410d2ab3001\r
-cfab2fd5ab2decab54edab59eeab60ef\r
-ab66f16de429e438e5ab3ce7ab41e9ab\r
-4aebab50032aab3644324b3a5312696e\r
-e4ab39126576e1ab3712686feaab3878\r
-34793e7a48e1ab20e3ab2b01eeab86f7\r
-ab8701ecab88f2a50c10ecab896cad72\r
-4f725873747484758e7705e809e8ab80\r
-f0ab84f6ab85e2ab81e3ab82e7ab8304\r
-e2ab6fe3ab2beeab70f2ab71f8a5f102\r
-e4ab73e7ab74f9ab7501ebab77f1ab78\r
-04e1ab7ae5ab7bebab7cf2ab7df3ab7e\r
-6c4a6d666e8c6fa2437003e4ab6cecab\r
-6df3ab6ef9a77404e4ab55e9ab56ecab\r
-57efab50f9ab5805f009f0ab5df1ab5e\r
-f3ab5fe1ab5aeaab5beeab5c04e3ab61\r
-ebab62f0ab63f8ab64f9ab6504e7ab67\r
-ebab68f1ab69f5ab6af9ab6b673e6742\r
-6858696e6a846b02e3ab51f2ab52f3ab\r
-5303e1ab42f3ab43f7ab44faab4503e9\r
-ab46ebab47eeab48f5ab4903e4ab4be7\r
-ab4cecab4dedab4e10f2ab4f614a6276\r
-638664a26b6503e6ab3de8ab3ee9ab3f\r
-f3ab4006f30cf3ab24f4ab25f6ab26fa\r
-ab27e6ab21e8ab22f1ab2302e1ab28e5\r
-ab29f0ab2a06ee0ceeab33efab34f2a5\r
-fff3ab35e32cebab31ecab3222055211\r
-522e53325410d2ab3010cfab2f10d5ab\r
-2d2aab2c312a4d10c5ab2e1137b2ab2d\r
-01e3ab3ae8ab3b00166e63752bec09ec\r
-a9ebf3a9dcf4a9f8754c7750e1012a2e\r
-41127261e2a9d4012aa9d35010cba9d4\r
-10f5a9fa10e1a9fb7217722e733e7410\r
-f0a9f902e1a9f4e4a9f5e7a9f610f3a9\r
-f76e346f4a7001e1a9f2efa9f303e2a7\r
-cce7a9eeeea9eff4a9f010eea9f16630\r
-6b176b2e6c386d10f3a9ed01e1a9e9ef\r
-a9ea01e1a9ecf4a92e663468386901ec\r
-a9e7f0a9e810eca9e401eca9e5eea9e6\r
-614e627e638864926504e4a9e1efa9e2\r
-f2a570f3a570f8a9e304e7a9d5ec32ed\r
-a9d8f0a9d9f5a9da012aa9d65012686c\r
-f0a9d701e9a9dbf5a9dc01e4a9ddeda9\r
-de01e3a9dff4a9e0017526f5a9fc02e3\r
-a9fde7a9fefaa9fc00146f457917ef09\r
-efa94bf5ab19f7ab1c792cedab0ceeab\r
-1110f5ab1f6f3c724c745075547701eb\r
-ab1defab1e02e2ab14e6ab15efab1610\r
-efab1710edab1802e5ab1ae7ab1beda9\r
-4b6934693c6a566b5a6d5e6e01e1ab12\r
-e7ab1301e1ab07e622012aab084e10cc\r
-ab0910f3ab0a10f4ab0b03e6ab0defab\r
-0ef4ab0ff5ab1061366346654a675a68\r
-10e7ab0602e9a9ffeaa960efab0010e6\r
-ab0102eaab02ecab03f3ab0410eeab05\r
-6da2576ea63e6f0b741ded09eda5a1f2\r
-a9cbf3a9ce742a7a34e3a9c301e1a9d0\r
-eba9d110eda9d27017702e72327310e1\r
-a9cf10eda9ca02efa9ccf5a9cdf9a9cb\r
-673a6b3e6e02e7a9c7eea9c8f3a9c910\r
-e3a9c401f2a9c5f6a9c60022749fe926\r
-ef0fefa94bf2a956f3a492f4a95af9a3\r
-cee9a90beba905eca940ee012abac64d\r
-126f6ee7a53f783d7834793e7a64e7a9\r
-2ee8a93401e3a969eda96a05f709f7a9\r
-6ef8a96ffaa970eba96beda96cf6a96d\r
-05f009f0a974f7a975faa976eba971ed\r
-a972eea9737444755a76707703eba966\r
-f2a537f6a967f7a96803e3a95be6a95c\r
-e9a95df2a95e03e1a95ff0a960f2a961\r
-f3a96202e1a963eea964f9a96569856e\r
-446e426f5e707a71907202e4a957eaa9\r
-58efa95904e1a947e6a948e9a949ebb6\r
-1af7a94a04e1a94ce5a94de8a94ef3a9\r
-4ff8a95003f0a951f3a952f4a953f8a9\r
-5410eca955693e6b686c7e6d02efa944\r
-f5a945f8a94603e6a937eea938f326f7\r
-a93b012aa9394d126564e6a93a03e9a9\r
-3ceca93df0a93ef7a93f02e5a941f0a9\r
-42f3a9436549653e666a67866802e9a9\r
-35eca936f2a3ff06ee0ceea925f2a926\r
-f4a927f5a928e4a922e5a923eba92404\r
-e1a929e5a92aeea92befa92cf1a92d04\r
-e8a92feca930efa931f0a932f9a93361\r
-5e62a25063a25d6406e80ce8a91eeaa9\r
-1ff2a920f8a921e1a91be5a91ce6a91d\r
-0bee1df712f7a90df926faa91022012a\r
-a90e4310c3a90feeb431efa90bf3a90c\r
-e709e7a908e9a909eba90ae3a905e4a9\r
-06e6a90704e8a911efa912f1a913f5a9\r
-14f7a91504e9a916f0a917f1a918f2a9\r
-19f5a91a0021745fe41dee0feea9a1ef\r
-a9a7f2a9aef6a9bbf9a9bfe4a986e5a9\r
-89e7a98eeca54b791579307a3ae1a977\r
-e2a97f01eda9c0eea9c110e9a9c27438\r
-7542775e7801f1a9bdf2a9be01eda9b4\r
-f2a9b504e9a9b6f0a9b7f3a9b8f6a9b9\r
-f8a9ba10e2a9bc6a5d6f326f48706471\r
-68726c7303eba9b0eea9b1efa9b2f3a9\r
-b304e4a9a8e5a9a9eea9aaf0a9abf5a9\r
-ac10e9a98910efa9ad10e2a9af6a4a6b\r
-4e6d586e04e6a9a2e8a9a3eba9a4eda9\r
-a5f0a9a610efa99c01e7a99defa99e01\r
-e7a99ffaa9a06637665a675e686e6906\r
-ee0ceea998f5a999f9a99afaa99be6a9\r
-95e9a996eaa99710f2a98d02e1a98fe2\r
-a990eca99102e2a992e5a993f7a99461\r
-3e636a64906502e2a98af7a98bf8a98c\r
-06ee0ceea97bf0a97cf1a97df3a97ee3\r
-a978e6a979eba97a05e809e8a983efa9\r
-84f5a985e1a980e5a981e6a98201e3a9\r
-87f3a98866c75369c49669a4166aa4c4\r
-6ba6116c001b744ae717ef0cefa7f3f4\r
-a7fbf5a7fdf6a901e7a7dde9a7dfeea7\r
-f0771577307a34e1a7c8e2a7cf10eca9\r
-0201e8a903faa904742e75327610f3a9\r
-0110e7a7fc03e1a7feefa7fff9a3d5fa\r
-a9006a4a6d316d326e426f4c7210e3a7\r
-fa02eea7edefa7eef0a7ef01f3a7f1f5\r
-a7f205f209f2a7f7f3a7f8faa7f9eaa7\r
-f4eba7f5eca7f66a346b386c01e5a7eb\r
-eea7ec10f0a7e801e9a7e9f4a7ea6448\r
-646c6570679c6906e70ce7a7e4e8a7e5\r
-eaa7e6f3a7e7e1a7e0e4a7e1e6012aa7\r
-e24c12696de2a7e310e2a7d506f00cf0\r
-a7d9f1a7daf5a7dbfaa7dce4a7d6e5a7\r
-d7eda7d810e7a7de6134625a6301eda7\r
-d3f0a7d405e809e8a7cceaa7cdf3a7ce\r
-e2a7c9e4a7cae7a7cb02e5a7d0f5a7d1\r
-f7a7d200197739eb17f30cf3a70df4a7\r
-25f5a719f7a726eba567eea720efa722\r
-e409e4a70fe7a714e9a717772a7a34e1\r
-a70601eda727f3a72801e8a729e9a72a\r
-6a366d176d326e366f3a7210e9a72410\r
-efa71f10e8a72110f5a7236a2e6b326c\r
-10efa71e10eaa71804e5a719eba71af4\r
-a71bf7a71cf8a71d641a643466446701\r
-e2a715e5a71602e4a710e9a711f5a712\r
-10e5a713613a62446302e1a70ce5a70d\r
-e8a70e01eea707f2a70802e1a709e2a7\r
-0af9a70b0b721ae909e9a733f6a739f7\r
-a73a722a752ee1a72b10e1a73710f4a7\r
-3867176734693e6d01e3a735eca73601\r
-eba72eefa73210e2a734612e623e6510\r
-eea73102e2a72ceda72df2a72e01efa7\r
-2ff5a730002875c0edeb74f23ff628f6\r
-a791f7a7b3f9022a32414c4c126174ee\r
-a7c1022aa7bf432a5410d2a7c110cea7\r
-c0127261e2a7c0f2a784f3a79df5022a\r
-a46441a46a5912657ae9a77feb38eca7\r
-73eda778eea783efa788012a2e411272\r
-61e2a76e042aa76c41324336493a4d10\r
-cea77010c6a76d10cea76e10d2a76f7a\r
-1b7a38e1a5b0e7a757e9a763eaa76703\r
-e8a7c4eaa7c5f2a7c6f4a7c7753c766e\r
-777e788e7901e5a7c2f8a7c307ed0ced\r
-a7aceea7adf0a7aef3a7afe2a7a8e4a7\r
-a9e5a7aaeaa7ab02e7a7b0f2a7b1f8a7\r
-b202eaa7b4efa7b5f1a7b607ed0ceda7\r
-bbf0a7bcf7a7bdfaa7bee1a7b7e3a7b8\r
-e5a7b9eca7ba6bc0d57063704a717072\r
-8673a2457403e2a7a4eda7a5efa7a6f2\r
-a7a705f209f2a790f6a791f8a792e5a7\r
-8de6a78eefa78f03e2a793e6a794f3a7\r
-95f9a79605ec09eca79af3a79bf5a79c\r
-e3a797e9a798eaa79905e809e8a7a1ea\r
-a7a2f2a7a3e2a79ee4a79fe6a7a06b50\r
-6c5a6d706ea2576f04e9a789eba786ec\r
-a78af3a78bfaa78c01e3a771eaa77203\r
-eea774f1a775f4a776f8a77706f226f2\r
-32f3a780f5a781f7a782022a32414059\r
-12657ae9a77f012aa77c4c10c2a77d12\r
-7261e2a77ee2a779e8a77aefa77b04e3\r
-a784e6a785e7a757eea786f0a7876652\r
-66486758686869a06a03e4a768e7a769\r
-f3a76af9a76b02efa754f2a755f9a756\r
-02e5a758e6a759f0a75a08f10ff1a75e\r
-f3a75ff4a760f7a761faa762e1a75be2\r
-a75cebac86eea75d02eaa764f5a765f7\r
-a76661446276639c64a2486502e1a751\r
-eea752faa75307e90ce9a73feaa740ed\r
-a741efa742e1a73be2a73ce3a73de4a7\r
-3e05f109f1a746f8a747f9a748e4a743\r
-eda744f0a74503e7a749eba74aeca74b\r
-f4a74c03e5a74de8a74eeca74ff4a750\r
-66a2b567a46a6800137539f20ff2a5ff\r
-f4a702f5a703f9a342faa7057536e13a\r
-e5a5e9e9a5ebefa5fb10e9a70422032a\r
-a5df372e43345310c4a5e01133b6a5e0\r
-10cda5e16c386c3c6d466e506f6c7301\r
-e2a700eea70101e1a5f2f5a5f301e4a5\r
-f4f4a5f504e4a5f6e5a5f7eaa5f8eea5\r
-f9efa5fa02e3a5fceaa5fdf4a5fe6158\r
-62746478687c6905e809e8a5efeca5f0\r
-eda5f1e1a5ece6a5ede7a5ee04e7a5e2\r
-eba5e3eda5e4f7a5e5faa5e610e2a5e7\r
-10f9a5e810f9a5ea00117553e90fe9a5\r
-7aeaa57eefa581f2a587f9a596754276\r
-94e1a570e6012aa5764112646ceda577\r
-09e80fe8a590f1a591f2a592f6a593f9\r
-a594e2a58ce332e4a58de5a58ee6a58f\r
-012aa5764112646ceda57710f2a5956d\r
-2f6d4e6f52706271667204e3a588e5a5\r
-87f0a589f2a58af3a58b10f0a58002e4\r
-a582eea583f2a58410e5a58510f3a586\r
-6132665669606c10f2a57f05e908e9a5\r
-74eea575f467e1a571e2a572e7a57301\r
-e9a578eda57902e1a57beca57cf4a57d\r
-001a6e9f791dec0ceca5bceea5c0f5a5\r
-d0f6a5d8792ce1a597e4a5a901e1a5a2\r
-e9a5de733a733e754276747702e3a5db\r
-e9a5dcf4a5dd10f7a5cf07f20cf2a5d4\r
-f7a5d5f8a5d6faa5d7e2a5d1e3a5d2e4\r
-a5d3e7a5c002e6a5d9f2a5b3f3a5da6e\r
-5a6f6a7204e2a5a5e332e5a55af4a5cd\r
-f7a5ce012aa5cb4c12696ee2a5cc02e4\r
-a5c1e7a5c2efa5c307ee0ceea5c3f2a5\r
-c8f3a5c9f4a5cae4a5c4e6a5c5e9a5c6\r
-eda5c7673c6a236a386b486c526d01ed\r
-a5bef6a5bf02eba5b7eea5b8f5a5b901\r
-eea5baf0a5bb10eba5bd6734683e6901\r
-eca5b5eda5b601eea5b3efa56610f3a5\r
-b46428642e653e6610eba5b202e5a5aa\r
-eea5abf2a5ac05ef09efa5b0f2a52dfa\r
-a5b1e2a5adeaa5aeeca5af612e626c63\r
-10f2a5a809ed0feda59deea59ef7a59f\r
-f9a5a0faa5a1e1a598e6a599e7a59ae8\r
-a59beaa59c05ef09efa5a5f9a5a6faa5\r
-a7e1a5a2e6a5a3eda5a463c2f263a2a3\r
-64a4fc6500127733ee19ee38efa563f3\r
-a565f4a558f5a366012aa55f53126861\r
-f7a560773478387a3ce5a553eca55a10\r
-efa56d10f4a56e10e1a56f6d466d486e\r
-7a728473887403f2a569f4a56af5a56b\r
-f8a56c02e1a55be9a55ceb012a2e4e12\r
-6b6fefa55e012aa55d4710cea55e01ee\r
-a561f1a56210e9a56402e7a566eba567\r
-f5a568623e664267466b02e1a557eba5\r
-58f9a55910f5a55210e9a55401eca555\r
-f9a556001b725ce821f316f3a519f52c\r
-f6a51ff9a520012aa51d47126c61e7a5\r
-1ee8a3ebefa50ff2a512771277307a34\r
-e1a3e1e5a3e710e4a51210e5a519722e\r
-73547410e4a51c05ec09eca516eda517\r
-f3a518e8a513eaa514eba51501e2a51a\r
-f7a51b69526c306c326d3c6f6c7010f3\r
-a51101e1a50be4a50c02e5a50de7a50e\r
-ee022aa26342a2ae4811616e01e2a3fd\r
-f4a3f810f0a51069406a446b03e2a507\r
-eca508efa509f9a50a10e3a50302e1a5\r
-04eda505f6a506658f65a28066a28167\r
-a2826805ef09efa500f0a501f2a502e9\r
-2ceba3feeda3ff022a3c42a259481161\r
-6e01e2a3fdf4a3f80b4d2d5417542e55\r
-385610c4a3fb01c8a3f7d7a3f801cba3\r
-f9d3a3fa4db489502a5310d2a3f602c6\r
-a3f3c8a3f4daa3f5470e473048b46d49\r
-10c4a3f110c6a3ef2aa3ec412a4210ce\r
-a3ee10d5a3ed126f70efa3fc10e2a3e8\r
-10e1a3e910e7a3ea6134623e6301e8a3\r
-e5f0a3e601e4a3e2eea3e310eaa3e400\r
-16726f791ce508e5a52df6a54cfa4579\r
-2a7a34e1a52101efa54ff5a55010e7a5\r
-51751d752e764a7710f7a54e04e1a547\r
-e3a548e4a549e7a54af4a54b10e1a54d\r
-724073747403eda543f0a544f3a545f9\r
-a54602e82ce9a540f3a541012a2e4d12\r
-6f6ee7a53f012aa53e4310cea53f10e2\r
-a54267446a1a6a406e446f03e2a53be9\r
-a534f0a53cf7a53d10e5a53a10eaa523\r
-673468606901e1a538f1a53906ec0cec\r
-a533efa534f2a535faa536e1a530e8a5\r
-31e9a53210e4a537613c626863726476\r
-6501e4a52eeea52f06e80ce8a525eba5\r
-26f2a527f6a528e4a522e6a523e7a524\r
-01e4a529f1a52a10e3a52b10eea52c2a\r
-a4f761bea462002373a5e51ded0feda3\r
-a8eea3adefa3b1f2a3baf3a3bfe5a37c\r
-e7a389e8a38de9a39377417732783c79\r
-4c7a72e1a36201e4a3d2f2a3d302e8a3\r
-d4eba3d5f2a3c705f309f3a3d9f6a3da\r
-f8a3dbe5a3d6eea3d7f2a3d804e1a3dc\r
-e5a3dde6a3dee8a3dff7a3e073327448\r
-75587610e2a3d103eaa3c0f1a3c1f3a3\r
-c2f4a3c302efa3c4f4a3c5f6a3c609ed\r
-0feda3ccefa3cdf2a3cef3a3cff5a3d0\r
-e1a3c7e3a3c8e4a3c9e7a3caeba3cb6a\r
-7d6e3b6e486f587068716c7203e1a3bb\r
-e8a3bcf8a3bdfaa3be02e7a3aeeda3af\r
-f0a3b002eaa3b2eda3b3eea3b410f9a3\r
-b503e3a3b6e9a3b7f0a3b8f6a3b96a46\r
-6b786ca4ab6d03e8a3a9eba3aaf1a3ab\r
-f5a3ac07ef0cefa39ef2a39ff4a3a0fa\r
-a3a1e8a39ae9a39beaa39ceea39d04e3\r
-a3a2eda3a3f1a3a4f5a3a5f6a3a6656a\r
-6562669467a24468a24b6906ed0ceda3\r
-96eea397efa398f1a399e2a394e7a395\r
-eba37507f40cf4a381f7a382f8a383fa\r
-a384e6a37de8a37eeaa37feda38003e4\r
-a385f1a386f4a387f9a38802e3a38aee\r
-a38bf8a38c05ec09eca391efa38df9a3\r
-92e2a38ee7a38fe9a390613262646390\r
-6410e4a37b07f20cf2a367f3a368f6a3\r
-69f8a36aeca363eea364f0a365f1a366\r
-06e40ce4a36eeaa36ff0a370f2a371e1\r
-a36be2a36ce3a36d09ed0feda376eea3\r
-77efa378f1a379f5a37ae3a363e6a372\r
-e8a373e9a374eca37500184dc26554c0\r
-ca57365736584e59645a12616ee2adcd\r
-01612c631168efa9a61172e1adcc0170\r
-2a731175f8691165efa9e201652c6911\r
-69e9a717117ae9a77f543455a2875612\r
-6169e9adcb056746674a68506901622a\r
-7210e8adca10f4012aa3b14210d44511\r
-6ce7adc7106101e158e9042aaba74332\r
-4b364c3a5410c8aba710cea7d410c8ad\r
-c810c1adc9012aa54c4d10d6a54c6130\r
-657c66116ee7adc6056d116d2e6e3276\r
-10f4a3a710ecab8a10e7abdf67346b38\r
-6c01e5ab98f5a75c10e2adc410f2adc5\r
-116cf5ab9c126761f2abe950c0c350a2\r
-7252a2a85306694369426f6a75907901\r
-6c2a7210e3a50c10efadc301643e6e01\r
-e4ab39e8012aab4a4c10cbab4a10e4ad\r
-c002672e72387910efa50e01e4ab67ef\r
-adc110e1ab6f116ee4adc2613e675e68\r
-01612a7210e4adbf10f7a560026d2e72\r
-327510f2ab2710f2ab5d10e2adbe116e\r
-f7a34b046138654a68506c76721174e9\r
-adbb016c2a7510e3a51c10eda11172ed\r
-adb902612e6c326e10f8a9e610e7adba\r
-01e9a9d6f0a9d71172e4a5f4026a306f\r
-3675116ef2a9aa116ee7adbc1168e7ad\r
-bd4d7c4ea2a44f0367426c48724e7301\r
-672a6d10e1adb810e5a9cf1161edab42\r
-1163ebab25016b2a7910e1a9cb10e8a9\r
-d107722e725a7460756679116df2032a\r
-a3ce492e4d325410c8adb310cea76010\r
-cda3ce116fefa9591165e9adb1116cf4\r
-adb2614265746c9a6f01642a6e10e7a5\r
-3f10e9adb00368326b366e3a7210e3ad\r
-ac10eaada910e1adaa01e4a970e9adab\r
-0264346e387201e3adaeefadaf10e6a9\r
-3a10e4adad1179eda940046138624c65\r
-506b56731168f5adb7016e2a7210e2ad\r
-b510e4adb41161f49f1177e1adb6116f\r
-efa55e47c41b4ac32f4aa6c04ba6d94c\r
-03614665a69c69a69e7901632a6410e9\r
-ada810e9ada7026ea6796fa67a7410ee\r
-001a4bc139545b571457ac7058ac7459\r
-305a01c1abf1d7ab6010d4ad65544055\r
-825603c1ad60c5ad62cead61d5a3930b\r
-ce14d609d6abdbd7abc8daab80ceada5\r
-cfabbed2abc6cbc5d4cbabb3ccad5ccd\r
-abb204c1ada6c7ad5ed3a55fd9ad5fda\r
-abf54e824e8a50a24a52a26d530cce17\r
-d40cd4ad56d5a79ad6ad57d9ada4cead\r
-54cfab66d2ad55ca09caad52cbab50cd\r
-ad53c3ad51c5ab7fc9ab5406c70cc7ab\r
-edc9ad44cca54bcfa97fc1ad41c3ad42\r
-c5ad430acc14d409d4ad4dd7a9dad9a5\r
-c0cca9ebcdad4ad2ad4bc1ad46c5ad47\r
-c6ad48c7abc2c8a57c03c5ad50cfa94b\r
-d5a79ad7ab1c4b9e4ca2434d0010cd1d\r
-d40fd4a95ad5a92ad8abefd9a90edaad\r
-40cda73dcfada2d1ad3ed2ada3c60cc6\r
-ad3dc7a92ecbada1cca3a8c1ada0c3ad\r
-3bc4ad3cc5ab2e01c5ad30cdad9f04c9\r
-ad36d3ad37d4a7fbd5ad38d6a90143c0\r
-c246644656476648a24d4905d209d2ad\r
-9ed3a70dd4a725c3ad2dc4a70fc5ad21\r
-02c9a57acfa581d2a5870cce17d30cd3\r
-ad28d4ad29d5abf4d7ad2acead25d0ad\r
-26d1ad27c608c6ad24c867cca773c1ad\r
-23c2abf7c5ad9d04cdad2bcead2cd2a5\r
-ffd4a702d5a703435244a2424505d309\r
-d3a565d4ad97daad22c1ad1dc3ad1ec5\r
-a5580fcf1ad60cd6ad18d7abf9d9ad9b\r
-daa519cfad15d0ad16d2ad17d5abf2c9\r
-c68cc9ad12ccad13cdad14cead9a05cb\r
-09cba521cfad1bdaad9cc5a52dc7ad4f\r
-caad1a345e34ae874178420bce14d209\r
-d2a9f8d5a73dd6ad0ecead0bcfad0cd1\r
-ad0dc909c9ab11caad09ccad0ac1a3bf\r
-c5ad06c6ad070cd217d50cd5abeed7ad\r
-04d8ad05daa35ed2ad01d3ad02d4ad03\r
-cd09cdad99cfabffd1ad00c4abfcc6ad\r
-98cc6d2aa55f312c321133b0ad971137\r
-b2a79a10e1a9a810ef012aa7f34c10c1\r
-a7f31170e3a7d9026d2e6e327310f5a7\r
-e710e2a7e301e1a7c9e2a5cc01613a70\r
-1161ee012aa72b4a10d0a72b016d2a76\r
-10e1ad9310efad92056e1e6e306f3674\r
-1168e9ad961164e1a7831172e5012aa7\r
-884b01d0ad32d2a78861306844691174\r
-f3ad95016c2a6e10e1ad9410e9a55902\r
-612e6d326f10eaab3810f2a9f410f201\r
-2aa7784b10c8a778473448a25c491274\r
-61eca56a0465466c5a6f60727a75016a\r
-2a7210f5a9d310f2a5d0116ff2012aa5\r
-b04710c5a5b01161e7a51e016e2a7410\r
-e8a5ca01e7ad86eda5660161506510eb\r
-032aa55a432e47325410d2a38c10d9ad\r
-1910d2a55a10eead87056c186c306d36\r
-75116ee7ad911175f7a5f3106e01e7a5\r
-f8f0a9686130659c691172e1ad90016e\r
-2a7410f2a93905ef24efad8af34cf403\r
-2aa3f8482e4d325410d7a3f810cba3f0\r
-10cfa3f2012aa3ec4310cea3ece2a3fd\r
-e7ad88e9ad891162f2054917493a533e\r
-5502c1ad8ecbad8cd3ad8f10cca5e910\r
-c5ad8d2aa5e9432a4710c2ad8c10c1ad\r
-8b43c107437044a2c0450267406c4674\r
-1168e9012a754501d2ad20d4751179f0\r
-a55601622a7910edad8510e1ad840461\r
-a26968a2786fa28770a289791172ec0a\r
-4d335414542e55385810cbad7d01caab\r
-a2d2ad7c10c1abea4d2e523e5310cbad\r
-7b02c4ad79cba905cea53e02cfad7ad3\r
-ab2cd5ab192aab194138423c474c4b01\r
-c7a7bfdaad3410ccad7602c1ad77c7a3\r
-89d9a37c01c5a9ced2ad78026b2e6e32\r
-7210e9ad7410eda3e610f3a51202612e\r
-65327210f3ad7510eda50510f2a50211\r
-70f4a5101172f4a5cb03653469866f8c\r
-751170ecad831176e106491749324d36\r
-4e3a5010cba3c610cea5eb10d5ad8010\r
-d0a9892aa5eb422a4610caad7f10d4ad\r
-7e1161ebad811167f2ad822aa25441aa\r
-3142056f1f6f3e72447501672a6810e4\r
-ad7310e9ad721170efa3fc106101e8a9\r
-e9e9ad716130655c68116bf3ad70036c\r
-326d36733a7410ebad6f10e9ad6e10f5\r
-a36a10f3a3c1116ee7012aa3ad4210c4\r
-a3ad00214ac1c052c0cc5638563c5758\r
-586259665a01d2abf0d7ab6004c1ad60\r
-c4ad61c5ad62cead61d5a39301c6ad63\r
-d3ab5910cbad6403c4abfbc5abfbd4ad\r
-65d5ab2c5246536c54a2575503c1abea\r
-c7ad5ed9ad5fdaabf505d309d3ab2cd5\r
-ab19d7ab1cc5ad50c8ab60cfa94b0ecd\r
-1ad40cd4ad56d5ab19d6ad57d9ad58cd\r
-ad53cead54cfab66d2ad55c50cc5ab7f\r
-c9ab54caad52cbab50c1abf6c3ad51c4\r
-abfa0ecd1ad20cd2abc6d6abdbd7a3f8\r
-daab80cdabb2cead5dcfabbed0ad5cc8\r
-0cc8aba7caaba2cbabb3ccad5cc4ad59\r
-c6ad5ac7ad5b4e644e404fa896507851\r
-02c1ad4ecfad4fd5ad2109cc0fcca54b\r
-cfa97fd0a989d1ad00d4abf6c1ad41c3\r
-ad42c5ad43c8a393c9ad440dcd17d40c\r
-d4ad4dd7a9dad9a5c0daad46cdad4ad2\r
-ad4bd3ad4cc70cc7abc2c8a57ccbad49\r
-cca9ebc1ad46c5ad47c6ad484aa2484b\r
-a24c4ca2644d0012ce20d50fd5a92ad6\r
-a54cd8abefd9a90edaad40cea53ecfa3\r
-f2d1ad3ed2ad3fd4a95ac60fc6ad3dc7\r
-a92ecba905cca3a8cda3cec1ad3ac3ad\r
-3bc4ad3cc5ab2e01cfad2fd0a72b07d0\r
-0cd0ad32d2a788d7ad33daad34c5ad30\r
-c7a7bfc8a778cdad3108d30fd3ad37d4\r
-a7fbd5ad38d6a901d9ad39c1a7f3c2ad\r
-35c9ad36cbab4a41c1604598456a46a2\r
-4147a24e48a2754907d10cd1ad2ed2a5\r
-70d3a70dd4a725c3ad2dc4a70fcca5e9\r
-cea5eb09d20ed2ad20d3a565d475d5ad\r
-21daad22c1ad1dc3ad1ec5a558c79bc8\r
-ad1f04c9a57acfa581d1ad00d2a587d8\r
-a5870bd014d309d3ad28d4ad29d7ad2a\r
-d0ad26d1ad27d2a55ac808c867cca773\r
-cead25c1ad23c5a5b0c6ad2406d20cd2\r
-a5ffd4a702d5a703d6ad07cba3f0cdad\r
-2bcead2c415e42a24c43a2834406cb0c\r
-cba521cfad1bd9ad09daad1cc4a52dc5\r
-a52dcaad1a0dd117d40cd4ad03d7ad04\r
-d8ad05daa35ed1ad00d2ad01d3ad02cc\r
-0bcc6dcda342ceabf9cfabffc4abfcc5\r
-abfdc6abfe0010cc1cd20ed2a9f8d445\r
-d5a3ced6ad0ed9a37cccad0acead0bcf\r
-ad0cd1ad0dc70cc7a389c8ad08c9ab11\r
-caad09c1a3bfc4a3adc5ad06c6ad0700\r
-10cf1dd50fd5abf2d6ad18d7abf9d9ad\r
-19daa519cfad15d0ad16d2ad17d3ab2c\r
-c90cc9ad12ccad13cdad14cea3ecc4ab\r
-f0c6ad0fc7ad10c8ad11342234423548\r
-374e3801382a3910b0ab2c10b6abfb11\r
-31b9abf81133b2abf91133b6abfa2aa5\r
-5f305031a26b3202302e33383810b0a5\r
-2d01b0a519b2abed10b0750533233334\r
-354a3601b1ab59b2a5eb03b0a3ecb4a5\r
-ebb5a70fb9a72502b3abeeb4abf3b7ab\r
-f43034314a3201b1a55fb9abf203b2ab\r
-edb3a55fb5a9f8b9abee06b50bb59bb7\r
-abf0b8abf1b9a55fb1abedb3abefb4ab\r
-8002342e353e3710b2ab1902b2a3ecb3\r
-abf5b5abf603b0ab19b1ab19b4abf7b5\r
-a52d046436673c68427246761173f44b\r
-116ceda5771168e2ad66116fed630161\r
-3c6d01e99dee012aa3424110cda34210\r
-e200134c625131513c53405450556a59\r
-01c5abfbd4ab8110c1ad4e02c1abf6c4\r
-abfad9ad5804c791c8a929caad6ccead\r
-5dd2ad6d10cbad674c3c4d464e624f66\r
-5001cbad49d3ad4c01c2ad35d9ad3904\r
-c1ad3acdab06cea770d2ad3fd5ad6a10\r
-c7ad6b10cdad45452e4542474a494e4a\r
-644b02c8a504cdad31d7ad3301c79bc8\r
-ad1f10c2ad6703c4ad68cead69d1ad2e\r
-d2a57010cfad2f2a9b4132423c434644\r
-10daad1c01c5abfdc6abfe01c8ad08d5\r
-ab0601c3a90fceabe600217588e62bf2\r
-21f29bf3a349f6a353f9a35cfa012a2e\r
-41127261e2a360022aa35e498a5210d5\r
-a361e651eb67ed75ee7f7a2d7a2ce125\r
-e22de54b10ea012a2e41127261e2a360\r
-032aa35e312e49345310d5a3611137b2\r
-a36101d1a35fd2a3607538763c775279\r
-01e2a35df2a35c10f9a35203eca354ee\r
-a355f4a356f5a35703e1a358e2a359ef\r
-a35af8a35b6b966f696f44704e726873\r
-a2507402e1a34fe7a350eaa35102ea89\r
-ed8bfa8d05f206f295f397fa99e38fe4\r
-91e59309ef0fefa344f1a345f3a346f9\r
-a347faa348e29be332e8a341eda342ee\r
-a343022a9d4e2c5012616ceda1126261\r
-f49f04e1a34ae5a34be7a34cefa34df4\r
-a34e6b3c6c3e6d586e03e381eb83ee85\r
-f98710eb6905ee06ee71f36df473e16b\r
-e26de96f03ed77ee79ef7bf07d652565\r
-30673668506a10e76501e24df94f05ed\r
-06ed59ef5bf15de353e455e75702e15f\r
-ec61ef636148625263646405f006f045\r
-f947fa49e13fe541ea4302e927eb29f5\r
-2b04e92ff131f233f435f93702e439e5\r
-3be83d\r
+10ee012a2e41127261e2add8022aabf5\r
+412a4310ceadd910c6add810e1add401\r
+e8a54af2add501e8add6ecadd76d326d\r
+3e6e426f707202e9add1f4add2f7add3\r
+10e2abec01f226f8adcf012a2e441265\r
+76e1adce012aadcd4e10d0adce10ebad\r
+d06232643667406c10e9abeb10f5abe3\r
+01e9abe4edabe510e1abe970c39570a4\r
+f971a6d772a6e47300287884ec39f229\r
+f509f5ab78f6ab7ef7ab7ff22cf3ab71\r
+f4ab7522032aab2b4da4bf522a5410d2\r
+ab2f01cfab2ed5ab2cecab53edab58ee\r
+ab5fefab65f16de429e438e5ab3be7ab\r
+40e9ab49ebab4f032aab3544324b3a53\r
+12696ee4ab38126576e1ab3612686fea\r
+ab377834793e7a48e1ab1fe3ab2a01ee\r
+ab85f7ab8601ecab87f2a50c10ecab88\r
+6cad724f725873747484758e7705e809\r
+e8ab7ff0ab83f6ab84e2ab80e3ab81e7\r
+ab8204e2ab6ee3ab2aeeab6ff2ab70f8\r
+a5f202e4ab72e7ab73f9ab7401ebab76\r
+f1ab7704e1ab79e5ab7aebab7bf2ab7c\r
+f3ab7d6c4a6d666e8c6fa2437003e4ab\r
+6becab6cf3ab6df9a77504e4ab54e9ab\r
+55ecab56efab4ff9ab5705f009f0ab5c\r
+f1ab5df3ab5ee1ab59eaab5aeeab5b04\r
+e3ab60ebab61f0ab62f8ab63f9ab6404\r
+e7ab66ebab67f1ab68f5ab69f9ab6a67\r
+3e67426858696e6a846b02e3ab50f2ab\r
+51f3ab5203e1ab41f3ab42f7ab43faab\r
+4403e9ab45ebab46eeab47f5ab4803e4\r
+ab4ae7ab4becab4cedab4d10f2ab4e61\r
+4a6276638664a26b6503e6ab3ce8ab3d\r
+e9ab3ef3ab3f06f30cf3ab23f4ab24f6\r
+ab25faab26e6ab20e8ab21f1ab2202e1\r
+ab27e5ab28f0ab2906ee0ceeab32efab\r
+33f2a700f3ab34e32cebab30ecab3122\r
+055211522e53325410d2ab2f10cfab2e\r
+10d5ab2c2aab2b312a4d10c5ab2d1137\r
+b2ab2c01e3ab39e8ab3a00166e63752b\r
+ec09eca9eaf3a9dbf4a9f7754c7750e1\r
+012a2e41127261e2a9d3012aa9d25010\r
+cba9d310f5a9f910e1a9fa7217722e73\r
+3e7410f0a9f802e1a9f3e4a9f4e7a9f5\r
+10f3a9f66e346f4a7001e1a9f1efa9f2\r
+03e2a7cde7a9edeea9eef4a9ef10eea9\r
+f066306b176b2e6c386d10f3a9ec01e1\r
+a9e8efa9e901e1a9ebf4a92f66346838\r
+6901eca9e6f0a9e710eca9e301eca9e4\r
+eea9e5614e627e638864926504e4a9e0\r
+efa9e1f2a571f3a571f8a9e204e7a9d4\r
+ec32eda9d7f0a9d8f5a9d9012aa9d550\r
+12686cf0a9d601e9a9daf5a9db01e4a9\r
+dceda9dd01e3a9def4a9df017526f5a9\r
+fb02e3a9fce7a9fdfaa9fb00146f4579\r
+17ef09efa94af5ab18f7ab1b792cedab\r
+0beeab1010f5ab1e6f3c724c74507554\r
+7701ebab1cefab1d02e2ab13e6ab14ef\r
+ab1510efab1610edab1702e5ab19e7ab\r
+1aeda94a6934693c6a566b5a6d5e6e01\r
+e1ab11e7ab1201e1ab06e622012aab07\r
+4e10ccab0810f3ab0910f4ab0a03e6ab\r
+0cefab0df4ab0ef5ab0f61366346654a\r
+675a6810e7ab0502e9a9feeaa95fefa9\r
+ff10e6ab0002eaab01ecab02f3ab0310\r
+eeab046da2576ea6316f0b741ded09ed\r
+a5a2f2a9caf3a9cd742a7a34e3a9c201\r
+e1a9cfeba9d010eda9d17017702e7232\r
+7310e1a9ce10eda9c902efa9cbf5a9cc\r
+f9a9ca673a6b3e6e02e7a9c6eea9c7f3\r
+a9c810e3a9c301f2a9c4f6a9c5002274\r
+9fe926ef0fefa94af2a955f3a485f4a9\r
+59f9a3cee9a90ceba906eca93fee012a\r
+bab94d126f6ee7a540783d7834793e7a\r
+64e7a92fe8a93501e3a968eda96905f7\r
+09f7a96df8a96efaa96feba96aeda96b\r
+f6a96c05f009f0a973f7a974faa975eb\r
+a970eda971eea9727444755a76707703\r
+eba965f2a537f6a966f7a96703e3a95a\r
+e6a95be9a95cf2a95d03e1a95ef0a95f\r
+f2a960f3a96102e1a962eea963f9a964\r
+69786e446e426f5e707a71907202e4a9\r
+56eaa957efa95804e1a946e6a947e9a9\r
+48ebb60df7a94904e1a94be5a94ce8a9\r
+4df3a94ef8a94f03f0a950f3a951f4a9\r
+52f8a95310eca954693e6b4e6c646d02\r
+efa943f5a944f8a94502e6a938eea939\r
+f7a93a03e9a93beca93cf0a93df7a93e\r
+02e5a940f0a941f3a9426549653e666a\r
+67866802e9a936eca937f2a3ff06ee0c\r
+eea926f2a927f4a928f5a929e4a923e5\r
+a924eba92504e1a92ae5a92beea92cef\r
+a92df1a92e04e8a930eca931efa932f0\r
+a933f9a934615e62a25063a25d6406e8\r
+0ce8a91feaa920f2a921f8a922e1a91c\r
+e5a91de6a91e0bee1df712f7a90ef926\r
+faa91122012aa90f4310c3a910eeb431\r
+efa90cf3a90de709e7a909e9a90aeba9\r
+0be3a906e4a907e6a90804e8a912efa9\r
+13f1a914f5a915f7a91604e9a917f0a9\r
+18f1a919f2a91af5a91b0021745fe41d\r
+ee0feea9a0efa9a6f2a9adf6a9baf9a9\r
+bee4a985e5a988e7a98deca54c791579\r
+307a3ae1a976e2a97e01eda9bfeea9c0\r
+10e9a9c174387542775e7801f1a9bcf2\r
+a9bd01eda9b3f2a9b404e9a9b5f0a9b6\r
+f3a9b7f6a9b8f8a9b910e2a9bb6a5d6f\r
+326f4870647168726c7303eba9afeea9\r
+b0efa9b1f3a9b204e4a9a7e5a9a8eea9\r
+a9f0a9aaf5a9ab10e9a98810efa9ac10\r
+e2a9ae6a4a6b4e6d586e04e6a9a1e8a9\r
+a2eba9a3eda9a4f0a9a510efa99b01e7\r
+a99cefa99d01e7a99efaa99f6637665a\r
+675e686e6906ee0ceea997f5a998f9a9\r
+99faa99ae6a994e9a995eaa99610f2a9\r
+8c02e1a98ee2a98feca99002e2a991e5\r
+a992f7a993613e636a64906502e2a989\r
+f7a98af8a98b06ee0ceea97af0a97bf1\r
+a97cf3a97de3a977e6a978eba97905e8\r
+09e8a982efa983f5a984e1a97fe5a980\r
+e6a98101e3a986f3a98766c75369c496\r
+69a4166aa4c46ba6116c001b744ae717\r
+ef0cefa7f4f4a7fcf5a7fef6a902e7a7\r
+dee9a7e0eea7f1771577307a34e1a7c9\r
+e2a7d010eca90301e8a904faa905742e\r
+75327610f3a90210e7a7fd03e1a7ffef\r
+a900f9a3d5faa9016a4a6d316d326e42\r
+6f4c7210e3a7fb02eea7eeefa7eff0a7\r
+f001f3a7f2f5a7f305f209f2a7f8f3a7\r
+f9faa7faeaa7f5eba7f6eca7f76a346b\r
+386c01e5a7eceea7ed10f0a7e901e9a7\r
+eaf4a7eb6448646c6570679c6906e70c\r
+e7a7e5e8a7e6eaa7e7f3a7e8e1a7e1e4\r
+a7e2e6012aa7e34c12696de2a7e410e2\r
+a7d606f00cf0a7daf1a7dbf5a7dcfaa7\r
+dde4a7d7e5a7d8eda7d910e7a7df6134\r
+625a6301eda7d4f0a7d505e809e8a7cd\r
+eaa7cef3a7cfe2a7cae4a7cbe7a7cc02\r
+e5a7d1f5a7d2f7a7d300197739eb17f3\r
+0cf3a70ef4a726f5a71af7a727eba568\r
+eea721efa723e409e4a710e7a715e9a7\r
+18772a7a34e1a70701eda728f3a72901\r
+e8a72ae9a72b6a366d176d326e366f3a\r
+7210e9a72510efa72010e8a72210f5a7\r
+246a2e6b326c10efa71f10eaa71904e5\r
+a71aeba71bf4a71cf7a71df8a71e641a\r
+643466446701e2a716e5a71702e4a711\r
+e9a712f5a71310e5a714613a62446302\r
+e1a70de5a70ee8a70f01eea708f2a709\r
+02e1a70ae2a70bf9a70c0b721ae909e9\r
+a734f6a73af7a73b722a752ee1a72c10\r
+e1a73810f4a73967176734693e6d01e3\r
+a736eca73701eba72fefa73310e2a735\r
+612e623e6510eea73202e2a72deda72e\r
+f2a72f01efa730f5a731002875c0edeb\r
+74f23ff628f6a792f7a7b4f9022a3241\r
+4c4c126174eea7c2022aa7c0432a5410\r
+d2a7c210cea7c1127261e2a7c1f2a785\r
+f3a79ef5022aa46441a46a5912657ae9\r
+a780eb38eca774eda779eea784efa789\r
+012a2e41127261e2a76f042aa76d4132\r
+4336493a4d10cea77110c6a76e10cea7\r
+6f10d2a7707a1b7a38e1a5b1e7a758e9\r
+a764eaa76803e8a7c5eaa7c6f2a7c7f4\r
+a7c8753c766e777e788e7901e5a7c3f8\r
+a7c407ed0ceda7adeea7aef0a7aff3a7\r
+b0e2a7a9e4a7aae5a7abeaa7ac02e7a7\r
+b1f2a7b2f8a7b302eaa7b5efa7b6f1a7\r
+b707ed0ceda7bcf0a7bdf7a7befaa7bf\r
+e1a7b8e3a7b9e5a7baeca7bb6bc0d570\r
+63704a7170728673a2457403e2a7a5ed\r
+a7a6efa7a7f2a7a805f209f2a791f6a7\r
+92f8a793e5a78ee6a78fefa79003e2a7\r
+94e6a795f3a796f9a79705ec09eca79b\r
+f3a79cf5a79de3a798e9a799eaa79a05\r
+e809e8a7a2eaa7a3f2a7a4e2a79fe4a7\r
+a0e6a7a16b506c5a6d706ea2576f04e9\r
+a78aeba787eca78bf3a78cfaa78d01e3\r
+a772eaa77303eea775f1a776f4a777f8\r
+a77806f226f232f3a781f5a782f7a783\r
+022a3241405912657ae9a780012aa77d\r
+4c10c2a77e127261e2a77fe2a77ae8a7\r
+7befa77c04e3a785e6a786e7a758eea7\r
+87f0a788665266486758686869a06a03\r
+e4a769e7a76af3a76bf9a76c02efa755\r
+f2a756f9a75702e5a759e6a75af0a75b\r
+08f10ff1a75ff3a760f4a761f7a762fa\r
+a763e1a75ce2a75debac86eea75e02ea\r
+a765f5a766f7a76761446276639c64a2\r
+486502e1a752eea753faa75407e90ce9\r
+a740eaa741eda742efa743e1a73ce2a7\r
+3de3a73ee4a73f05f109f1a747f8a748\r
+f9a749e4a744eda745f0a74603e7a74a\r
+eba74beca74cf4a74d03e5a74ee8a74f\r
+eca750f4a75166a2b567a46a68001375\r
+39f20ff2a700f4a703f5a704f9a342fa\r
+a7067536e13ae5a5eae9a5ecefa5fc10\r
+e9a70522032aa5e0372e43345310c4a5\r
+e11133b6a5e110cda5e26c386c3c6d46\r
+6e506f6c7301e2a701eea70201e1a5f3\r
+f5a5f401e4a5f5f4a5f604e4a5f7e5a5\r
+f8eaa5f9eea5faefa5fb02e3a5fdeaa5\r
+fef4a5ff615862746478687c6905e809\r
+e8a5f0eca5f1eda5f2e1a5ede6a5eee7\r
+a5ef04e7a5e3eba5e4eda5e5f7a5e6fa\r
+a5e710e2a5e810f9a5e910f9a5eb0011\r
+7553e90fe9a57beaa57fefa582f2a588\r
+f9a59775427694e1a571e6012aa57741\r
+12646ceda57809e80fe8a591f1a592f2\r
+a593f6a594f9a595e2a58de332e4a58e\r
+e5a58fe6a590012aa5774112646ceda5\r
+7810f2a5966d2f6d4e6f527062716672\r
+04e3a589e5a588f0a58af2a58bf3a58c\r
+10f0a58102e4a583eea584f2a58510e5\r
+a58610f3a5876132665669606c10f2a5\r
+8005e908e9a575eea576f467e1a572e2\r
+a573e7a57401e9a579eda57a02e1a57c\r
+eca57df4a57e001a6e9f791dec0ceca5\r
+bdeea5c1f5a5d1f6a5d9792ce1a598e4\r
+a5aa01e1a5a3e9a5df733a733e754276\r
+747702e3a5dce9a5ddf4a5de10f7a5d0\r
+07f20cf2a5d5f7a5d6f8a5d7faa5d8e2\r
+a5d2e3a5d3e4a5d4e7a5c102e6a5daf2\r
+a5b4f3a5db6e5a6f6a7204e2a5a6e332\r
+e5a55bf4a5cef7a5cf012aa5cc4c1269\r
+6ee2a5cd02e4a5c2e7a5c3efa5c407ee\r
+0ceea5c4f2a5c9f3a5caf4a5cbe4a5c5\r
+e6a5c6e9a5c7eda5c8673c6a236a386b\r
+486c526d01eda5bff6a5c002eba5b8ee\r
+a5b9f5a5ba01eea5bbf0a5bc10eba5be\r
+6734683e6901eca5b6eda5b701eea5b4\r
+efa56710f3a5b56428642e653e6610eb\r
+a5b302e5a5abeea5acf2a5ad05ef09ef\r
+a5b1f2a52dfaa5b2e2a5aeeaa5afeca5\r
+b0612e626c6310f2a5a909ed0feda59e\r
+eea59ff7a5a0f9a5a1faa5a2e1a599e6\r
+a59ae7a59be8a59ceaa59d05ef09efa5\r
+a6f9a5a7faa5a8e1a5a3e6a5a4eda5a5\r
+63c2f663a2a364a4fc6500127733ee19\r
+ee38efa564f3a566f4a559f5a366012a\r
+a56053126861f7a561773478387a3ce5\r
+a554eca55b10efa56e10f4a56f10e1a5\r
+706d466d486e7a728473887403f2a56a\r
+f4a56bf5a56cf8a56d02e1a55ce9a55d\r
+eb012a2e4e126b6fefa55f012aa55e47\r
+10cea55f01eea562f1a56310e9a56502\r
+e7a567eba568f5a569623e664267466b\r
+02e1a558eba559f9a55a10f5a55310e9\r
+a55501eca556f9a557001b725ce821f3\r
+16f3a519f52cf6a51ff9a520012aa51d\r
+47126c61e7a51ee8a3ebefa50ff2a512\r
+771277307a34e1a3e1e5a3e710e4a512\r
+10e5a519722e73547410e4a51c05ec09\r
+eca516eda517f3a518e8a513eaa514eb\r
+a51501e2a51af7a51b69526c306c326d\r
+3c6f6c7010f3a51101e1a50be4a50c02\r
+e5a50de7a50eee022aa26342a2ae4811\r
+616e01e2a3fdf4a3f810f0a51069406a\r
+446b03e2a507eca508efa509f9a50a10\r
+e3a50302e1a504eda505f6a506658f65\r
+a28066a28167a2826805ef09efa500f0\r
+a501f2a502e92ceba3feeda3ff022a3c\r
+42a2594811616e01e2a3fdf4a3f80b4d\r
+2d5417542e55385610c4a3fb01c8a3f7\r
+d7a3f801cba3f9d3a3fa4db487502a53\r
+10d2a3f602c6a3f3c8a3f4daa3f5470e\r
+473048b46b4910c4a3f110c6a3ef2aa3\r
+ec412a4210cea3ee10d5a3ed126f70ef\r
+a3fc10e2a3e810e1a3e910e7a3ea6134\r
+623e6301e8a3e5f0a3e601e4a3e2eea3\r
+e310eaa3e40017726f791ce508e5a52d\r
+f6a54dfa45792a7a34e1a52101efa550\r
+f5a55110e7a552751d752e764a7710f7\r
+a54f04e1a548e3a549e4a54ae7a54bf4\r
+a54c10e1a54e724073747403eda544f0\r
+a545f3a546f9a54702e82ce9a541f3a5\r
+42012a2e4d126f6ee7a540012aa53f43\r
+10cea54010e2a543682d6d176daaa86e\r
+3c6f03e2a53ce9a534f0a53df7a53e10\r
+eaa523682e69326a10e5a53a10e4a537\r
+01e1a538f1a53964286456655a6706ec\r
+0ceca533efa534f2a535faa536e1a530\r
+e8a531e9a53210eea52c01e4a52eeea5\r
+2f612e625a6310e3a52b06e80ce8a525\r
+eba526f2a527f6a528e4a522e6a523e7\r
+a52401e4a529f1a52a2aa4f761be9e62\r
+002373a5e51ded0feda3a8eea3adefa3\r
+b1f2a3baf3a3bfe5a37ce7a389e8a38d\r
+e9a39377417732783c794c7a72e1a362\r
+01e4a3d2f2a3d302e8a3d4eba3d5f2a3\r
+c705f309f3a3d9f6a3daf8a3dbe5a3d6\r
+eea3d7f2a3d804e1a3dce5a3dde6a3de\r
+e8a3dff7a3e07332744875587610e2a3\r
+d103eaa3c0f1a3c1f3a3c2f4a3c302ef\r
+a3c4f4a3c5f6a3c609ed0feda3ccefa3\r
+cdf2a3cef3a3cff5a3d0e1a3c7e3a3c8\r
+e4a3c9e7a3caeba3cb6a7d6e3b6e486f\r
+587068716c7203e1a3bbe8a3bcf8a3bd\r
+faa3be02e7a3aeeda3aff0a3b002eaa3\r
+b2eda3b3eea3b410f9a3b503e3a3b6e9\r
+a3b7f0a3b8f6a3b96a466b786ca4ab6d\r
+03e8a3a9eba3aaf1a3abf5a3ac07ef0c\r
+efa39ef2a39ff4a3a0faa3a1e8a39ae9\r
+a39beaa39ceea39d04e3a3a2eda3a3f1\r
+a3a4f5a3a5f6a3a6656a6562669467a2\r
+4468a24b6906ed0ceda396eea397efa3\r
+98f1a399e2a394e7a395eba37507f40c\r
+f4a381f7a382f8a383faa384e6a37de8\r
+a37eeaa37feda38003e4a385f1a386f4\r
+a387f9a38802e3a38aeea38bf8a38c05\r
+ec09eca391efa38df9a392e2a38ee7a3\r
+8fe9a3906132626463906410e4a37b07\r
+f20cf2a367f3a368f6a369f8a36aeca3\r
+63eea364f0a365f1a36606e40ce4a36e\r
+eaa36ff0a370f2a371e1a36be2a36ce3\r
+a36d09ed0feda376eea377efa378f1a3\r
+79f5a37ae3a363e6a372e8a373e9a374\r
+eca37500184dc26554c0ca5736573658\r
+4e59645a12616ee2adcc01612c631168\r
+efa9a51172e1adcb01702a731175f869\r
+1165efa9e101652c691169e9a718117a\r
+e9a780543455a28756126169e9adca05\r
+6746674a68506901622a7210e8adc910\r
+f4012aa3b14210d445116ce7adc61061\r
+01e158e9042aaba643324b364c3a5410\r
+c8aba610cea7d510c8adc710c1adc801\r
+2aa54d4d10d6a54d6130657c66116ee7\r
+adc5056d116d2e6e327610f4a3a710ec\r
+ab8910e7abde67346b386c01e5ab97f5\r
+a75d10e2adc310f2adc4116cf5ab9b12\r
+6761f2abe950c0c350a27252a2a85306\r
+694369426f6a759079016c2a7210e3a5\r
+0c10efadc201643e6e01e4ab38e8012a\r
+ab494c10cbab4910e4adbf02672e7238\r
+7910efa50e01e4ab66efadc010e1ab6e\r
+116ee4adc1613e675e6801612a7210e4\r
+adbe10f7a561026d2e72327510f2ab26\r
+10f2ab5c10e2adbd116ef7a34b046138\r
+654a68506c76721174e9adba016c2a75\r
+10e3a51c10eda11172edadb802612e6c\r
+326e10f8a9e510e7adb901e9a9d5f0a9\r
+d61172e4a5f5026a306f3675116ef2a9\r
+a9116ee7adbb1168e7adbc4d7c4ea2a4\r
+4f0367426c48724e7301672a6d10e1ad\r
+b710e5a9ce1161edab411163ebab2401\r
+6b2a7910e1a9ca10e8a9d007722e725a\r
+7460756679116df2032aa3ce492e4d32\r
+5410c8adb210cea76110cda3ce116fef\r
+a9581165e9adb0116cf4adb161426574\r
+6c9a6f01642a6e10e7a54010e9adaf03\r
+68326b366e3a7210e3adab10eaada810\r
+e1ada901e4a96fe9adaa0264346e3872\r
+01e3adadefadae10e6a53b10e4adac11\r
+79eda93f046138624c65506b56731168\r
+f5adb6016e2a7210e2adb410e4adb311\r
+61f49f1177e1adb5116fefa55f47c415\r
+4ac32f4aa6c04ba6d94c03614665a69c\r
+69a69e7901632a6410e9ada710e9ada6\r
+026ea6796fa67a7410ee001a4bc13954\r
+5b571457ac6a58ac6e59305a01c1abf1\r
+d7ab5f10d4ad65544055825603c1ad60\r
+c5ad62cead61d5a3930bce14d609d6ab\r
+dad7abc7daab7fceada4cfabbdd2abc5\r
+cbc5cecbabb2ccad5ccdabb104c1ada5\r
+c7ad5ed3a560d9ad5fdaabf54e824e8a\r
+50a24a52a26d530cce17d40cd4ad56d5\r
+a79bd6ad57d9ada3cead54cfab65d2ad\r
+55ca09caad52cbab4fcdad53c3ad51c5\r
+ab7ec9ab5306c70cc7abedc9ad44cca5\r
+4ccfa97ec1ad41c3ad42c5ad430acc14\r
+d409d4ad4dd7a9d9d9a5c1cca9eacdad\r
+4ad2ad4bc1ad46c5ad47c6ad48c7abc1\r
+c8a57d03c5ad50cfa94ad5a79bd7ab1b\r
+4b9e4ca2434d0010cd1dd40fd4a959d5\r
+a92bd8abefd9a90fdaad40cda73ecfad\r
+a1d1ad3ed2ada2c60cc6ad3dc7a92fcb\r
+ada0cca3a8c1ad9fc3ad3bc4ad3cc5ab\r
+2d01c5ad30cdad9e04c9ad36d3ad37d4\r
+a7fcd5ad38d6a90243c0c24664465647\r
+6648a24d4905d209d2ad9dd3a70ed4a7\r
+26c3ad2dc4a710c5ad2102c9a57bcfa5\r
+82d2a5880cce17d30cd3ad28d4ad29d5\r
+abf4d7ad2acead25d0ad26d1ad27c608\r
+c6ad24c867cca774c1ad23c2abf7c5ad\r
+9c04cdad2bcead2cd2a700d4a703d5a7\r
+04435244a2424505d309d3a566d4ad96\r
+daad22c1ad1dc3ad1ec5a5590fcf1ad6\r
+0cd6ad18d7abf9d9ad9adaa519cfad15\r
+d0ad16d2ad17d5abf2c9c686c9ad12cc\r
+ad13cdad14cead9905cb09cba521cfad\r
+1bdaad9bc5a52dc7ad4fcaad1a345e34\r
+ae814178420bce14d209d2a9f7d5a73e\r
+d6ad0ecead0bcfad0cd1ad0dc909c9ab\r
+10caad09ccad0ac1a3bfc5ad06c6ad07\r
+0cd217d50cd5abeed7ad04d8ad05daa3\r
+5ed2ad01d3ad02d4ad03cd09cdad98cf\r
+abffd1ad00c4abfcc6ad97cc6d2aa560\r
+312c321133b0ad961137b2a79b10e1a9\r
+a710ef012aa7f44c10c1a7f41170e3a7\r
+da026d2e6e327310f5a7e810e2a7e401\r
+e1a7cae2a5cd01613a701161ee012aa7\r
+2c4a10d0a72c016d2a7610e1ad9210ef\r
+ad91056e1e6e306f36741168e9ad9511\r
+64e1a7841172e5012aa7894b01d0ad32\r
+d2a78961306844691174f3ad94016c2a\r
+6e10e1ad9310e9a55a02612e6d326f10\r
+eaab3710f2a9f310f2012aa7794b10c8\r
+a779473448a25c49127461eca56b0465\r
+466c5a6f60727a75016a2a7210f5a9d2\r
+10f2a5d1116ff2012aa5b14710c5a5b1\r
+1161e7a51e016e2a7410e8a5cb01e7ad\r
+85eda5670161506510eb032aa55b432e\r
+47325410d2a38c10d9ad1910d2a55b10\r
+eead86056c186c306d3675116ee7ad90\r
+1175f7a5f4106e01e7a5f9f0a9676130\r
+6590691172e1ad8f106e05ef24efad89\r
+f34cf4032aa3f8482e4d325410d7a3f8\r
+10cba3f010cfa3f2012aa3ec4310cea3\r
+ece2a3fde7ad87e9ad881162f2054917\r
+493a533e5502c1ad8dcbad8bd3ad8e10\r
+cca5ea10c5ad8c2aa5ea432a4710c2ad\r
+8b10c1ad8a43c107437044a2c0450267\r
+406c46741168e9012a754501d2ad20d4\r
+751179f0a55701622a7910edad8410e1\r
+ad830461a26968a2786fa28770a28979\r
+1172ec0a4d335414542e55385810cbad\r
+7c01caaba1d2ad7b10c1abea4d2e523e\r
+5310cbad7a02c4ad78cba906cea53f02\r
+cfad79d3ab2bd5ab182aab184138423c\r
+474c4b01c7a7c0daad3410ccad7502c1\r
+ad76c7a389d9a37c01c5a9cdd2ad7702\r
+6b2e6e327210e9ad7310eda3e610f3a5\r
+1202612e65327210f3ad7410eda50510\r
+f2a5021170f4a5101172f4a5cc036534\r
+69866f8c751170ecad821176e1064917\r
+49324d364e3a5010cba3c610cea5ec10\r
+d5ad7f10d0a9882aa5ec422a4610caad\r
+7e10d4ad7d1161ebad801167f2ad812a\r
+a25441aa3142056f1f6f3e7244750167\r
+2a6810e4ad7210e9ad711170efa3fc10\r
+6101e8a9e8e9ad706130655c68116bf3\r
+ad6f036c326d36733a7410ebad6e10e9\r
+ad6d10f5a36a10f3a3c1116ee7012aa3\r
+ad4210c4a3ad00214ac1c052c0cc5638\r
+563c5758586259665a01d2abf0d7ab5f\r
+04c1ad60c4ad61c5ad62cead61d5a393\r
+01c6ad63d3ab5810cbad6403c4abfbc5\r
+abfbd4ad65d5ab2b5246536c54a25755\r
+03c1abeac7ad5ed9ad5fdaabf505d309\r
+d3ab2bd5ab18d7ab1bc5ad50c8ab5fcf\r
+a94a0ecd1ad40cd4ad56d5ab18d6ad57\r
+d9ad58cdad53cead54cfab65d2ad55c5\r
+0cc5ab7ec9ab53caad52cbab4fc1abf6\r
+c3ad51c4abfa0ecd1ad20cd2abc5d6ab\r
+dad7a3f8daab7fcdabb1cead5dcfabbd\r
+d0ad5cc80cc8aba6caaba1cbabb2ccad\r
+5cc4ad59c6ad5ac7ad5b4e644e404fa8\r
+9650785102c1ad4ecfad4fd5ad2109cc\r
+0fcca54ccfa97ed0a988d1ad00d4abf6\r
+c1ad41c3ad42c5ad43c8a393c9ad440d\r
+cd17d40cd4ad4dd7a9d9d9a5c1daad46\r
+cdad4ad2ad4bd3ad4cc70cc7abc1c8a5\r
+7dcbad49cca9eac1ad46c5ad47c6ad48\r
+4aa2484ba24c4ca2644d0012ce20d50f\r
+d5a92bd6a54dd8abefd9a90fdaad40ce\r
+a53fcfa3f2d1ad3ed2ad3fd4a959c60f\r
+c6ad3dc7a92fcba906cca3a8cda3cec1\r
+ad3ac3ad3bc4ad3cc5ab2d01cfad2fd0\r
+a72c07d00cd0ad32d2a789d7ad33daad\r
+34c5ad30c7a7c0c8a779cdad3108d30f\r
+d3ad37d4a7fcd5ad38d6a902d9ad39c1\r
+a7f4c2ad35c9ad36cbab4941c1604598\r
+456a46a24147a24e48a2754907d10cd1\r
+ad2ed2a571d3a70ed4a726c3ad2dc4a7\r
+10cca5eacea5ec09d20ed2ad20d3a566\r
+d475d5ad21daad22c1ad1dc3ad1ec5a5\r
+59c79bc8ad1f04c9a57bcfa582d1ad00\r
+d2a588d8a5880bd014d309d3ad28d4ad\r
+29d7ad2ad0ad26d1ad27d2a55bc808c8\r
+67cca774cead25c1ad23c5a5b1c6ad24\r
+06d20cd2a700d4a703d5a704d6ad07cb\r
+a3f0cdad2bcead2c415e42a24c43a283\r
+4406cb0ccba521cfad1bd9ad09daad1c\r
+c4a52dc5a52dcaad1a0dd117d40cd4ad\r
+03d7ad04d8ad05daa35ed1ad00d2ad01\r
+d3ad02cc0bcc6dcda342ceabf9cfabff\r
+c4abfcc5abfdc6abfe0010cc1cd20ed2\r
+a9f7d445d5a3ced6ad0ed9a37cccad0a\r
+cead0bcfad0cd1ad0dc70cc7a389c8ad\r
+08c9ab10caad09c1a3bfc4a3adc5ad06\r
+c6ad070010cf1dd50fd5abf2d6ad18d7\r
+abf9d9ad19daa519cfad15d0ad16d2ad\r
+17d3ab2bc90cc9ad12ccad13cdad14ce\r
+a3ecc4abf0c6ad0fc7ad10c8ad113422\r
+34423548374e3801382a3910b0ab2b10\r
+b6abfb1131b9abf81133b2abf91133b6\r
+abfa2aa560305031a26b3202302e3338\r
+3810b0a52d01b0a519b2abed10b07505\r
+33233334354a3601b1ab58b2a5ec03b0\r
+a3ecb4a5ecb5a710b9a72602b3abeeb4\r
+abf3b7abf43034314a3201b1a560b9ab\r
+f203b2abedb3a560b5a9f7b9abee06b5\r
+0bb59bb7abf0b8abf1b9a560b1abedb3\r
+abefb4ab7f02342e353e3710b2ab1802\r
+b2a3ecb3abf5b5abf603b0ab18b1ab18\r
+b4abf7b5a52d046436673c6842724676\r
+1173f44b116ceda5781168e2abe4116f\r
+ed6301613c6d01e99dee012aa3424110\r
+cda34210e200134c625131513c534054\r
+50556a5901c5abfbd4ab8010c1ad4e02\r
+c1abf6c4abfad9ad5804c791c8a92aca\r
+ad6bcead5dd2ad6c10cbad664c3c4d46\r
+4e624f665001cbad49d3ad4c01c2ad35\r
+d9ad3904c1ad3acdab05cea771d2ad3f\r
+d5ad6910c7ad6a10cdad45452e454247\r
+4a494e4a644b02c8a504cdad31d7ad33\r
+01c79bc8ad1f10c2ad6603c4ad67cead\r
+68d1ad2ed2a57110cfad2f2a9b413242\r
+3c43464410daad1c01c5abfdc6abfe01\r
+c8ad08d5ab0501c3a910ceabe6002175\r
+88e62bf221f29bf3a349f6a353f9a35c\r
+fa012a2e41127261e2a360022aa35e49\r
+8a5210d5a361e651eb67ed75ee7f7a2d\r
+7a2ce125e22de54b10ea012a2e411272\r
+61e2a360032aa35e312e49345310d5a3\r
+611137b2a36101d1a35fd2a360753876\r
+3c77527901e2a35df2a35c10f9a35203\r
+eca354eea355f4a356f5a35703e1a358\r
+e2a359efa35af8a35b6b966f696f4470\r
+4e726873a2507402e1a34fe7a350eaa3\r
+5102ea89ed8bfa8d05f206f295f397fa\r
+99e38fe491e59309ef0fefa344f1a345\r
+f3a346f9a347faa348e29be332e8a341\r
+eda342eea343022a9d4e2c5012616ced\r
+a1126261f49f04e1a34ae5a34be7a34c\r
+efa34df4a34e6b3c6c3e6d586e03e381\r
+eb83ee85f98710eb6905ee06ee71f36d\r
+f473e16be26de96f03ed77ee79ef7bf0\r
+7d65256530673668506a10e76501e24d\r
+f94f05ed06ed59ef5bf15de353e455e7\r
+5702e15fec61ef636148625263646405\r
+f006f045f947fa49e13fe541ea4302e9\r
+27eb29f52b04e92ff131f233f435f937\r
+02e439e53be83d\r
         }\r
     }\r
     match{\r
@@ -2630,171 +2627,176 @@ f947fa49e13fe541ea4302e927eb29f5
 00000000010000000001000000\r
         }\r
         trie:bin{\r
-00196ec42074c1b077c0ca77a28078a2\r
-8a79a29a7a036c346daa90e834f51165\r
-ee5d12ed6df335117ae820022a854834\r
-4c166174ee48616ef34911616e02e99e\r
-f3a245f41248616e01f347f42007b314\r
-b32ab426b536b605b3c8a5b329b429b6\r
-2910b5292a2bb026b122b205b3c891b3\r
-29b429b62905b3c887b329b429b62912\r
-48616e01f349f4491348616ef43f0175\r
-2aef1166f25d12f57ae835016d2ae811\r
-65ee5d02eda241f622f7116de7350369\r
-327538e93eef1165ee5d12e879e93512\r
-e57ae8351165ee5c012a8548166562f2\r
-4c6174ee35744a75a2b476016b2c7212\r
-ef65f43501eb22f4116df3350ee171eb\r
-0eeba2a5eea2dbefa2d8f41172f55de1\r
-4ee592e7aa42e91165ee5c012a854516\r
-7468e94c6174ee350165427410e12001\r
-2a854c166174ee54616dec4910ee5c01\r
-2a855416616dec4c6174ee3501654274\r
-10e520012a854c166174ee54656cf549\r
-10ee5c012a855416656cf54c6174ee35\r
-6c1c6c366dac0775367812f96de73512\r
-e865ee5d01eda25af9126b6cee356432\r
-65a2dc6b12e76de73512f86de7350472\r
-527a58e75ef2a28ffa1172f55c012a85\r
-4c166174ee437972ec3512eb6df33512\r
-f375fa35117ae84971c16171a2ac72a4\r
-49730011e855f12df130f234f428f5a8\r
-18f71165ee5d107301e829f220022a85\r
-43344c166174ee437972ec2b167972ec\r
-4c6174ee2be832e942ee22ef1165ee5d\r
-0262ac2968227310f2291165ee5c012a\r
-855316696ee84c6174ee35702e705272\r
-58735ee1b0ace41165ee5c012a854116\r
-7261e24c6174ee3512f66ff23512ef73\r
-e33501e8aef1f91161e1296434674068\r
-486b12e76de73501e322ee1173e33513\r
-e36b6cee3512f561f23504753a769077\r
-a26478a26df51165f35d0cec16f30bf3\r
-2af726f822f91171f535ec26f022f211\r
-71f535e709e726e822eb1171f535e226\r
-e422e61171f5350ded16f00bf02af326\r
-f722fa1171f535ed26ee22ef1171f535\r
-e80be82ae926ea22ec1171f535e126e3\r
-22e51171f53503e12ae326e822f31171\r
-f5350aef14f409f426f522f71171f535\r
-ef26f022f21171f535e12ee32ae826ec\r
-22ee1171f5351171f5350361a80ced30\r
-eea285f71166f25d1164e5496ea26f6f\r
-a2d570086b4d6bac05735ae168f386f4\r
-1170f4a28007b3c4c4b3aac8b4aac5b5\r
-aac2b601b129b62901e5a2d5f41170f3\r
-351165ee5c012a8547167572f54c6174\r
-ee351165ee5c012a8541167261e24c61\r
-74ee356234633a65406712e161f23512\r
-f470f33512ed65ee4912ec6df3350a79\r
-46ee19ee2eef38f91165ee5d106e01e2\r
-49ef4901647c6e01e223ee497948e256\r
-e51165ee5c012a8544166576e14c6174\r
-ee3501e4a66eee1165ee5d01642c6e01\r
-ee49ef2310e13161a8756834693a6c42\r
-7312ef65ee5d12e467ee3513f16b6cee\r
-3513e56c75f935046b54725ce3acfbed\r
-a2ddf21165ee5c012a854f167279e14c\r
-6174ee3513e96b6cee3502e3a6c6ee22\r
-f3116df33567c32c6ac2486aa2b56ba4\r
-0d6ca4b06d00107669ee35eea40af24e\r
-f374f4a29af91165ee5c012a854d1679\r
-6df24c6174ee350168a64f6d10f22001\r
-2a854c166174ee446576e1491169e45d\r
-7676e7a448e9a60aec0165426d10ec20\r
-012a854c166174ee4d6c79ed4910ee5c\r
-012a854d166c79ed4c6174ee3512e66d\r
-ee356e1f6e34713a73407512e96df335\r
-12f07ae83512e76df33501e8ac66e911\r
-6df3356134653a66406912ee6df33512\r
-f86df33512ef6df33502e14ae246e511\r
-65ee5d02612ee13af61169e44901eb22\r
-f8116df335116ae120032a8548384b78\r
-4c166174ee4a7061ee2b026136694272\r
-156bf44a7061ee2b156ee94a7061ee2b\r
-1172e10148464a127061ee2b12616ee1\r
-01482c4a127061ee2b12726bf42b0aeb\r
-73ef36ef2ef57cf91172f55d116bef20\r
-022a8548464a12616def01482c4b126f\r
-72e52b12616ee72b11616e01e722e913\r
-4b6f72e52b1174f25deba897ed6aee01\r
-65426b10ee20012a854c166174ee4b6e\r
-64e14910ee5c012a854b166e64e14c61\r
-74ee351165ee5c012a854b16686df24c\r
-6174ee357236763c7848e14ee71166f2\r
-5d12e965ee5d01e222f2116df33512e4\r
-6df3351165ee5c012a854716656ff24c\r
-6174ee350e753ee221e24ee7a29dee4c\r
-ef1165ee5c012a854c16616fef4c6174\r
-ee351164e5291166f25d753277387a40\r
-e11169f44912e166f25d13e76c75f935\r
-12e87ae8356f2a6f48724e735c7402e7\r
-30ef22f3126c75f935116cf63512fa65\r
-ee5d01e922ed126c75f93513ed6c75f9\r
-35634669526b02e226ef22f3126c75f9\r
-35126c75f93501e522e6116df33512f7\r
-6df335676a68a2816905e40ae4a88ce7\r
-34f31165ee49642e6b36e11165ee5d13\r
-e16c75f93512f469f5350a7531ec1eec\r
-a40deea40af50167286810e95d10f520\r
-012a854c166174ee47756af249752ee1\r
-22e41165ee4901e922ee1167ee356138\r
-6b4c6e546f5a7312f764e52902e1a257\r
-eea46bf8116fed3513f06b70e53512f7\r
-67ee3513ed6b6feb3507e934e94ef26c\r
-f4a6f7f91172f55c012a854116726dee\r
-437972ec351168e920012a854c166174\r
-ee446576e1490162287310e82910f329\r
-61326a4c7352e11165ee5d02e530eba4\r
-0df71165ee49116fed3512e96df33512\r
-ee7ae83564c0dd648865a24866036632\r
-7538ef6af9116eec4912ed66e63506e8\r
-0be82ae926f122f61166e635e226e522\r
-e61166e6351166e6351164e149027434\r
-753ae1106e01e231ef3112f96ee53512\r
-f06df33506ee78ee34efa278f396f511\r
-65f3491165eea28007b317b362b430b5\r
-5ab601b229b62904b027b127b327b427\r
-b5272a2bb030b12cb201b229b62904b0\r
-29b129b329b427b5291165f3a28007b3\r
-0cb342b43eb53ab601b129b6292a2bb0\r
-26b14eb204b029b229b329b429b52904\r
-b029b229b329b429b52901b129b6296e\r
-2e7936e51165ee5d13e26b6cee3513ef\r
-6b6cee3561a25662a482630a6f2c7a16\r
-7a30efa4b5f91165ee4901e822ef117a\r
-e835117ae8356f3070367212f366f249\r
-12e16df33512f87ae8356438653e6846\r
-6a4c6b12e261f25d12ef7ae83513e266\r
-69ec5d12f265ee4912f97ae835001575\r
-afe288f275f24af9a26cfa1172f55c01\r
-2a854c166174ee437972ec351161f220\r
-012a5a4c166174ee417261e24807b327\r
-b364b426b522b605b436b429b529b629\r
-8407b313b33cb426b522b605b422b429\r
-b529b62910b3292a2bb026b122b205b4\r
-0fb429b529b62905b406b429b529b629\r
-b029b129b2291165f349e22ee632eb11\r
-65ee5d1172f55d116eec4975a41d7634\r
-793a7a4ee1127373f92912ec61f23503\r
-e82aec26ee22f01161f23512e261fa35\r
-66356c1e6c3e70447203f12af326f922\r
-fa1161f23512ee73f13501e322e41161\r
-f235663069366a12f061f23512e261f2\r
-3513e97379f235613e624e635a649065\r
-01e222e31161f23502e526ef32f41173\r
-f13501e822f61161f23505f709f726f8\r
-22f91161f235e82eed22f11161f23511\r
-65ee5d1161f23512e661f2350c7655e8\r
-3de83eee42f286f30168287310e82910\r
-f2291168e95d0162426510ee5c012a85\r
+00196ec43174c1bb77c0d177a28778a2\r
+9179a2a17a046c386daaa1e138e856f5\r
+1165ee5d12ed6df335117ae848012a85\r
+4c166174ee48616ef335117ae820022a\r
+8548344c166174ee48616ef34911616e\r
+01e992f41348616ef42007b314b32ab4\r
+26b536b605b3c8bbb329b429b62910b5\r
+292a2bb026b122b205b3c8a7b329b429\r
+b62905b3c89db329b429b6291248616e\r
+01f349f44901752aef1166f25d12f57a\r
+e835016d2ae81165ee5d02eda241f622\r
+f7116de7350369327538e93eef1165ee\r
+5d12e879e93512e57ae8351165ee5c01\r
+2a8548166562f24c6174ee35744a75a2\r
+b476016b2c7212ef65f43501eb22f411\r
+6df3350ee171eb0eeba2a4eea2dfefa2\r
+dcf41172f55de14ee592e7aa53e91165\r
+ee5c012a8545167468e94c6174ee3501\r
+65427410e120012a854c166174ee5461\r
+6dec4910ee5c012a855416616dec4c61\r
+74ee350165427410e520012a854c1661\r
+74ee54656cf54910ee5c012a85541665\r
+6cf54c6174ee356c1c6c366dac187536\r
+7812f96de73512e865ee5d01eda25ef9\r
+126b6cee35643265a2e66b12e76de735\r
+12f86de73505eb18ebb2bcf2a29afa11\r
+72f55c012a854c166174ee437972ec35\r
+722e7a34e7117ae84912eb6df33512f3\r
+75fa3571c16771a2b272a44f730012e8\r
+5bf12df130f234f428f5a825f71165ee\r
+5d107301e829f220022a8543344c1661\r
+74ee437972ec2b167972ec4c6174ee2b\r
+e836e946eb64ee22ef1165ee5d0262ac\r
+3468227310f2291165ee5c012a855316\r
+696ee84c6174ee351163f349702e7052\r
+7258735ee1b20fe41165ee5c012a8541\r
+167261e24c6174ee3512f66ff23512ef\r
+73e33501e8b014f91161e12964346740\r
+68486b12e76de73501e322ee1173e335\r
+13e36b6cee3512f561f23504753a7690\r
+77a26478a26df51165f35d0cec16f30b\r
+f32af726f822f91171f535ec26f022f2\r
+1171f535e709e726e822eb1171f535e2\r
+26e422e61171f5350ded16f00bf02af3\r
+26f722fa1171f535ed26ee22ef1171f5\r
+35e80be82ae926ea22ec1171f535e126\r
+e322e51171f53503e12ae326e822f311\r
+71f5350aef14f409f426f522f71171f5\r
+35ef26f022f21171f535e12ee32ae826\r
+ec22ee1171f5351171f5350361a813ed\r
+30eea285f71166f25d1164e5496ea26f\r
+6fa2d570086b4d6bac0c735ae168f386\r
+f41170f4a28007b3c4cbb3aacfb4aacc\r
+b5aac9b601b129b62901e5a2d5f41170\r
+f3351165ee5c012a8547167572f54c61\r
+74ee351165ee5c012a8541167261e24c\r
+6174ee356234633a65406712e161f235\r
+12f470f33512ed65ee4912ec6df3350a\r
+7946ee19ee2eef38f91165ee5d106e01\r
+e249ef4901647c6e01e223ee497948e2\r
+56e51165ee5c012a8544166576e14c61\r
+74ee3501e4a675ee1165ee5d01642c6e\r
+01ee49ef2310e13161a87c6834693a6c\r
+427312ef65ee5d12e467ee3513f16b6c\r
+ee3513e56c75f935046b54725ce3ae2b\r
+eda2e4f21165ee5c012a854f167279e1\r
+4c6174ee3513e96b6cee3502e3a6cdee\r
+22f3116df33567c3336ac24f6aa2bc6b\r
+a4146ca4b76d00107669ee35eea411f2\r
+4ef374f4a2a1f91165ee5c012a854d16\r
+796df24c6174ee350168a6566d10f220\r
+012a854c166174ee446576e1491169e4\r
+5d7676e7a44fe9a611ec0165426d10ec\r
+20012a854c166174ee4d6c79ed4910ee\r
+5c012a854d166c79ed4c6174ee3512e6\r
+6dee356e1f6e34713a73407512e96df3\r
+3512f07ae83512e76df33501e8aca3e9\r
+116df33561346548664e6912ee6df335\r
+01e92af8116df3351168e94912ef6df3\r
+3502e14ae246e51165ee5d02612ee13a\r
+f61169e44901eb22f8116df335116ae1\r
+20032a8548384b784c166174ee4a7061\r
+ee2b026136694272156bf44a7061ee2b\r
+156ee94a7061ee2b1172e10148464a12\r
+7061ee2b12616ee101482c4a127061ee\r
+2b12726bf42b0aeb73ef36ef2ef57cf9\r
+1172f55d116bef20022a8548464a1261\r
+6def01482c4b126f72e52b12616ee72b\r
+11616e01e722e9134b6f72e52b1174f2\r
+5deba8bbed6aee0165426b10ee20012a\r
+854c166174ee4b6e64e14910ee5c012a\r
+854b166e64e14c6174ee351165ee5c01\r
+2a854b16686df24c6174ee357236763c\r
+7848e14ee71166f25d12e965ee5d01e2\r
+22f2116df33512e46df3351165ee5c01\r
+2a854716656ff24c6174ee350e753ee2\r
+21e24ee7a29dee4cef1165ee5c012a85\r
+4c16616fef4c6174ee351164e5291166\r
+f25d753277387a40e11169f44912e166\r
+f25d13e76c75f93512e87ae8356f2a6f\r
+48724e735c7402e730ef22f3126c75f9\r
+35116cf63512fa65ee5d01e922ed126c\r
+75f93513ed6c75f935634669526b02e2\r
+26ef22f3126c75f935126c75f93501e5\r
+22e6116df33512f76df335676a68a281\r
+6905e40ae4a8b7e734f31165ee49642e\r
+6b36e11165ee5d13e16c75f93512f469\r
+f5350a7531ec1eeca40deea40af50167\r
+286810e95d10f520012a854c166174ee\r
+47756af249752ee122e41165ee4901e9\r
+22ee1167ee3561386b4c6e546f5a7312\r
+f764e52902e1a257eea477f8116fed35\r
+13f06b70e53512f767ee3513ed6b6feb\r
+3507e934e94ef26cf4a820f91172f55c\r
+012a854116726dee437972ec351168e9\r
+20012a854c166174ee446576e1490162\r
+287310e82910f32961326a4c7352e111\r
+65ee5d02e530eba419f71165ee49116f\r
+ed3512e96df33512ee7ae83564c0dd64\r
+8865a248660366327538ef6af9116eec\r
+4912ed66e63506e80be82ae926f122f6\r
+1166e635e226e522e61166e6351166e6\r
+351164e149027434753ae1106e01e231\r
+ef3112f96ee53512f06df33506ee78ee\r
+34efa278f396f51165f3491165eea280\r
+07b317b362b430b55ab601b229b62904\r
+b027b127b327b427b5272a2bb030b12c\r
+b201b229b62904b029b129b329b427b5\r
+291165f3a28007b30cb342b43eb53ab6\r
+01b129b6292a2bb026b14eb204b029b2\r
+29b329b429b52904b029b229b329b429\r
+b52901b129b6296e2e7936e51165ee5d\r
+13e26b6cee3513ef6b6cee3561a26062\r
+a49e630c702ee111e1a2ceefa4ddf32a\r
+f91165ee491173eb49703e72447a01e8\r
+22ef117ae835117ae83512f87ae83512\r
+f366f2496a146a306b366f12e16df335\r
+12f97ae83512e261f25d643065366812\r
+f265ee4912ef7ae83513e26669ec5d00\r
+1675c0c0e692f275f24af9a26cfa1172\r
+f55c012a854c166174ee437972ec3511\r
+61f220012a5a4c166174ee417261e248\r
+07b327b364b426b522b605b436b429b5\r
+29b6298407b313b33cb426b522b605b4\r
+22b429b529b62910b3292a2bb026b122\r
+b205b40fb429b529b62905b406b429b5\r
+29b629b029b129b2291165f349e64aeb\r
+a2b1ed1165ee5c012a8545167468e94c\r
+6174ee35116eec497a137a2ee134e211\r
+72f55d12e261fa35127373f92975a42e\r
+763a7903e82aec26ee22f01161f23512\r
+ec61f23566356c1e6c3e70447203f12a\r
+f326f922fa1161f23512ee73f13501e3\r
+22e41161f235663069366a12f061f235\r
+12e261f23513e97379f235613e624e63\r
+5a64906501e222e31161f23502e526ef\r
+32f41173f13501e822f61161f23505f7\r
+09f726f822f91161f235e82eed22f111\r
+61f2351165ee5d1161f23512e661f235\r
+0e7668ee4aee3eef82f2a0f301682873\r
+10e82910f2290162426510ee5c012a85\r
 4216656ee74c6174ee3510ee20012a85\r
-4c166174ee42656ee7491166f249762e\r
-7a3ae51172f54901e522f5116df33512\r
-e36de7356a1b6a306d447412ea6df335\r
-01ee2af1116de735116df33512ed6de7\r
-35623065366812f26de73512fa61f235\r
-12ed65ee5d\r
+4c166174ee42656ee749117ae848012a\r
+8554166962f448616ef3351166f24976\r
+327a3ee544e81168e95d01e522f5116d\r
+f33512e36de7351172f549682268346a\r
+3a6d4e7412ea6df33512f26de73501ee\r
+2af1116de735116df33512ed6de73561\r
+3062366512ed65ee5d12ec75f24912fa\r
+61f235\r
         }\r
     }\r
 }\r
index e26b12f..26856d5 100644 (file)
@@ -289,6 +289,7 @@ likelySubtags:table(nofallback){
     dgz{"dgz_Latn_ZZ"}\r
     dia{"dia_Latn_ZZ"}\r
     dje{"dje_Latn_NE"}\r
+    dmf{"dmf_Medf_NG"}\r
     dnj{"dnj_Latn_CI"}\r
     dob{"dob_Latn_ZZ"}\r
     doi{"doi_Deva_IN"}\r
@@ -804,8 +805,6 @@ likelySubtags:table(nofallback){
     mi{"mi_Latn_NZ"}\r
     mif{"mif_Latn_ZZ"}\r
     min{"min_Latn_ID"}\r
-    mis{"mis_Hatr_IQ"}\r
-    mis_Medf{"mis_Medf_NG"}\r
     miw{"miw_Latn_ZZ"}\r
     mk{"mk_Cyrl_MK"}\r
     mki{"mki_Arab_ZZ"}\r
@@ -1249,6 +1248,7 @@ likelySubtags:table(nofallback){
     tyv{"tyv_Cyrl_RU"}\r
     tzm{"tzm_Latn_MA"}\r
     ubu{"ubu_Latn_ZZ"}\r
+    udi{"udi_Aghb_RU"}\r
     udm{"udm_Cyrl_RU"}\r
     ug{"ug_Arab_CN"}\r
     ug_Cyrl{"ug_Cyrl_KZ"}\r
@@ -1303,7 +1303,7 @@ likelySubtags:table(nofallback){
     und_AX{"sv_Latn_AX"}\r
     und_AZ{"az_Latn_AZ"}\r
     und_Adlm{"ff_Adlm_GN"}\r
-    und_Aghb{"lez_Aghb_RU"}\r
+    und_Aghb{"udi_Aghb_RU"}\r
     und_Ahom{"aho_Ahom_IN"}\r
     und_Arab{"ar_Arab_EG"}\r
     und_Arab_CC{"ms_Arab_CC"}\r
@@ -1450,7 +1450,6 @@ likelySubtags:table(nofallback){
     und_Hano{"hnn_Hano_PH"}\r
     und_Hans{"zh_Hans_CN"}\r
     und_Hant{"zh_Hant_TW"}\r
-    und_Hatr{"mis_Hatr_IQ"}\r
     und_Hebr{"he_Hebr_IL"}\r
     und_Hebr_CA{"yi_Hebr_CA"}\r
     und_Hebr_GB{"yi_Hebr_GB"}\r
@@ -1554,7 +1553,7 @@ likelySubtags:table(nofallback){
     und_Mand{"myz_Mand_IR"}\r
     und_Mani{"xmn_Mani_CN"}\r
     und_Marc{"bo_Marc_CN"}\r
-    und_Medf{"mis_Medf_NG"}\r
+    und_Medf{"dmf_Medf_NG"}\r
     und_Mend{"men_Mend_SL"}\r
     und_Merc{"xmr_Merc_SD"}\r
     und_Mero{"xmr_Mero_SD"}\r
index b5ea7ae..1cc2e0b 100644 (file)
@@ -896,6 +896,11 @@ metaZones:table(nofallback){
             {\r
                 "Africa_Eastern",\r
                 "2000-01-15 10:00",\r
+                "2021-01-31 21:00",\r
+            }\r
+            {\r
+                "Africa_Central",\r
+                "2021-01-31 21:00",\r
                 "9999-12-31 23:59",\r
             }\r
         }\r
@@ -1665,11 +1670,11 @@ metaZones:table(nofallback){
             {\r
                 "America_Eastern",\r
                 "1970-01-01 00:00",\r
-                "2015-11-01 06:00",\r
+                "2015-03-08 07:00",\r
             }\r
             {\r
                 "Atlantic",\r
-                "2015-11-01 06:00",\r
+                "2015-03-08 07:00",\r
                 "2018-03-11 07:00",\r
             }\r
             {\r
@@ -4055,18 +4060,6 @@ metaZones:table(nofallback){
         "Europe:Volgograd"{\r
             {\r
                 "Volgograd",\r
-                "1970-01-01 00:00",\r
-                "1992-03-28 22:00",\r
-            }\r
-            {\r
-                "Moscow",\r
-                "1992-03-28 22:00",\r
-                "2018-10-27 23:00",\r
-            }\r
-            {\r
-                "Volgograd",\r
-                "2018-10-27 23:00",\r
-                "9999-12-31 23:59",\r
             }\r
         }\r
         "Europe:Warsaw"{\r
index 614223f..c0113a7 100644 (file)
@@ -1148,10 +1148,6 @@ metadata:table(nofallback){
                 reason{"deprecated"}\r
                 replacement{"ngv"}\r
             }\r
-            no{\r
-                reason{"legacy"}\r
-                replacement{"nb"}\r
-            }\r
             no_bok{\r
                 reason{"deprecated"}\r
                 replacement{"nb"}\r
@@ -1178,7 +1174,7 @@ metadata:table(nofallback){
             }\r
             nor{\r
                 reason{"overlong"}\r
-                replacement{"nb"}\r
+                replacement{"no"}\r
             }\r
             npi{\r
                 reason{"macrolanguage"}\r
@@ -5274,6 +5270,7 @@ metadata:table(nofallback){
         "myv_RU",\r
         "mzn_IR",\r
         "naq_NA",\r
+        "nb",\r
         "nb_NO",\r
         "nd_ZW",\r
         "nds_DE",\r
index f42dade..220e4cc 100644 (file)
@@ -62,6 +62,7 @@ pluralRanges:table(nofallback){
         nb{"set04"}\r
         ne{"set03"}\r
         nl{"set03"}\r
+        no{"set04"}\r
         or{"set07"}\r
         pa{"set05"}\r
         pcm{"set04"}\r
index ee77127..f462ca2 100644 (file)
@@ -286,6 +286,7 @@ plurals:table(nofallback){
         nb{"set37"}\r
         ne{"set41"}\r
         nl{"set37"}\r
+        no{"set37"}\r
         or{"set59"}\r
         pa{"set37"}\r
         pl{"set37"}\r
@@ -460,14 +461,14 @@ plurals:table(nofallback){
         set20{\r
             many{\r
                 "e = 0 and i != 0 and i % 1000000 = 0 and v = 0 or e != 0..5 @integer"\r
-                " 1000000, 1e6, 2e6, 3e6, 4e6, 5e6, 6e6, … @decimal 1.0000001e6, 1.1e"\r
-                "6, 2.0000001e6, 2.1e6, 3.0000001e6, 3.1e6, …"\r
+                " 1000000, 1c6, 2c6, 3c6, 4c6, 5c6, 6c6, … @decimal 1.0000001c6, 1.1c"\r
+                "6, 2.0000001c6, 2.1c6, 3.0000001c6, 3.1c6, …"\r
             }\r
             one{"i = 0,1 @integer 0, 1 @decimal 0.0~1.5"}\r
             other{\r
-                " @integer 2~17, 100, 1000, 10000, 100000, 1e3, 2e3, 3e3, 4e3, 5e3, 6"\r
-                "e3, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000"\r
-                "000.0, 1.0001e3, 1.1e3, 2.0001e3, 2.1e3, 3.0001e3, 3.1e3, …"\r
+                " @integer 2~17, 100, 1000, 10000, 100000, 1c3, 2c3, 3c3, 4c3, 5c3, 6"\r
+                "c3, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000"\r
+                "000.0, 1.0001c3, 1.1c3, 2.0001c3, 2.1c3, 3.0001c3, 3.1c3, …"\r
             }\r
         }\r
         set21{\r
index 0e1044d..096b3b4 100644 (file)
@@ -2105,7 +2105,7 @@ supplementalData:table(nofallback){
             "islamic-tbla",\r
         }\r
     }\r
-    cldrVersion{"38.1"}\r
+    cldrVersion{"39"}\r
     codeMappings{\r
         {\r
             "AA",\r
@@ -4819,7 +4819,6 @@ supplementalData:table(nofallback){
                 "nlr",\r
                 "nns",\r
                 "nnx",\r
-                "no",\r
                 "noo",\r
                 "npi",\r
                 "nts",\r
@@ -6295,6 +6294,7 @@ supplementalData:table(nofallback){
                 "nnp~r",\r
                 "nnt~w",\r
                 "nny~z",\r
+                "no",\r
                 "noa",\r
                 "noc~n",\r
                 "nop~q",\r
@@ -11280,6 +11280,7 @@ supplementalData:table(nofallback){
                 "pressure-millimeter-of-mercury",\r
                 "proportion-karat",\r
                 "torque-pound-foot",\r
+                "concentr-milligram-per-deciliter",\r
             }\r
             regular{\r
                 "acceleration-g-force",\r
@@ -11300,7 +11301,7 @@ supplementalData:table(nofallback){
                 "area-square-yard",\r
                 "area-dunam",\r
                 "concentr-karat",\r
-                "concentr-milligram-per-deciliter",\r
+                "concentr-milligram-ofglucose-per-deciliter",\r
                 "concentr-millimole-per-liter",\r
                 "concentr-percent",\r
                 "concentr-permille",\r
@@ -11309,6 +11310,7 @@ supplementalData:table(nofallback){
                 "concentr-mole",\r
                 "concentr-item",\r
                 "concentr-portion",\r
+                "concentr-ofglucose",\r
                 "consumption-liter-per-100-kilometer",\r
                 "consumption-liter-per-kilometer",\r
                 "consumption-mile-per-gallon",\r
@@ -11491,6 +11493,7 @@ supplementalData:table(nofallback){
                 "aluku",\r
                 "ao1990",\r
                 "aranes",\r
+                "arkaika",\r
                 "asante",\r
                 "auvern",\r
                 "baku1926",\r
@@ -11575,6 +11578,7 @@ supplementalData:table(nofallback){
                 "vaidika",\r
                 "valencia",\r
                 "vallader",\r
+                "vecdruka",\r
                 "vivaraup",\r
                 "wadegile",\r
                 "xsistemo",\r
@@ -15274,6 +15278,15 @@ supplementalData:table(nofallback){
                 scripts{"Latn"}\r
             }\r
         }\r
+        no{\r
+            primary{\r
+                scripts{"Latn"}\r
+                territories{\r
+                    "NO",\r
+                    "SJ",\r
+                }\r
+            }\r
+        }\r
         nod{\r
             primary{\r
                 scripts{"Lana"}\r
@@ -17344,8 +17357,8 @@ supplementalData:table(nofallback){
     languageMatchingNew{\r
         written{\r
             {\r
-                "no",\r
                 "nb",\r
+                "no",\r
                 "1",\r
                 "0",\r
             }\r
@@ -17428,6 +17441,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "am",\r
+                "en",\r
+                "30",\r
+                "1",\r
+            }\r
+            {\r
                 "ay",\r
                 "es",\r
                 "20",\r
@@ -17440,6 +17459,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "bal",\r
+                "ur",\r
+                "20",\r
+                "1",\r
+            }\r
+            {\r
                 "be",\r
                 "ru",\r
                 "20",\r
@@ -17464,12 +17489,24 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "bo",\r
+                "zh",\r
+                "20",\r
+                "1",\r
+            }\r
+            {\r
                 "br",\r
                 "fr",\r
                 "20",\r
                 "1",\r
             }\r
             {\r
+                "ca",\r
+                "es",\r
+                "20",\r
+                "1",\r
+            }\r
+            {\r
                 "ceb",\r
                 "fil",\r
                 "30",\r
@@ -17500,6 +17537,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "cs",\r
+                "sk",\r
+                "20",\r
+                "0",\r
+            }\r
+            {\r
                 "cy",\r
                 "en",\r
                 "20",\r
@@ -17704,6 +17747,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "mai",\r
+                "hi",\r
+                "20",\r
+                "1",\r
+            }\r
+            {\r
                 "mfe",\r
                 "en",\r
                 "30",\r
@@ -17974,6 +18023,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "uk",\r
+                "ru",\r
+                "20",\r
+                "1",\r
+            }\r
+            {\r
                 "ur",\r
                 "en",\r
                 "30",\r
@@ -18010,6 +18065,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "za",\r
+                "zh",\r
+                "20",\r
+                "1",\r
+            }\r
+            {\r
                 "zu",\r
                 "en",\r
                 "30",\r
@@ -19138,6 +19199,12 @@ supplementalData:table(nofallback){
                 "0",\r
             }\r
             {\r
+                "am_Ethi",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
                 "az_Latn",\r
                 "ru_Cyrl",\r
                 "10",\r
@@ -19150,6 +19217,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "bo_Tibt",\r
+                "zh_Hans",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
                 "hy_Armn",\r
                 "ru_Cyrl",\r
                 "10",\r
@@ -19276,15 +19349,9 @@ supplementalData:table(nofallback){
                 "0",\r
             }\r
             {\r
+                "za_Latn",\r
                 "zh_Hans",\r
-                "zh_Hant",\r
-                "15",\r
-                "1",\r
-            }\r
-            {\r
-                "zh_Hant",\r
-                "zh_Hans",\r
-                "19",\r
+                "10",\r
                 "1",\r
             }\r
             {\r
@@ -19788,6 +19855,10 @@ supplementalData:table(nofallback){
             "es_UY",\r
             "es_VE",\r
         }\r
+        no{\r
+            "nb",\r
+            "nn",\r
+        }\r
         pt_PT{\r
             "pt_AO",\r
             "pt_CH",\r
@@ -36310,6 +36381,11 @@ supplementalData:table(nofallback){
             "weekOfInterval",\r
             "weekOfDate",\r
         }\r
+        nb{\r
+            "weekOfYear",\r
+            "weekOfMonth",\r
+            "weekOfInterval",\r
+        }\r
         nl{\r
             "weekOfDate",\r
             "weekOfYear",\r
index 7d74665..4cdd260 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 units:table(nofallback){\r
-    cldrVersion{"38.1"}\r
+    cldrVersion{"39"}\r
     convertUnits{\r
         100-kilometer{\r
             factor{"100000"}\r
@@ -279,7 +279,7 @@ units:table(nofallback){
             target{"second"}\r
         }\r
         mole{\r
-            factor{"6.02214076E+23"}\r
+            factor{"item_per_mole"}\r
             target{"item"}\r
         }\r
         month{\r
@@ -298,6 +298,10 @@ units:table(nofallback){
             factor{"1"}\r
             target{"kilogram-meter-per-square-second"}\r
         }\r
+        ofglucose{\r
+            factor{"1000*item_per_mole/glucose_molar_mass"}\r
+            target{"item-per-kilogram"}\r
+        }\r
         ofhg{\r
             factor{"13595.1*gravity"}\r
             target{"kilogram-per-square-meter-square-second"}\r
@@ -459,8 +463,10 @@ units:table(nofallback){
         ft_to_m{"0.3048"}\r
         gal_imp_to_m3{"0.00454609"}\r
         gal_to_m3{"231*in3_to_m3"}\r
+        glucose_molar_mass{"180.1557"}\r
         gravity{"9.80665"}\r
         in3_to_m3{"ft3_to_m3/12*12*12"}\r
+        item_per_mole{"6.02214076E+23"}\r
         lb_to_kg{"0.45359237"}\r
     }\r
     unitPreferenceData{\r
@@ -546,6 +552,11 @@ units:table(nofallback){
         }\r
         "concentration"{\r
             "blood-glucose"{\r
+                001{\r
+                    {\r
+                        unit{"milligram-ofglucose-per-deciliter"}\r
+                    }\r
+                }\r
                 AG{\r
                     {\r
                         unit{"millimole-per-liter"}\r
@@ -914,6 +925,16 @@ units:table(nofallback){
                         unit{"liter-per-kilometer"}\r
                     }\r
                 }\r
+                CA{\r
+                    {\r
+                        unit{"mile-per-gallon-imperial"}\r
+                    }\r
+                }\r
+                GB{\r
+                    {\r
+                        unit{"mile-per-gallon-imperial"}\r
+                    }\r
+                }\r
                 IT{\r
                     {\r
                         unit{"liter-per-kilometer"}\r
@@ -954,32 +975,6 @@ units:table(nofallback){
                         unit{"liter-per-kilometer"}\r
                     }\r
                 }\r
-            }\r
-        }\r
-        "consumption-inverse"{\r
-            "default"{\r
-                001{\r
-                    {\r
-                        unit{"kilometer-per-centiliter"}\r
-                    }\r
-                }\r
-            }\r
-            "vehicle-fuel"{\r
-                001{\r
-                    {\r
-                        unit{"kilometer-per-centiliter"}\r
-                    }\r
-                }\r
-                CA{\r
-                    {\r
-                        unit{"mile-per-gallon-imperial"}\r
-                    }\r
-                }\r
-                GB{\r
-                    {\r
-                        unit{"mile-per-gallon-imperial"}\r
-                    }\r
-                }\r
                 US{\r
                     {\r
                         unit{"mile-per-gallon"}\r
@@ -1131,11 +1126,6 @@ units:table(nofallback){
                         unit{"meter-and-centimeter"}\r
                     }\r
                 }\r
-                BR{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
                 CA{\r
                     {\r
                         geq{"3.0"}\r
@@ -1145,21 +1135,6 @@ units:table(nofallback){
                         unit{"inch"}\r
                     }\r
                 }\r
-                CN{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
-                DE{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
-                DK{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
                 DZ{\r
                     {\r
                         unit{"meter-and-centimeter"}\r
@@ -1223,41 +1198,11 @@ units:table(nofallback){
                         unit{"meter-and-centimeter"}\r
                     }\r
                 }\r
-                MX{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
                 MY{\r
                     {\r
                         unit{"meter-and-centimeter"}\r
                     }\r
                 }\r
-                NL{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
-                NO{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
-                PL{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
-                PT{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
-                RU{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
                 SA{\r
                     {\r
                         unit{"meter-and-centimeter"}\r
@@ -1317,10 +1262,12 @@ units:table(nofallback){
                         unit{"meter"}\r
                     }\r
                     {\r
+                        geq{"10"}\r
                         skeleton{"precision-increment/10"}\r
                         unit{"meter"}\r
                     }\r
                     {\r
+                        skeleton{"precision-increment/1"}\r
                         unit{"meter"}\r
                     }\r
                 }\r
@@ -1335,6 +1282,12 @@ units:table(nofallback){
                         unit{"yard"}\r
                     }\r
                     {\r
+                        geq{"10"}\r
+                        skeleton{"precision-increment/10"}\r
+                        unit{"yard"}\r
+                    }\r
+                    {\r
+                        skeleton{"precision-increment/1"}\r
                         unit{"yard"}\r
                     }\r
                 }\r
@@ -1351,9 +1304,14 @@ units:table(nofallback){
                         unit{"meter"}\r
                     }\r
                     {\r
+                        geq{"10"}\r
                         skeleton{"precision-increment/10"}\r
                         unit{"meter"}\r
                     }\r
+                    {\r
+                        skeleton{"precision-increment/1"}\r
+                        unit{"meter"}\r
+                    }\r
                 }\r
                 US{\r
                     {\r
@@ -1366,9 +1324,14 @@ units:table(nofallback){
                         unit{"foot"}\r
                     }\r
                     {\r
+                        geq{"10"}\r
                         skeleton{"precision-increment/10"}\r
                         unit{"foot"}\r
                     }\r
+                    {\r
+                        skeleton{"precision-increment/1"}\r
+                        unit{"foot"}\r
+                    }\r
                 }\r
             }\r
             "snowfall"{\r
@@ -1394,11 +1357,6 @@ units:table(nofallback){
                         unit{"foot-and-inch"}\r
                     }\r
                 }\r
-                MX{\r
-                    {\r
-                        unit{"meter-and-centimeter"}\r
-                    }\r
-                }\r
                 US{\r
                     {\r
                         unit{"foot-and-inch"}\r
@@ -1494,21 +1452,6 @@ units:table(nofallback){
                         unit{"gram"}\r
                     }\r
                 }\r
-                DZ{\r
-                    {\r
-                        unit{"kilogram-and-gram"}\r
-                    }\r
-                }\r
-                EG{\r
-                    {\r
-                        unit{"kilogram-and-gram"}\r
-                    }\r
-                }\r
-                ES{\r
-                    {\r
-                        unit{"kilogram-and-gram"}\r
-                    }\r
-                }\r
                 GB{\r
                     {\r
                         unit{"stone-and-pound"}\r
@@ -1522,16 +1465,6 @@ units:table(nofallback){
                         unit{"pound-and-ounce"}\r
                     }\r
                 }\r
-                JO{\r
-                    {\r
-                        unit{"kilogram-and-gram"}\r
-                    }\r
-                }\r
-                SA{\r
-                    {\r
-                        unit{"kilogram-and-gram"}\r
-                    }\r
-                }\r
                 US{\r
                     {\r
                         unit{"pound"}\r
@@ -1543,13 +1476,6 @@ units:table(nofallback){
             }\r
         }\r
         "mass-density"{\r
-            "blood-glucose"{\r
-                001{\r
-                    {\r
-                        unit{"milligram-per-deciliter"}\r
-                    }\r
-                }\r
-            }\r
             "default"{\r
                 001{\r
                     {\r
@@ -1898,50 +1824,140 @@ units:table(nofallback){
         }\r
     }\r
     unitQuantities{\r
-        ampere{"electric-current"}\r
-        ampere-per-meter{"magnetic-field-strength"}\r
-        ampere-per-square-meter{"current-density"}\r
-        bit{"digital"}\r
-        candela{"luminous-intensity"}\r
-        candela-per-square-meter{"illuminance"}\r
-        candela-square-meter-per-square-meter{"luminous-flux"}\r
-        cubic-meter{"volume"}\r
-        cubic-meter-per-kilogram{"specific-volume"}\r
-        cubic-meter-per-meter{"consumption"}\r
-        cubic-second-square-ampere-per-kilogram-square-meter{"electric-conductance"}\r
-        em{"typewidth"}\r
-        item{"substance-amount"}\r
-        item-per-cubic-meter{"concentration"}\r
-        kelvin{"temperature"}\r
-        kilogram{"mass"}\r
-        kilogram-meter-per-meter-square-second{"torque"}\r
-        kilogram-meter-per-square-second{"force"}\r
-        kilogram-per-cubic-meter{"mass-density"}\r
-        kilogram-per-kilogram{"mass-fraction"}\r
-        kilogram-per-meter-square-second{"pressure"}\r
-        kilogram-per-square-meter-square-second{"pressure-per-length"}\r
-        kilogram-per-square-second-ampere{"magnetic-induction"}\r
-        kilogram-square-meter-per-cubic-second{"power"}\r
-        kilogram-square-meter-per-cubic-second-ampere{"voltage"}\r
-        kilogram-square-meter-per-cubic-second-square-ampere{"electric-resistance"}\r
-        kilogram-square-meter-per-square-second{"energy"}\r
-        kilogram-square-meter-per-square-second-ampere{"magnetic-flux"}\r
-        kilogram-square-meter-per-square-second-square-ampere{"electric-inductance"}\r
-        meter{"length"}\r
-        meter-per-second{"speed"}\r
-        meter-per-square-second{"acceleration"}\r
-        pixel{"graphics"}\r
-        pixel-per-meter{"resolution"}\r
-        portion{"portion"}\r
-        pow4-second-square-ampere-per-kilogram-square-meter{"electric-capacitance"}\r
-        revolution{"angle"}\r
-        revolution-per-meter{"wave-number"}\r
-        revolution-per-second{"frequency"}\r
-        second{"duration"}\r
-        second-ampere{"electric-charge"}\r
-        square-meter{"area"}\r
-        square-meter-per-square-second{"dose"}\r
-        square-revolution{"solid-angle"}\r
-        year{"year-duration"}\r
+        {\r
+            candela{"luminous-intensity"}\r
+        }\r
+        {\r
+            candela-per-square-meter{"illuminance"}\r
+        }\r
+        {\r
+            candela-square-meter-per-square-meter{"luminous-flux"}\r
+        }\r
+        {\r
+            kilogram{"mass"}\r
+        }\r
+        {\r
+            kilogram-per-kilogram{"mass-fraction"}\r
+        }\r
+        {\r
+            kilogram-per-cubic-meter{"mass-density"}\r
+        }\r
+        {\r
+            kilogram-per-meter-square-second{"pressure"}\r
+        }\r
+        {\r
+            kilogram-per-square-second-ampere{"magnetic-induction"}\r
+        }\r
+        {\r
+            kilogram-meter-per-square-second{"force"}\r
+        }\r
+        {\r
+            kilogram-square-meter-per-cubic-second{"power"}\r
+        }\r
+        {\r
+            kilogram-square-meter-per-cubic-second-ampere{"voltage"}\r
+        }\r
+        {\r
+            kilogram-square-meter-per-cubic-second-square-ampere{"electric-resistance"}\r
+        }\r
+        {\r
+            kilogram-square-meter-per-square-second{"energy"}\r
+        }\r
+        {\r
+            kilogram-square-meter-per-square-second-ampere{"magnetic-flux"}\r
+        }\r
+        {\r
+            kilogram-square-meter-per-square-second-square-ampere{"electric-inductance"}\r
+        }\r
+        {\r
+            cubic-meter{"volume"}\r
+        }\r
+        {\r
+            cubic-meter-per-kilogram{"specific-volume"}\r
+        }\r
+        {\r
+            cubic-meter-per-meter{"consumption"}\r
+        }\r
+        {\r
+            square-meter{"area"}\r
+        }\r
+        {\r
+            square-meter-per-square-second{"dose"}\r
+        }\r
+        {\r
+            meter{"length"}\r
+        }\r
+        {\r
+            meter-per-second{"speed"}\r
+        }\r
+        {\r
+            meter-per-square-second{"acceleration"}\r
+        }\r
+        {\r
+            kilogram-per-square-meter-square-second{"pressure-per-length"}\r
+        }\r
+        {\r
+            pow4-second-square-ampere-per-kilogram-square-meter{"electric-capacitance"}\r
+        }\r
+        {\r
+            cubic-second-square-ampere-per-kilogram-square-meter{"electric-conductance"}\r
+        }\r
+        {\r
+            second{"duration"}\r
+        }\r
+        {\r
+            second-ampere{"electric-charge"}\r
+        }\r
+        {\r
+            year{"year-duration"}\r
+        }\r
+        {\r
+            ampere{"electric-current"}\r
+        }\r
+        {\r
+            ampere-per-square-meter{"current-density"}\r
+        }\r
+        {\r
+            ampere-per-meter{"magnetic-field-strength"}\r
+        }\r
+        {\r
+            kelvin{"temperature"}\r
+        }\r
+        {\r
+            square-revolution{"solid-angle"}\r
+        }\r
+        {\r
+            revolution{"angle"}\r
+        }\r
+        {\r
+            revolution-per-meter{"wave-number"}\r
+        }\r
+        {\r
+            revolution-per-second{"frequency"}\r
+        }\r
+        {\r
+            item{"substance-amount"}\r
+        }\r
+        {\r
+            item-per-kilogram{"concentration-mass"}\r
+        }\r
+        {\r
+            item-per-cubic-meter{"concentration"}\r
+        }\r
+        {\r
+            portion{"portion"}\r
+        }\r
+        {\r
+            bit{"digital"}\r
+        }\r
+        {\r
+            pixel{"graphics"}\r
+        }\r
+        {\r
+            pixel-per-meter{"resolution"}\r
+        }\r
+        {\r
+            em{"typewidth"}\r
+        }\r
     }\r
 }\r
index 717f173..b1bc4e0 100644 (file)
@@ -213,7 +213,6 @@ windowsZones:table(nofallback){
             KM{"Indian/Comoro"}\r
             MG{"Indian/Antananarivo"}\r
             SO{"Africa/Mogadishu"}\r
-            SS{"Africa/Juba"}\r
             TZ{"Africa/Dar_es_Salaam"}\r
             UG{"Africa/Kampala"}\r
             YT{"Indian/Mayotte"}\r
@@ -305,6 +304,7 @@ windowsZones:table(nofallback){
             BF{"Africa/Ouagadougou"}\r
             CI{"Africa/Abidjan"}\r
             GH{"Africa/Accra"}\r
+            GL{"America/Danmarkshavn"}\r
             GM{"Africa/Banjul"}\r
             GN{"Africa/Conakry"}\r
             GW{"Africa/Bissau"}\r
@@ -610,6 +610,7 @@ windowsZones:table(nofallback){
             MW{"Africa/Blantyre"}\r
             MZ{"Africa/Maputo"}\r
             RW{"Africa/Kigali"}\r
+            SS{"Africa/Juba"}\r
             SZ{"Africa/Mbabane"}\r
             ZA{"Africa/Johannesburg"}\r
             ZM{"Africa/Lusaka"}\r
@@ -674,14 +675,14 @@ windowsZones:table(nofallback){
         }\r
         "US Mountain Standard Time"{\r
             001{"America/Phoenix"}\r
+            CA{"America/Creston America/Dawson_Creek America/Fort_Nelson"}\r
             MX{"America/Hermosillo"}\r
             US{"America/Phoenix"}\r
             ZZ{"Etc/GMT+7"}\r
         }\r
         "UTC"{\r
-            001{"Etc/GMT"}\r
-            GL{"America/Danmarkshavn"}\r
-            ZZ{"Etc/GMT Etc/UTC"}\r
+            001{"Etc/UTC"}\r
+            ZZ{"Etc/UTC Etc/GMT"}\r
         }\r
         "UTC+12"{\r
             001{"Etc/GMT-12"}\r
@@ -812,10 +813,7 @@ windowsZones:table(nofallback){
         }\r
         "Yukon Standard Time"{\r
             001{"America/Whitehorse"}\r
-            CA{\r
-                "America/Whitehorse America/Creston America/Dawson America/Dawson_Cre"\r
-                "ek America/Fort_Nelson"\r
-            }\r
+            CA{"America/Whitehorse America/Dawson"}\r
         }\r
     }\r
 }\r
index 93a6fe3..94f4b0d 100644 (file)
@@ -3,17 +3,17 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 //---------------------------------------------------------\r
 // Build tool:  tz2icu\r
-// Build date:  Wed Oct 21 21:13:50 2020\r
+// Build date:  Tue Jan 26 10:05:10 2021\r
 // tz database: ftp://ftp.iana.org/tz/\r
-// tz version:  2020d\r
-// ICU version: 68.1\r
+// tz version:  2021a\r
+// ICU version: 68.2\r
 //---------------------------------------------------------\r
 // >> !!! >>   THIS IS A MACHINE-GENERATED FILE   << !!! <<\r
 // >> !!! >>>            DO NOT EDIT             <<< !!! <<\r
 //---------------------------------------------------------\r
 \r
 zoneinfo64:table(nofallback) {\r
- TZVersion { "2020d" }\r
+ TZVersion { "2021a" }\r
  Zones:array { \r
   /* ACT */ :int { 356 } //Z#0\r
   /* AET */ :int { 368 } //Z#1\r
@@ -27,9 +27,9 @@ zoneinfo64:table(nofallback) {
     links:intvector { 5, 11, 13, 21, 22, 27, 38, 51, 52, 55, 348 }\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
-    typeOffsets:intvector { -52, 0, 0, 0, 0, 1200 }\r
-    typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
+    trans:intvector { -1709337548, -1581206400, -1577917200, -1556834400, -1546294800, -1525298400, -1514758800, -1493762400, -1483222800, -1462226400, -1451686800, -1430604000, -1420064400, -1399068000, -1388528400, -1367532000, -1356992400, -1335996000, -1325456400, -1304373600, -1293834000, -1272837600, -1262298000, -1241301600, -1230762000, -1209765600, -1199226000, -1178143200, -1167603600, -1146607200, -1136067600, -1115071200, -1104531600, -1083535200, -1072995600, -1051912800, -1041373200, -1020376800, -1009837200, -988840800, -978301200, -957304800, -946765200, -936309600, -915142800, -904773600, -883606800, -880329600, -756952200, -610149600, -599610600, -578613600, -568074600, -546991200, -536452200, -515455200, -504916200, -483919200, -473380200, -452383200, -441844200 }\r
+    typeOffsets:intvector { -52, 0, 0, 0, 0, 1200, 0, 1800, 1800, 0 }\r
+    typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010401030103010301030103010301" }\r
   } //Z#6\r
   /* Africa/Addis_Ababa */ :int { 48 } //Z#7\r
   /* Africa/Algiers */ :table {\r
@@ -95,9 +95,9 @@ zoneinfo64:table(nofallback) {
     links:intvector { 30, 44, 45 }\r
   } //Z#30\r
   /* Africa/Juba */ :table {\r
-    trans:intvector { -1230775588, 10360800, 24786000, 41810400, 56322000, 73432800, 87944400, 104882400, 119480400, 136332000, 151016400, 167781600, 182552400, 199231200, 214174800, 230680800, 245710800, 262735200, 277246800, 294184800, 308782800, 325634400, 340405200, 357084000, 371941200, 388533600, 403477200, 419983200, 435013200, 452037600, 466635600, 483487200, 498171600, 947930400 }\r
+    trans:intvector { -1230775588, 10360800, 24786000, 41810400, 56322000, 73432800, 87944400, 104882400, 119480400, 136332000, 151016400, 167781600, 182552400, 199231200, 214174800, 230680800, 245710800, 262735200, 277246800, 294184800, 308782800, 325634400, 340405200, 357084000, 371941200, 388533600, 403477200, 419983200, 435013200, 452037600, 466635600, 483487200, 498171600, 947930400, 1612126800 }\r
     typeOffsets:intvector { 7588, 0, 7200, 0, 7200, 3600, 10800, 0 }\r
-    typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020103" }\r
+    typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010301" }\r
   } //Z#31\r
   /* Africa/Kampala */ :int { 48 } //Z#32\r
   /* Africa/Khartoum */ :table {\r
@@ -108,9 +108,9 @@ zoneinfo64:table(nofallback) {
   /* Africa/Kigali */ :int { 43 } //Z#34\r
   /* Africa/Kinshasa */ :int { 36 } //Z#35\r
   /* Africa/Lagos */ :table {\r
-    trans:intvector { -1588464816 }\r
-    typeOffsets:intvector { 816, 0, 3600, 0 }\r
-    typeMap:bin { "01" }\r
+    trans:intvector { -2035584815, -1940889600, -1767226415, -1588465800 }\r
+    typeOffsets:intvector { 815, 0, 0, 0, 1800, 0, 3600, 0 }\r
+    typeMap:bin { "01000203" }\r
     links:intvector { 12, 16, 25, 35, 36, 37, 39, 42, 50, 53 }\r
   } //Z#36\r
   /* Africa/Libreville */ :int { 36 } //Z#37\r
@@ -134,9 +134,9 @@ zoneinfo64:table(nofallback) {
     typeMap:bin { "0102" }\r
   } //Z#47\r
   /* Africa/Nairobi */ :table {\r
-    trans:intvector { -1309746436, -1262314800, -946780200, -315629100 }\r
+    trans:intvector { -1946168836, -1309746600, -1261969200, -1041388200, -865305900 }\r
     typeOffsets:intvector { 8836, 0, 9000, 0, 9900, 0, 10800, 0 }\r
-    typeMap:bin { "03010203" }\r
+    typeMap:bin { "0103010203" }\r
     links:intvector { 7, 9, 10, 23, 24, 32, 46, 48, 397, 516, 520, 525 }\r
   } //Z#48\r
   /* Africa/Ndjamena */ :table {\r
@@ -318,9 +318,9 @@ zoneinfo64:table(nofallback) {
     typeMap:bin { "0102010201020102010201020102010201020102010201020102010201" }\r
   } //Z#84\r
   /* America/Belize */ :table {\r
-    trans:intvector { -1822500432, -1616954400, -1606069800, -1585504800, -1574015400, -1554055200, -1542565800, -1522605600, -1511116200, -1490551200, -1479666600, -1459101600, -1448217000, -1427652000, -1416162600, -1396202400, -1384713000, -1364752800, -1353263400, -1333303200, -1321813800, -1301248800, -1290364200, -1269799200, -1258914600, -1238349600, -1226860200, -1206900000, -1195410600, -1175450400, -1163961000, -1143396000, -1132511400, -1111946400, -1101061800, -1080496800, -1069612200, -1049047200, -1037557800, -1017597600, -1006108200, -986148000, -974658600, -954093600, -943209000, -922644000, -911759400, -891194400, -879705000, -859744800, -848255400, 123919200, 129618000, 409039200, 413874000 }\r
+    trans:intvector { -1822500432, -1616954400, -1606069800, -1585504800, -1574015400, -1554055200, -1542565800, -1522605600, -1511116200, -1490551200, -1479666600, -1459101600, -1448217000, -1427652000, -1416162600, -1396202400, -1384713000, -1364752800, -1353263400, -1333303200, -1321813800, -1301248800, -1290364200, -1269799200, -1258914600, -1238349600, -1226860200, -1206900000, -1195410600, -1175450400, -1163961000, -1143396000, -1132511400, -1111946400, -1101061800, -1080496800, -1069612200, -1049047200, -1037557800, -1017597600, -1006108200, -986148000, -974658600, -954093600, -943209000, -922644000, -911759400, -891194400, -879705000, -868212000, -758746800, -701892000, -690402600, -670442400, -658953000, -638992800, -627503400, -606938400, -596053800, -575488800, -564604200, -544039200, -532549800, -512589600, -501100200, -481140000, -469650600, -449690400, -438201000, -417636000, -406751400, -386186400, -375301800, -354736800, -343247400, -323287200, -311797800, -291837600, -280348200, -259783200, -248898600, -228333600, -217449000, -196884000, -185999400, -165434400, -153945000, -133984800, -122495400, -102535200, -91045800, -70480800, -59596200, 123919200, 129618000, 409039200, 413874000 }\r
     typeOffsets:intvector { -21168, 0, -21600, 0, -21600, 1800, -21600, 3600 }\r
-    typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103010301" }\r
+    typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201030102010201020102010201020102010201020102010201020102010201020102010201020102010201020103010301" }\r
   } //Z#85\r
   /* America/Blanc-Sablon */ :table {\r
     transPre32:intvector { -1, 1581070604 }\r
@@ -510,9 +510,9 @@ zoneinfo64:table(nofallback) {
   } //Z#121\r
   /* America/Grand_Turk */ :table {\r
     transPre32:intvector { -1, 1770462768 }\r
-    trans:intvector { -1827687170, 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, 1205046000, 1225605600, 1236495600, 1257055200, 1268550000, 1289109600, 1299999600, 1320559200, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1446357600, 1520751600, 1541311200 }\r
+    trans:intvector { -1827687170, 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, 1205046000, 1225605600, 1236495600, 1257055200, 1268550000, 1289109600, 1299999600, 1320559200, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1520751600, 1541311200 }\r
     typeOffsets:intvector { -17072, 0, -18430, 0, -18000, 0, -18000, 3600, -14400, 0 }\r
-    typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203040302" }\r
+    typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302040302" }\r
     finalRule { "US" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2019 }\r
@@ -819,9 +819,9 @@ zoneinfo64:table(nofallback) {
   /* America/Montreal */ :int { 218 } //Z#170\r
   /* America/Montserrat */ :int { 187 } //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
+    trans:intvector { -1825095030, -873140400, -788904000, -786222000, -763848000, -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
     typeOffsets:intvector { -18570, 0, -18000, 0, -18000, 3600 }\r
-    typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
+    typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
     finalRule { "US" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
@@ -1176,7 +1176,7 @@ zoneinfo64:table(nofallback) {
   } //Z#228\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, 1301760000, 1317484800 }\r
+    trans:intvector { -1680508800, -1665388800, -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, 1301760000, 1317484800 }\r
     typeOffsets:intvector { 0, 0, 36000, 0, 36000, 3600 }\r
     typeMap:bin { "0102010001020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }\r
     finalRule { "AT" }\r
@@ -1363,9 +1363,9 @@ zoneinfo64:table(nofallback) {
   } //Z#268\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, 334015200, 337644000, 452556000, 462232800, 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, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400 }\r
+    trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -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, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 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, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400 }\r
     typeOffsets:intvector { 8272, 0, 7200, 0, 7200, 3600 }\r
-    typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
+    typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
     finalRule { "Palestine" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2021 }\r
@@ -1373,9 +1373,9 @@ zoneinfo64:table(nofallback) {
   /* Asia/Harbin */ :int { 315 } //Z#270\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, 334015200, 337644000, 452556000, 462232800, 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, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400 }\r
+    trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -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, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 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, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400 }\r
     typeOffsets:intvector { 8423, 0, 7200, 0, 7200, 3600 }\r
-    typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
+    typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
     finalRule { "Palestine" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2021 }\r
@@ -1415,9 +1415,9 @@ zoneinfo64:table(nofallback) {
   } //Z#278\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, 334015200, 337644000, 452556000, 462232800, 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
+    trans:intvector { -1641003640, -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -681955200, -673228800, -667958400, -652320000, -636422400, -622080000, -608947200, -591840000, -572486400, -558576000, -542851200, -527731200, -514425600, -490838400, -482976000, -459388800, -451526400, -428544000, -418262400, -400118400, -387417600, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 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
     typeOffsets:intvector { 8454, 0, 7200, 0, 7200, 3600, 7200, 7200, 8440, 0 }\r
-    typeMap:bin { "040102010201020102010201030201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
+    typeMap:bin { "0401020102010201020102010201030201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
     finalRule { "Zion" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2014 }\r
@@ -1704,9 +1704,9 @@ zoneinfo64:table(nofallback) {
     finalYear:int { 1997 }\r
   } //Z#338\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
-    typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
+    trans:intvector { -1664307642, -1648932042, -1632080442, -1618692042, -1262281242, -882727200, -858538800, -845229600, -825879600, -814384800, -793825200, -782935200, -762375600, -713988000, -703710000, -681933600, -672865200, -650484000, -641415600, -618429600, -609966000, -586980000, -578516400, -555530400, -546462000, -429127200, -415825200, 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, -15558, 3600, -14400, 0, -14400, 3600 }\r
+    typeMap:bin { "0100010002030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
     finalRule { "US" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 2008 }\r
@@ -1763,7 +1763,7 @@ zoneinfo64:table(nofallback) {
   /* Australia/ACT */ :int { 368 } //Z#350\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
+    trans:intvector { -1672558200, -1665387000, -883639800, -876123000, -860398200, -844673400, -828343800, -813223800, 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
     typeOffsets:intvector { 33260, 0, 32400, 0, 34200, 0, 34200, 3600 }\r
     typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203" }\r
     finalRule { "AS" }\r
@@ -1773,14 +1773,14 @@ zoneinfo64:table(nofallback) {
   } //Z#351\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
+    trans:intvector { -1672560000, -1665388800, -883641600, -876124800, -860400000, -844675200, -828345600, -813225600, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200 }\r
     typeOffsets:intvector { 36728, 0, 36000, 0, 36000, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201" }\r
     links:intvector { 352, 366 }\r
   } //Z#352\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
+    trans:intvector { -1672558200, -1665387000, -883639800, -876123000, -860398200, -844673400, -828343800, -813223800, 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
     typeOffsets:intvector { 33948, 0, 32400, 0, 34200, 0, 34200, 3600, 36000, 0 }\r
     typeMap:bin { "0401020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203" }\r
     finalRule { "AS" }\r
@@ -1789,42 +1789,34 @@ zoneinfo64:table(nofallback) {
     links:intvector { 353, 372 }\r
   } //Z#353\r
   /* Australia/Canberra */ :int { 368 } //Z#354\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
-    typeOffsets:intvector { 34528, 0, 36000, 0, 36000, 3600 }\r
-    typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }\r
-    finalRule { "AT" }\r
-    finalRaw:int { 36000 }\r
-    finalYear:int { 2009 }\r
-  } //Z#355\r
+  /* Australia/Currie */ :int { 358 } //Z#355\r
   /* Australia/Darwin */ :table {\r
     transPre32:intvector { -1, 1930859096, -1, 2064778096 }\r
-    trans:intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400 }\r
+    trans:intvector { -1672558200, -1665387000, -883639800, -876123000, -860398200, -844673400, -828343800, -813223800 }\r
     typeOffsets:intvector { 31400, 0, 32400, 0, 34200, 0, 34200, 3600 }\r
     typeMap:bin { "01020302030203020302" }\r
     links:intvector { 0, 356, 364 }\r
   } //Z#356\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
+    trans:intvector { -1672555500, -1665384300, -883637100, -876120300, -860395500, -844670700, 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#357\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
+    trans:intvector { -1680508800, -1665388800, -1646640000, -1635753600, -1615190400, -1604304000, -883641600, -876124800, -860400000, -844675200, -828345600, -813225600, -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
     typeOffsets:intvector { 35356, 0, 36000, 0, 36000, 3600 }\r
-    typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }\r
+    typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }\r
     finalRule { "AT" }\r
     finalRaw:int { 36000 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 358, 369 }\r
+    links:intvector { 355, 358, 369 }\r
   } //Z#358\r
   /* Australia/LHI */ :int { 361 } //Z#359\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
+    trans:intvector { -1672560000, -1665388800, -883641600, -876124800, -860400000, -844675200, -828345600, -813225600, 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#360\r
@@ -1840,7 +1832,7 @@ zoneinfo64:table(nofallback) {
   } //Z#361\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
+    trans:intvector { -1672560000, -1665388800, -883641600, -876124800, -860400000, -844675200, -828345600, -813225600, 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
     typeOffsets:intvector { 34792, 0, 36000, 0, 36000, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }\r
     finalRule { "AV" }\r
@@ -1852,7 +1844,7 @@ zoneinfo64:table(nofallback) {
   /* Australia/North */ :int { 356 } //Z#364\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
+    trans:intvector { -1672552800, -1665381600, -883634400, -876117600, -860392800, -844668000, 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 { 365, 371 }\r
@@ -1861,7 +1853,7 @@ zoneinfo64:table(nofallback) {
   /* Australia/South */ :int { 351 } //Z#367\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
+    trans:intvector { -1672560000, -1665388800, -883641600, -876124800, -860400000, -844675200, -828345600, -813225600, 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
     typeOffsets:intvector { 36292, 0, 36000, 0, 36000, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }\r
     finalRule { "AN" }\r
@@ -2390,9 +2382,9 @@ zoneinfo64:table(nofallback) {
     finalYear:int { 2004 }\r
   } //Z#497\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, 1540681200 }\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, 1540681200, 1609020000 }\r
     typeOffsets:intvector { 10660, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
-    typeMap:bin { "01030403040304030403040304030403020102010201030201020102010201020102010201020102010201020102010201020102010201020102010201030103" }\r
+    typeMap:bin { "0103040304030403040304030403040302010201020103020102010201020102010201020102010201020102010201020102010201020102010201020103010301" }\r
   } //Z#498\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
@@ -2463,7 +2455,7 @@ zoneinfo64:table(nofallback) {
     typeMap:bin { "01" }\r
   } //Z#521\r
   /* Indian/Mahe */ :table {\r
-    trans:intvector { -2006653308 }\r
+    trans:intvector { -1988163708 }\r
     typeOffsets:intvector { 13308, 0, 14400, 0 }\r
     typeMap:bin { "01" }\r
   } //Z#522\r
@@ -2584,9 +2576,9 @@ zoneinfo64:table(nofallback) {
     links:intvector { 395, 557 }\r
   } //Z#557\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
+    trans:intvector { -1829387596, 125409600, 133876800, 433256400, 448977600, 464706000, 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
+    typeMap:bin { "0102010201020102010201020102010201020102010201" }\r
   } //Z#558\r
   /* Pacific/Enderbury */ :table {\r
     transPre32:intvector { -1, 2117555556 }\r
index 829ae92..0980b0f 100644 (file)
@@ -3,12 +3,11 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 \r
 {\r
-    "cldrVersion": "38.1",\r
+    "cldrVersion": "39",\r
     "aliases": {\r
         "ars": "ar_SA",\r
         "in": "id",\r
         "iw": "he",\r
-        "no": "nb",\r
         "sh": "sr_Latn",\r
         "zh_HK": "zh_Hant_HK",\r
         "zh_Hant_HK": "yue",\r
@@ -26,6 +25,8 @@
         "es_PR": "es_419",\r
         "es_SV": "es_419",\r
         "es_US": "es_419",\r
+        "nb": "no",\r
+        "nn": "no",\r
         "sr_Latn": "root",\r
         "yue_Hans": "root",\r
         "zh_Hant": "root"\r
index 8866483..3a6c83b 100644 (file)
@@ -10,8 +10,8 @@ de{
             "-x: minus >>;",\r
             "x.x: =0.0=;",\r
             "0: =%spellout-numbering=;",\r
-            "1100/100: <%spellout-cardinal-masculine<\u00ADhundert[\u00AD>>];",\r
-            "10000: =%spellout-numbering=;",\r
+            "1100/100: <<\u00ADhundert[\u00AD>>];",\r
+            "2000: =%spellout-numbering=;",\r
             "%spellout-numbering:",\r
             "-x: minus >>;",\r
             "x.x: << Komma >>;",\r
@@ -138,6 +138,23 @@ de{
             "1000000000000000: eine Billiarde[ >>];",\r
             "2000000000000000: <%spellout-cardinal-feminine< Billiarden[ >>];",\r
             "1000000000000000000: =#,##0=;",\r
+            "%spellout-cardinal-m:",\r
+            "-x: minus >>;",\r
+            "x.x: << Komma >>;",\r
+            "0: null;",\r
+            "1: einem;",\r
+            "2: =%spellout-numbering=;",\r
+            "100: <%spellout-cardinal-masculine<\u00ADhundert[\u00AD>>];",\r
+            "1000: <%spellout-cardinal-masculine<\u00ADtausend[\u00AD>>];",\r
+            "1000000: eine Million[ >>];",\r
+            "2000000: <%spellout-cardinal-feminine< Millionen[ >>];",\r
+            "1000000000: eine Milliarde[ >>];",\r
+            "2000000000: <%spellout-cardinal-feminine< Milliarden[ >>];",\r
+            "1000000000000: eine Billion[ >>];",\r
+            "2000000000000: <%spellout-cardinal-feminine< Billionen[ >>];",\r
+            "1000000000000000: eine Billiarde[ >>];",\r
+            "2000000000000000: <%spellout-cardinal-feminine< Billiarden[ >>];",\r
+            "1000000000000000000: =#,##0=;",\r
             "%%ste:",\r
             "0: ste;",\r
             "1: \u00AD=%spellout-ordinal=;",\r
@@ -181,6 +198,10 @@ de{
             "-x: minus >>;",\r
             "x.x: =#,##0.#=;",\r
             "0: =%spellout-ordinal=s;",\r
+            "%spellout-ordinal-m:",\r
+            "-x: minus >>;",\r
+            "x.x: =#,##0.#=;",\r
+            "0: =%spellout-ordinal=m;",\r
         }\r
     }\r
 }\r
index d70b5ab..c60987c 100644 (file)
@@ -8,8 +8,8 @@ de_CH{
             "-x: minus >>;",\r
             "x.x: =0.0=;",\r
             "0: =%spellout-numbering=;",\r
-            "1100/100: <%spellout-cardinal-masculine<\u00ADhundert[\u00AD>>];",\r
-            "10000: =%spellout-numbering=;",\r
+            "1100/100: <<\u00ADhundert[\u00AD>>];",\r
+            "2000: =%spellout-numbering=;",\r
             "%spellout-numbering:",\r
             "-x: minus >>;",\r
             "x.x: << Komma >>;",\r
@@ -136,6 +136,23 @@ de_CH{
             "1000000000000000: eine Billiarde[ >>];",\r
             "2000000000000000: <%spellout-cardinal-feminine< Billiarden[ >>];",\r
             "1000000000000000000: =#,##0=;",\r
+            "%spellout-cardinal-m:",\r
+            "-x: minus >>;",\r
+            "x.x: << Komma >>;",\r
+            "0: null;",\r
+            "1: einem;",\r
+            "2: =%spellout-numbering=;",\r
+            "100: <%spellout-cardinal-masculine<\u00ADhundert[\u00AD>>];",\r
+            "1000: <%spellout-cardinal-masculine<\u00ADtausend[\u00AD>>];",\r
+            "1000000: eine Million[ >>];",\r
+            "2000000: <%spellout-cardinal-feminine< Millionen[ >>];",\r
+            "1000000000: eine Milliarde[ >>];",\r
+            "2000000000: <%spellout-cardinal-feminine< Milliarden[ >>];",\r
+            "1000000000000: eine Billion[ >>];",\r
+            "2000000000000: <%spellout-cardinal-feminine< Billionen[ >>];",\r
+            "1000000000000000: eine Billiarde[ >>];",\r
+            "2000000000000000: <%spellout-cardinal-feminine< Billiarden[ >>];",\r
+            "1000000000000000000: =#,##0=;",\r
             "%%ste:",\r
             "0: ste;",\r
             "1: \u00AD=%spellout-ordinal=;",\r
@@ -179,6 +196,10 @@ de_CH{
             "-x: minus >>;",\r
             "x.x: =#,##0.#=;",\r
             "0: =%spellout-ordinal=s;",\r
+            "%spellout-ordinal-m:",\r
+            "-x: minus >>;",\r
+            "x.x: =#,##0.#=;",\r
+            "0: =%spellout-ordinal=m;",\r
         }\r
     }\r
 }\r
index 9062674..1a8249b 100644 (file)
@@ -307,6 +307,30 @@ fi{
             "1000000000000: << biljoonalle[ >>];",\r
             "2000000000000: << biljoonalle[ >>];",\r
             "1000000000000000000: =#,##0=;",\r
+            "%spellout-cardinal-plural:",\r
+            "-x: miinus >>;",\r
+            "x.x: << pilkku >>;",\r
+            "0: nollat;",\r
+            "1: yhdet;",\r
+            "2: kahdet;",\r
+            "3: kolmet;",\r
+            "4: nelj\u00E4t;",\r
+            "5: viidet;",\r
+            "6: kuudet;",\r
+            "7: seitsem\u00E4t;",\r
+            "8: kahdeksat;",\r
+            "9: yhdeks\u00E4t;",\r
+            "10: kymmenet;",\r
+            "11: >>toista;",\r
+            "20: <<-kymmenet[\u00AD>>];",\r
+            "100: sadat[\u00AD>>];",\r
+            "200: <<-sadat[\u00AD>>];",\r
+            "1000: tuhannet[\u00AD>>];",\r
+            "2000: <<\u00ADtuhannet[\u00AD>>];",\r
+            "1000000: << miljoonat[ >>];",\r
+            "1000000000: << miljardit[ >>];",\r
+            "1000000000000: << biljoonat[ >>];",\r
+            "1000000000000000000: =#,##0=;",\r
             "%spellout-cardinal-genitive-plural:",\r
             "-x: miinus >>;",\r
             "x.x: << pilkku >>;",\r
@@ -940,6 +964,39 @@ fi{
             "1000000000000: biljoonannelle[ >>];",\r
             "2000000000000: <%%spellout-ordinal-allative-larger<\u00ADbiljoonannelle[ >>];",\r
             "1000000000000000000: =#,##0=;",\r
+            "%%spellout-ordinal-plural-larger:",\r
+            "0: ;",\r
+            "2: kahdennet;",\r
+            "3: =%spellout-ordinal-plural=;",\r
+            "%spellout-ordinal-plural:",\r
+            "-x: miinus >>;",\r
+            "x.x: =#,##0.#=;",\r
+            "0: nollannet;",\r
+            "1: ensimm\u00E4iset;",\r
+            "2: toiset;",\r
+            "3: kolmannet;",\r
+            "4: nelj\u00E4nnet;",\r
+            "5: viidennet;",\r
+            "6: kuudennet;",\r
+            "7: seitsem\u00E4nnet;",\r
+            "8: kahdeksannet;",\r
+            "9: yhdeks\u00E4nnet;",\r
+            "10: kymmenennet;",\r
+            "11: yhdennettoista;",\r
+            "12: kahdennettoista;",\r
+            "13: >>toista;",\r
+            "20: <%%spellout-ordinal-plural-larger<\u00ADkymmenennet[\u00AD>>];",\r
+            "100: sadannet[\u00AD>>];",\r
+            "200: <%%spellout-ordinal-plural-larger<\u00ADsadannet[\u00AD>>];",\r
+            "1000: tuhannennet[\u00AD>>];",\r
+            "2000: <%%spellout-ordinal-plural-larger<\u00ADtuhannennet[\u00AD>>];",\r
+            "1000000: miljoonannet[\u00AD>>];",\r
+            "2000000: <%%spellout-ordinal-plural-larger<\u00ADmiljoonannet[\u00AD>>];",\r
+            "1000000000: miljardinnet[\u00AD>>];",\r
+            "2000000000: <%%spellout-ordinal-plural-larger<\u00ADmiljardinnet[\u00AD>>];",\r
+            "1000000000000: biljoonannet[ >>];",\r
+            "2000000000000: <%%spellout-ordinal-plural-larger<\u00ADbiljoonannet[ >>];",\r
+            "1000000000000000000: =#,##0=;",\r
             "%%spellout-ordinal-genitive-plural-larger:",\r
             "0: ;",\r
             "2: kahdensien;",\r
index 50e7b4d..701f056 100644 (file)
@@ -27,7 +27,7 @@ fr{
             "x.x: =0.0=;",\r
             "0: =%spellout-numbering=;",\r
             "1100/100: <%spellout-cardinal-masculine<-cent>%%cents-m>;",\r
-            "10000: =%spellout-numbering=;",\r
+            "2000: =%spellout-numbering=;",\r
             "%spellout-numbering:",\r
             "0: =%spellout-cardinal-masculine=;",\r
             "%%et-un:",\r
index ce1920e..b457109 100644 (file)
@@ -11,7 +11,7 @@ fr_BE{
             "x.x: =0.0=;",\r
             "0: =%spellout-numbering=;",\r
             "1100/100: <%spellout-cardinal-masculine<-cent>%%cents-m>;",\r
-            "10000: =%spellout-numbering=;",\r
+            "2000: =%spellout-numbering=;",\r
             "%spellout-numbering:",\r
             "0: =%spellout-cardinal-masculine=;",\r
             "%%et-un:",\r
index 15cd3cd..461ccc4 100644 (file)
@@ -11,7 +11,7 @@ fr_CH{
             "x.x: =0.0=;",\r
             "0: =%spellout-numbering=;",\r
             "1100/100: <%spellout-cardinal-masculine<-cent>%%cents-m>;",\r
-            "10000: =%spellout-numbering=;",\r
+            "2000: =%spellout-numbering=;",\r
             "%spellout-numbering:",\r
             "0: =%spellout-cardinal-masculine=;",\r
             "%%et-un:",\r
index 329e511..1c82463 100644 (file)
@@ -152,7 +152,7 @@ it{
             "200: <<\u00ADcent>%%msc-with-o-nofinal>;",\r
             "%%msc-with-i-nofinal:",\r
             "0: =%%msc-with-i=;",\r
-            "3: a\u00ADtre;",\r
+            "3: i\u00ADtre;",\r
             "4: =%%msc-with-i=;",\r
             "%%msc-with-a-nofinal:",\r
             "0: =%%msc-with-a=;",\r
index 1b78b2c..eedd825 100644 (file)
@@ -2,311 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nb{\r
-    RBNFRules{\r
-        SpelloutRules{\r
-            "%%lenient-parse:",\r
-            "&[last primary ignorable ] << ' ' << ',' << '-' << '\u00AD';",\r
-            "%spellout-numbering-year:",\r
-            "-x: minus >>;",\r
-            "x.x: =0.0=;",\r
-            "0: =%spellout-numbering=;",\r
-            "1100/100: <<\u00ADhundre[ og >>];",\r
-            "10000: =%spellout-numbering=;",\r
-            "%spellout-numbering:",\r
-            "0: =%%spellout-cardinal-reale=;",\r
-            "%spellout-cardinal-masculine:",\r
-            "0: =%%spellout-cardinal-reale=;",\r
-            "%spellout-cardinal-feminine:",\r
-            "-x: minus >>;",\r
-            "x.x: << komma >>;",\r
-            "0: null;",\r
-            "1: ei;",\r
-            "2: =%%spellout-cardinal-reale=;",\r
-            "100: hundre[ og >>];",\r
-            "200: <%spellout-cardinal-neuter< hundre[ og >>];",\r
-            "1000: tusen[ >%%and-small-f>];",\r
-            "2000: <%spellout-cardinal-neuter< tusen[ >%%and-small-f>];",\r
-            "1000000: \u00E9n million[ >>];",\r
-            "2000000: <%%spellout-cardinal-reale< millioner[ >>];",\r
-            "1000000000: \u00E9n milliard[ >>];",\r
-            "2000000000: <%%spellout-cardinal-reale< milliarder[ >>];",\r
-            "1000000000000: \u00E9n billion[ >>];",\r
-            "2000000000000: <%%spellout-cardinal-reale< billioner[ >>];",\r
-            "1000000000000000: \u00E9n billiard[ >>];",\r
-            "2000000000000000: <%%spellout-cardinal-reale< billiarder[ >>];",\r
-            "1000000000000000000: =#,##0=;",\r
-            "%%and-small-f:",\r
-            "0: og =%spellout-cardinal-feminine=;",\r
-            "100: =%spellout-cardinal-feminine=;",\r
-            "%spellout-cardinal-neuter:",\r
-            "-x: minus >>;",\r
-            "x.x: << komma >>;",\r
-            "0: null;",\r
-            "1: ett;",\r
-            "2: =%%spellout-cardinal-reale=;",\r
-            "20: tjue[\u00AD>>];",\r
-            "30: tretti[\u00AD>>];",\r
-            "40: f\u00F8rti[\u00AD>>];",\r
-            "50: femti[\u00AD>>];",\r
-            "60: seksti[\u00AD>>];",\r
-            "70: sytti[\u00AD>>];",\r
-            "80: \u00E5tti[\u00AD>>];",\r
-            "90: nitti[\u00AD>>];",\r
-            "100: hundre[ og >>];",\r
-            "200: <%spellout-cardinal-neuter< hundre[ og >>];",\r
-            "1000: tusen[ >%%and-small-n>];",\r
-            "2000: <%spellout-cardinal-neuter< tusen[ >%%and-small-n>];",\r
-            "1000000: \u00E9n million[ >>];",\r
-            "2000000: <%%spellout-cardinal-reale< millioner[ >>];",\r
-            "1000000000: \u00E9n milliard[ >>];",\r
-            "2000000000: <%%spellout-cardinal-reale< milliarder[ >>];",\r
-            "1000000000000: \u00E9n billion[ >>];",\r
-            "2000000000000: <%%spellout-cardinal-reale< billioner[ >>];",\r
-            "1000000000000000: \u00E9n billiard[ >>];",\r
-            "2000000000000000: <%%spellout-cardinal-reale< billiarder[ >>];",\r
-            "1000000000000000000: =#,##0=;",\r
-            "%%and-small-n:",\r
-            "0: og =%spellout-cardinal-neuter=;",\r
-            "100: =%spellout-cardinal-neuter=;",\r
-            "%%spellout-cardinal-reale:",\r
-            "-x: minus >>;",\r
-            "x.x: << komma >>;",\r
-            "0: null;",\r
-            "1: \u00E9n;",\r
-            "2: to;",\r
-            "3: tre;",\r
-            "4: fire;",\r
-            "5: fem;",\r
-            "6: seks;",\r
-            "7: sju;",\r
-            "8: \u00E5tte;",\r
-            "9: ni;",\r
-            "10: ti;",\r
-            "11: elleve;",\r
-            "12: tolv;",\r
-            "13: tretten;",\r
-            "14: fjorten;",\r
-            "15: femten;",\r
-            "16: seksten;",\r
-            "17: sytten;",\r
-            "18: atten;",\r
-            "19: nitten;",\r
-            "20: tjue[\u00AD>>];",\r
-            "30: tretti[\u00AD>>];",\r
-            "40: f\u00F8rti[\u00AD>>];",\r
-            "50: femti[\u00AD>>];",\r
-            "60: seksti[\u00AD>>];",\r
-            "70: sytti[\u00AD>>];",\r
-            "80: \u00E5tti[\u00AD>>];",\r
-            "90: nitti[\u00AD>>];",\r
-            "100: hundre[ og >>];",\r
-            "200: <%spellout-cardinal-neuter< hundre[ og >>];",\r
-            "1000: tusen[ >%%and-small>];",\r
-            "2000: <%spellout-cardinal-neuter< tusen[ >%%and-small>];",\r
-            "1000000: \u00E9n million[ >>];",\r
-            "2000000: << millioner[ >>];",\r
-            "1000000000: \u00E9n milliard[ >>];",\r
-            "2000000000: << milliarder[ >>];",\r
-            "1000000000000: \u00E9n billion[ >>];",\r
-            "2000000000000: << billioner[ >>];",\r
-            "1000000000000000: \u00E9n billiard[ >>];",\r
-            "2000000000000000: << billiarder[ >>];",\r
-            "1000000000000000000: =#,##0=;",\r
-            "%%and-small:",\r
-            "0: og =%%spellout-cardinal-reale=;",\r
-            "100: =%%spellout-cardinal-reale=;",\r
-            "%spellout-ordinal-masculine:",\r
-            "-x: minus >>;",\r
-            "x.x: =#,##0.#=;",\r
-            "0: nullte;",\r
-            "1: f\u00F8rste;",\r
-            "2: andre;",\r
-            "3: tredje;",\r
-            "4: fjerde;",\r
-            "5: femte;",\r
-            "6: sjette;",\r
-            "7: sjuende;",\r
-            "8: \u00E5ttende;",\r
-            "9: niende;",\r
-            "10: tiende;",\r
-            "11: ellevte;",\r
-            "12: tolvte;",\r
-            "13: =%spellout-cardinal-neuter=de;",\r
-            "20: tjue>%%ord-masc-nde>;",\r
-            "30: tretti>%%ord-masc-nde>;",\r
-            "40: f\u00F8rti>%%ord-masc-nde>;",\r
-            "50: femti>%%ord-masc-nde>;",\r
-            "60: seksti>%%ord-masc-nde>;",\r
-            "70: sytti>%%ord-masc-nde>;",\r
-            "80: \u00E5tti>%%ord-masc-nde>;",\r
-            "90: nitti>%%ord-masc-nde>;",\r
-            "100: <%spellout-numbering<\u00ADhundre>%%ord-masc-de>;",\r
-            "1000: <%spellout-numbering<\u00ADtusen>%%ord-masc-de>;",\r
-            "1000000: \u00E9n million>%%ord-masc-te>;",\r
-            "2000000: <%%spellout-cardinal-reale< million>%%ord-masc-teer>;",\r
-            "1000000000: \u00E9n milliard>%%ord-masc-te>;",\r
-            "2000000000: <%%spellout-cardinal-reale< milliard>%%ord-masc-teer>;",\r
-            "1000000000000: \u00E9n billion>%%ord-masc-te>;",\r
-            "2000000000000: <%%spellout-cardinal-reale< billion>%%ord-masc-teer>;",\r
-            "1000000000000000: \u00E9n billiard>%%ord-masc-te>;",\r
-            "2000000000000000: <%%spellout-cardinal-reale< billiard>%%ord-masc-teer>;",\r
-            "1000000000000000000: =#,##0=.;",\r
-            "%%ord-masc-nde:",\r
-            "0: ende;",\r
-            "1: \u00AD=%spellout-ordinal-masculine=;",\r
-            "%%ord-masc-de:",\r
-            "0: de;",\r
-            "1: ' =%spellout-ordinal-masculine=;",\r
-            "%%ord-masc-te:",\r
-            "0: te;",\r
-            "1: ' =%spellout-ordinal-masculine=;",\r
-            "%%ord-masc-teer:",\r
-            "0: te;",\r
-            "1: er =%spellout-ordinal-masculine=;",\r
-            "%spellout-ordinal-neuter:",\r
-            "-x: minus >>;",\r
-            "x.x: =#,##0.#=;",\r
-            "0: nullte;",\r
-            "1: f\u00F8rste;",\r
-            "2: andre;",\r
-            "3: tredje;",\r
-            "4: fjerde;",\r
-            "5: femte;",\r
-            "6: sjette;",\r
-            "7: sjuende;",\r
-            "8: \u00E5ttende;",\r
-            "9: niende;",\r
-            "10: tiende;",\r
-            "11: ellevte;",\r
-            "12: tolvte;",\r
-            "13: =%spellout-cardinal-neuter=de;",\r
-            "20: tjue>%%ord-neut-nde>;",\r
-            "30: tretti>%%ord-neut-nde>;",\r
-            "40: f\u00F8rti>%%ord-neut-nde>;",\r
-            "50: femti>%%ord-neut-nde>;",\r
-            "60: seksti>%%ord-neut-nde>;",\r
-            "70: sytti>%%ord-neut-nde>;",\r
-            "80: \u00E5tti>%%ord-neut-nde>;",\r
-            "90: nitti>%%ord-neut-nde>;",\r
-            "100: <%spellout-numbering<\u00ADhundre>%%ord-neut-de>;",\r
-            "1000: <%spellout-numbering<\u00ADtusen>%%ord-neut-de>;",\r
-            "1000000: \u00E9n million>%%ord-neut-te>;",\r
-            "2000000: <%%spellout-cardinal-reale< million>%%ord-neut-teer>;",\r
-            "1000000000: \u00E9n milliard>%%ord-neut-te>;",\r
-            "2000000000: <%%spellout-cardinal-reale< milliard>%%ord-neut-teer>;",\r
-            "1000000000000: \u00E9n billion>%%ord-neut-te>;",\r
-            "2000000000000: <%%spellout-cardinal-reale< billion>%%ord-neut-teer>;",\r
-            "1000000000000000: \u00E9n billiard>%%ord-neut-te>;",\r
-            "2000000000000000: <%%spellout-cardinal-reale< billiard>%%ord-neut-teer>;",\r
-            "1000000000000000000: =#,##0=.;",\r
-            "%%ord-neut-nde:",\r
-            "0: ende;",\r
-            "1: \u00AD=%spellout-ordinal-neuter=;",\r
-            "%%ord-neut-de:",\r
-            "0: de;",\r
-            "1: ' =%spellout-ordinal-neuter=;",\r
-            "%%ord-neut-te:",\r
-            "0: te;",\r
-            "1: ' =%spellout-ordinal-neuter=;",\r
-            "%%ord-neut-teer:",\r
-            "0: te;",\r
-            "1: er =%spellout-ordinal-neuter=;",\r
-            "%spellout-ordinal-feminine:",\r
-            "-x: minus >>;",\r
-            "x.x: =#,##0.#=;",\r
-            "0: nullte;",\r
-            "1: f\u00F8rste;",\r
-            "2: andre;",\r
-            "3: tredje;",\r
-            "4: fjerde;",\r
-            "5: femte;",\r
-            "6: sjette;",\r
-            "7: sjuende;",\r
-            "8: \u00E5ttende;",\r
-            "9: niende;",\r
-            "10: tiende;",\r
-            "11: ellevte;",\r
-            "12: tolvte;",\r
-            "13: =%spellout-cardinal-neuter=de;",\r
-            "20: tjue>%%ord-fem-nde>;",\r
-            "30: tretti>%%ord-fem-nde>;",\r
-            "40: f\u00F8rti>%%ord-fem-nde>;",\r
-            "50: femti>%%ord-fem-nde>;",\r
-            "60: seksti>%%ord-fem-nde>;",\r
-            "70: sytti>%%ord-fem-nde>;",\r
-            "80: \u00E5tti>%%ord-fem-nde>;",\r
-            "90: nitti>%%ord-fem-nde>;",\r
-            "100: <%spellout-numbering<\u00ADhundre>%%ord-fem-de>;",\r
-            "1000: <%spellout-numbering<\u00ADtusen>%%ord-fem-de>;",\r
-            "1000000: \u00E9n million>%%ord-fem-te>;",\r
-            "2000000: <%%spellout-cardinal-reale< million>%%ord-fem-teer>;",\r
-            "1000000000: \u00E9n milliard>%%ord-fem-te>;",\r
-            "2000000000: <%%spellout-cardinal-reale< milliard>%%ord-fem-teer>;",\r
-            "1000000000000: \u00E9n billion>%%ord-fem-te>;",\r
-            "2000000000000: <%%spellout-cardinal-reale< billion>%%ord-fem-teer>;",\r
-            "1000000000000000: \u00E9n billiard>%%ord-fem-te>;",\r
-            "2000000000000000: <%%spellout-cardinal-reale< billiard>%%ord-fem-teer>;",\r
-            "1000000000000000000: =#,##0=.;",\r
-            "%%ord-fem-nde:",\r
-            "0: ende;",\r
-            "1: \u00AD=%spellout-ordinal-feminine=;",\r
-            "%%ord-fem-de:",\r
-            "0: de;",\r
-            "1: ' =%spellout-ordinal-feminine=;",\r
-            "%%ord-fem-te:",\r
-            "0: te;",\r
-            "1: ' =%spellout-ordinal-feminine=;",\r
-            "%%ord-fem-teer:",\r
-            "0: te;",\r
-            "1: er =%spellout-ordinal-feminine=;",\r
-            "%spellout-ordinal-plural:",\r
-            "-x: minus >>;",\r
-            "x.x: =#,##0.#=;",\r
-            "0: nullte;",\r
-            "1: f\u00F8rste;",\r
-            "2: andre;",\r
-            "3: tredje;",\r
-            "4: fjerde;",\r
-            "5: femte;",\r
-            "6: sjette;",\r
-            "7: sjuende;",\r
-            "8: \u00E5ttende;",\r
-            "9: niende;",\r
-            "10: tiende;",\r
-            "11: ellevte;",\r
-            "12: tolvte;",\r
-            "13: =%spellout-cardinal-neuter=de;",\r
-            "20: tjue>%%ord-plural-nde>;",\r
-            "30: tretti>%%ord-plural-nde>;",\r
-            "40: f\u00F8rti>%%ord-plural-nde>;",\r
-            "50: femti>%%ord-plural-nde>;",\r
-            "60: seksti>%%ord-plural-nde>;",\r
-            "70: sytti>%%ord-plural-nde>;",\r
-            "80: \u00E5tti>%%ord-plural-nde>;",\r
-            "90: nitti>%%ord-plural-nde>;",\r
-            "100: <%spellout-numbering<\u00ADhundre>%%ord-plural-de>;",\r
-            "1000: <%spellout-numbering<\u00ADtusen>%%ord-plural-de>;",\r
-            "1000000: \u00E9n million>%%ord-plural-te>;",\r
-            "2000000: <%%spellout-cardinal-reale< million>%%ord-plural-teer>;",\r
-            "1000000000: \u00E9n milliard>%%ord-plural-te>;",\r
-            "2000000000: <%%spellout-cardinal-reale< milliard>%%ord-plural-teer>;",\r
-            "1000000000000: \u00E9n billion>%%ord-plural-te>;",\r
-            "2000000000000: <%%spellout-cardinal-reale< billion>%%ord-plural-teer>;",\r
-            "1000000000000000: \u00E9n billiard>%%ord-plural-te>;",\r
-            "2000000000000000: <%%spellout-cardinal-reale< billiard>%%ord-plural-teer>;",\r
-            "1000000000000000000: =#,##0=.;",\r
-            "%%ord-plural-nde:",\r
-            "0: ende;",\r
-            "1: \u00AD=%spellout-ordinal-plural=;",\r
-            "%%ord-plural-de:",\r
-            "0: de;",\r
-            "1: ' =%spellout-ordinal-plural=;",\r
-            "%%ord-plural-te:",\r
-            "0: te;",\r
-            "1: ' =%spellout-ordinal-plural=;",\r
-            "%%ord-plural-teer:",\r
-            "0: te;",\r
-            "1: er =%spellout-ordinal-plural=;",\r
-        }\r
-    }\r
+    %%Parent{"no"}\r
 }\r
diff --git a/source/data/rbnf/ne.txt b/source/data/rbnf/ne.txt
new file mode 100644 (file)
index 0000000..4ebfd77
--- /dev/null
@@ -0,0 +1,174 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html\r
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
+ne{\r
+    RBNFRules{\r
+        SpelloutRules{\r
+            "%spellout-numbering-year:",\r
+            "-x: \u090B\u0923\u093E\u0924\u094D\u092E\u0915 >>;",\r
+            "x.x: =#,##,##0.#=;",\r
+            "0: =%spellout-numbering=;",\r
+            "1000/100: << \u0938\u092F[ >>];",\r
+            "10000: =%spellout-numbering=;",\r
+            "%spellout-numbering:",\r
+            "-x: \u090B\u0923\u093E\u0924\u094D\u092E\u0915 >>;",\r
+            "x.x: << \u0926\u0936\u092E\u0932\u0935 >>;",\r
+            "Inf: \u0905\u0928\u0928\u094D\u0924;",\r
+            "0: \u0936\u0941\u0928\u094D\u092F;",\r
+            "1: \u090F\u0915;",\r
+            "2: \u0926\u0941\u0908;",\r
+            "3: \u0924\u093F\u0928;",\r
+            "4: \u091A\u093E\u0930;",\r
+            "5: \u092A\u093E\u0901\u091A;",\r
+            "6: \u091B;",\r
+            "7: \u0938\u093E\u0924;",\r
+            "8: \u0906\u0920;",\r
+            "9: \u0928\u094C;",\r
+            "10: \u0926\u0938;",\r
+            "11: \u090F\u0918\u093E\u0930;",\r
+            "12: \u092C\u093E\u0939\u094D\u0930;",\r
+            "13: \u0924\u0947\u0939\u094D\u0930;",\r
+            "14: \u091A\u094C\u0927;",\r
+            "15: \u092A\u0928\u094D\u0927\u094D\u0930;",\r
+            "16: \u0938\u094B\u0939\u094D\u0930;",\r
+            "17: \u0938\u0924\u094D\u0930;",\r
+            "18: \u0905\u0920\u093E\u0930;",\r
+            "19: \u0909\u0928\u094D\u0928\u093E\u0907\u0938;",\r
+            "20: \u092C\u093F\u0938;",\r
+            "21: \u090F\u0915\u094D\u0915\u093E\u0907\u0938;",\r
+            "22: \u092C\u093E\u0907\u0938;",\r
+            "23: \u0924\u0947\u0907\u0938;",\r
+            "24: \u091A\u094C\u092C\u093F\u0938;",\r
+            "25: \u092A\u091A\u094D\u091A\u093F\u0938;",\r
+            "26: \u091B\u092C\u094D\u092C\u093F\u0938;",\r
+            "27: \u0938\u0924\u094D\u0924\u093E\u0907\u0938;",\r
+            "28: \u0905\u091F\u094D\u0920\u093E\u0907\u0938;",\r
+            "29: \u0909\u0928\u0928\u094D\u0924\u093F\u0938;",\r
+            "30: \u0924\u093F\u0938;",\r
+            "31: \u090F\u0915\u0924\u093F\u0938;",\r
+            "32: \u092C\u0924\u094D\u0924\u093F\u0938;",\r
+            "33: \u0924\u0947\u0924\u094D\u0924\u093F\u0938;",\r
+            "34: \u091A\u094C\u0901\u0924\u093F\u0938;",\r
+            "35: \u092A\u0948\u0901\u0924\u093F\u0938;",\r
+            "36: \u091B\u0924\u094D\u0924\u093F\u0938;",\r
+            "37: \u0938\u0948\u0901\u0924\u093F\u0938;",\r
+            "38: \u0905\u0920\u0924\u093F\u0938;",\r
+            "39: \u0909\u0928\u0928\u094D\u091A\u093E\u0932\u093F\u0938;",\r
+            "40: \u091A\u093E\u0932\u093F\u0938;",\r
+            "41: \u090F\u0915\u091A\u093E\u0932\u093F\u0938;",\r
+            "42: \u092C\u092F\u093E\u0932\u093F\u0938;",\r
+            "43: \u0924\u094D\u0930\u093F\u091A\u093E\u0932\u093F\u0938;",\r
+            "44: \u091A\u0935\u093E\u0932\u093F\u0938;",\r
+            "45: \u092A\u0948\u0901\u0924\u093E\u0932\u093F\u0938;",\r
+            "46: \u091B\u092F\u093E\u0932\u093F\u0938;",\r
+            "47: \u0938\u0924\u091A\u093E\u0932\u093F\u0938;",\r
+            "48: \u0905\u0920\u091A\u093E\u0932\u093F\u0938;",\r
+            "49: \u0909\u0928\u0928\u094D\u091A\u093E\u0938;",\r
+            "50: \u092A\u091A\u093E\u0938;",\r
+            "51: \u090F\u0915\u093E\u0909\u0928\u094D\u0928;",\r
+            "52: \u092C\u093E\u0909\u0928\u094D\u0928;",\r
+            "53: \u0924\u094D\u0930\u093F\u092A\u0928\u094D\u0928;",\r
+            "54: \u091A\u0935\u0928\u094D\u0928;",\r
+            "55: \u092A\u091A\u092A\u0928\u094D\u0928;",\r
+            "56: \u091B\u092A\u0928\u094D\u0928;",\r
+            "57: \u0938\u0928\u094D\u0924\u093E\u0909\u0928\u094D\u0928;",\r
+            "58: \u0905\u0928\u094D\u0920\u093E\u0909\u0928\u094D\u0928;",\r
+            "59: \u0909\u0928\u0928\u094D\u0938\u093E\u0920\u0940;",\r
+            "60: \u0938\u093E\u0920\u0940;",\r
+            "61: \u090F\u0915\u0938\u091F\u094D\u0920\u0940;",\r
+            "62: \u092C\u092F\u0938\u091F\u094D\u0920\u0940;",\r
+            "63: \u0924\u094D\u0930\u093F\u0938\u091F\u094D\u0920\u0940;",\r
+            "64: \u091A\u094C\u0938\u091F\u094D\u0920\u0940;",\r
+            "65: \u092A\u0948\u0901\u0938\u091F\u094D\u0920\u0940;",\r
+            "66: \u091B\u092F\u0938\u091F\u094D\u0920\u0940;",\r
+            "67: \u0938\u0924\u0938\u091F\u094D\u0920\u0940;",\r
+            "68: \u0905\u0920\u0938\u091F\u094D\u0920\u0940;",\r
+            "69: \u0909\u0928\u0928\u094D\u0938\u0924\u094D\u0924\u0930\u0940;",\r
+            "70: \u0938\u0924\u094D\u0924\u0930\u0940;",\r
+            "71: \u090F\u0915\u0939\u0924\u094D\u0924\u0930;",\r
+            "72: \u092C\u0939\u0924\u094D\u0924\u0930;",\r
+            "73: \u0924\u094D\u0930\u093F\u0939\u0924\u094D\u0924\u0930;",\r
+            "74: \u091A\u094C\u0939\u0924\u094D\u0924\u0930;",\r
+            "75: \u092A\u091A\u0939\u0924\u094D\u0924\u0930;",\r
+            "76: \u091B\u092F\u0939\u0924\u094D\u0924\u0930;",\r
+            "77: \u0938\u0924\u0939\u0924\u094D\u0924\u0930;",\r
+            "78: \u0905\u0920\u0939\u0924\u094D\u0924\u0930;",\r
+            "79: \u0909\u0928\u093E\u0938\u0940;",\r
+            "80: \u0905\u0938\u0940;",\r
+            "81: \u090F\u0915\u093E\u0938\u0940;",\r
+            "82: \u092C\u092F\u093E\u0938\u0940;",\r
+            "83: \u0924\u094D\u0930\u093F\u092F\u093E\u0938\u0940;",\r
+            "84: \u091A\u094C\u0930\u093E\u0938\u0940;",\r
+            "85: \u092A\u091A\u093E\u0938\u0940;",\r
+            "86: \u091B\u092F\u093E\u0938\u0940;",\r
+            "87: \u0938\u0924\u093E\u0938\u0940;",\r
+            "88: \u0905\u0920\u093E\u0938\u0940;",\r
+            "89: \u0909\u0928\u093E\u0928\u094D\u0928\u092C\u094D\u092C\u0947;",\r
+            "90: \u0928\u092C\u094D\u092C\u0947;",\r
+            "91: \u090F\u0915\u093E\u0928\u092C\u094D\u092C\u0947;",\r
+            "92: \u092C\u092F\u093E\u0928\u092C\u094D\u092C\u0947;",\r
+            "93: \u0924\u094D\u0930\u093F\u092F\u093E\u0928\u092C\u094D\u092C\u0947;",\r
+            "94: \u091A\u094C\u0930\u093E\u0928\u092C\u094D\u092C\u0947;",\r
+            "95: \u092A\u0928\u094D\u091A\u093E\u0928\u092C\u094D\u092C\u0947;",\r
+            "96: \u091B\u092F\u093E\u0928\u092C\u094D\u092C\u0947;",\r
+            "97: \u0938\u0928\u094D\u0924\u093E\u0928\u092C\u094D\u092C\u0947;",\r
+            "98: \u0905\u0928\u094D\u0920\u093E\u0928\u092C\u094D\u092C\u0947;",\r
+            "99: \u0909\u0928\u093E\u0928\u094D\u0938\u092F;",\r
+            "100: << \u0938\u092F[ >>];",\r
+            "1000: << \u0939\u091C\u093E\u0930[ >>];",\r
+            "100000: << \u0932\u093E\u0916[ >>];",\r
+            "10000000: << \u0915\u0930\u094B\u0921[ >>];",\r
+            "1000000000: << \u0905\u0930\u092C[ >>];",\r
+            "100000000000: << \u0916\u0930\u092C[ >>];",\r
+            "10000000000000: << \u0936\u0902\u0916[ >>];",\r
+            "1000000000000000: =#,##,##0=;",\r
+            "%spellout-cardinal:",\r
+            "0: =%spellout-numbering=;",\r
+            "%%consonant-suffix:",\r
+            "0: \u094C\u0901;",\r
+            "1: ' =%spellout-numbering=\u094C\u0901;",\r
+            "2: ' \u0926\u0941\u092F\u094C\u0901;",\r
+            "3: ' =%spellout-numbering=\u094C\u0901;",\r
+            "5: ' =%spellout-ordinal-masculine=;",\r
+            "%spellout-ordinal-masculine:",\r
+            "-x: \u090B\u0923\u093E\u0924\u094D\u092E\u0915 >>;",\r
+            "x.x: =#,##,##0.#=;",\r
+            "0: \u0936\u0941\u0928\u094D\u092F\u094C\u0901;",\r
+            "1: \u092A\u0939\u093F\u0932\u094B;",\r
+            "2: \u0926\u094B\u0938\u094D\u0930\u094B;",\r
+            "3: \u0924\u0947\u0938\u094D\u0930\u094B;",\r
+            "4: \u091A\u094C\u0925\u094B;",\r
+            "5: \u092A\u093E\u0901\u091A\u094C\u0901;",\r
+            "6: \u091B\u0948\u091F\u094C\u0901;",\r
+            "7: \u0938\u093E\u0924\u094C\u0901;",\r
+            "8: \u0906\u0920\u094C\u0901;",\r
+            "9: \u0928\u0935\u094C\u0901;",\r
+            "10: \u0926\u0936\u094C\u0901;",\r
+            "11: \u090F\u0918\u093E\u0930\u094C\u0901;",\r
+            "12: \u092C\u093E\u0939\u094D\u0930\u094C\u0901;",\r
+            "13: =%spellout-numbering=\u094C\u0901;",\r
+            "60: =%spellout-numbering=\u0914\u0901;",\r
+            "71: =%spellout-numbering=\u094C\u0901;",\r
+            "80: =%spellout-numbering=\u0914\u0901;",\r
+            "99: =%spellout-numbering=\u094C\u0901;",\r
+            "100: <%spellout-numbering< \u0938\u092F>%%consonant-suffix>;",\r
+            "1000: <%spellout-numbering< \u0939\u091C\u093E\u0930>%%consonant-suffix>;",\r
+            "100000: <%spellout-numbering< \u0932\u093E\u0916>%%consonant-suffix>;",\r
+            "10000000: <%spellout-numbering< \u0915\u0930\u094B\u0921>%%consonant-suffix>;",\r
+            "1000000000: <%spellout-numbering< \u0905\u0930\u092C>%%consonant-suffix>;",\r
+            "100000000000: <%spellout-numbering< \u0916\u0930\u092C>%%consonant-suffix>;",\r
+            "10000000000000: <%spellout-numbering< \u0936\u0902\u0916>%%consonant-suffix>;",\r
+            "1000000000000000: =#,##,##0=.;",\r
+            "%spellout-ordinal-feminine:",\r
+            "-x: \u090B\u0923\u093E\u0924\u094D\u092E\u0915 >>;",\r
+            "x.x: =#,##,##0.#=;",\r
+            "0: \u0936\u0941\u0928\u094D\u092F\u094C\u0901;",\r
+            "1: \u092A\u0939\u093F\u0932\u0940;",\r
+            "2: \u0926\u094B\u0938\u094D\u0930\u0940;",\r
+            "3: \u0924\u0947\u0938\u094D\u0930\u0940;",\r
+            "4: \u091A\u094C\u0925\u0940;",\r
+            "5: \u092A\u093E\u0901\u091A\u0935\u0940;",\r
+            "6: =%spellout-ordinal-masculine=;",\r
+        }\r
+    }\r
+}\r
index dfa18b2..062f617 100644 (file)
@@ -2,10 +2,9 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nn{\r
+    %%Parent{"no"}\r
     RBNFRules{\r
         SpelloutRules{\r
-            "%%lenient-parse:",\r
-            "&[last primary ignorable ] << ' ' << ',' << '-' << '\u00AD';",\r
             "%spellout-numbering-year:",\r
             "-x: minus >>;",\r
             "x.x: =0.0=;",\r
index a6eca3c..a804fbe 100644 (file)
@@ -2,5 +2,311 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no{\r
-    "%%ALIAS"{"nb"}\r
+    RBNFRules{\r
+        SpelloutRules{\r
+            "%%lenient-parse:",\r
+            "&[last primary ignorable ] << ' ' << ',' << '-' << '\u00AD';",\r
+            "%spellout-numbering-year:",\r
+            "-x: minus >>;",\r
+            "x.x: =0.0=;",\r
+            "0: =%spellout-numbering=;",\r
+            "1100/100: <<\u00ADhundre[ og >>];",\r
+            "10000: =%spellout-numbering=;",\r
+            "%spellout-numbering:",\r
+            "0: =%%spellout-cardinal-reale=;",\r
+            "%spellout-cardinal-masculine:",\r
+            "0: =%%spellout-cardinal-reale=;",\r
+            "%spellout-cardinal-feminine:",\r
+            "-x: minus >>;",\r
+            "x.x: << komma >>;",\r
+            "0: null;",\r
+            "1: ei;",\r
+            "2: =%%spellout-cardinal-reale=;",\r
+            "100: hundre[ og >>];",\r
+            "200: <%spellout-cardinal-neuter< hundre[ og >>];",\r
+            "1000: tusen[ >%%and-small-f>];",\r
+            "2000: <%spellout-cardinal-neuter< tusen[ >%%and-small-f>];",\r
+            "1000000: \u00E9n million[ >>];",\r
+            "2000000: <%%spellout-cardinal-reale< millioner[ >>];",\r
+            "1000000000: \u00E9n milliard[ >>];",\r
+            "2000000000: <%%spellout-cardinal-reale< milliarder[ >>];",\r
+            "1000000000000: \u00E9n billion[ >>];",\r
+            "2000000000000: <%%spellout-cardinal-reale< billioner[ >>];",\r
+            "1000000000000000: \u00E9n billiard[ >>];",\r
+            "2000000000000000: <%%spellout-cardinal-reale< billiarder[ >>];",\r
+            "1000000000000000000: =#,##0=;",\r
+            "%%and-small-f:",\r
+            "0: og =%spellout-cardinal-feminine=;",\r
+            "100: =%spellout-cardinal-feminine=;",\r
+            "%spellout-cardinal-neuter:",\r
+            "-x: minus >>;",\r
+            "x.x: << komma >>;",\r
+            "0: null;",\r
+            "1: ett;",\r
+            "2: =%%spellout-cardinal-reale=;",\r
+            "20: tjue[\u00AD>>];",\r
+            "30: tretti[\u00AD>>];",\r
+            "40: f\u00F8rti[\u00AD>>];",\r
+            "50: femti[\u00AD>>];",\r
+            "60: seksti[\u00AD>>];",\r
+            "70: sytti[\u00AD>>];",\r
+            "80: \u00E5tti[\u00AD>>];",\r
+            "90: nitti[\u00AD>>];",\r
+            "100: hundre[ og >>];",\r
+            "200: <%spellout-cardinal-neuter< hundre[ og >>];",\r
+            "1000: tusen[ >%%and-small-n>];",\r
+            "2000: <%spellout-cardinal-neuter< tusen[ >%%and-small-n>];",\r
+            "1000000: \u00E9n million[ >>];",\r
+            "2000000: <%%spellout-cardinal-reale< millioner[ >>];",\r
+            "1000000000: \u00E9n milliard[ >>];",\r
+            "2000000000: <%%spellout-cardinal-reale< milliarder[ >>];",\r
+            "1000000000000: \u00E9n billion[ >>];",\r
+            "2000000000000: <%%spellout-cardinal-reale< billioner[ >>];",\r
+            "1000000000000000: \u00E9n billiard[ >>];",\r
+            "2000000000000000: <%%spellout-cardinal-reale< billiarder[ >>];",\r
+            "1000000000000000000: =#,##0=;",\r
+            "%%and-small-n:",\r
+            "0: og =%spellout-cardinal-neuter=;",\r
+            "100: =%spellout-cardinal-neuter=;",\r
+            "%%spellout-cardinal-reale:",\r
+            "-x: minus >>;",\r
+            "x.x: << komma >>;",\r
+            "0: null;",\r
+            "1: \u00E9n;",\r
+            "2: to;",\r
+            "3: tre;",\r
+            "4: fire;",\r
+            "5: fem;",\r
+            "6: seks;",\r
+            "7: sju;",\r
+            "8: \u00E5tte;",\r
+            "9: ni;",\r
+            "10: ti;",\r
+            "11: elleve;",\r
+            "12: tolv;",\r
+            "13: tretten;",\r
+            "14: fjorten;",\r
+            "15: femten;",\r
+            "16: seksten;",\r
+            "17: sytten;",\r
+            "18: atten;",\r
+            "19: nitten;",\r
+            "20: tjue[\u00AD>>];",\r
+            "30: tretti[\u00AD>>];",\r
+            "40: f\u00F8rti[\u00AD>>];",\r
+            "50: femti[\u00AD>>];",\r
+            "60: seksti[\u00AD>>];",\r
+            "70: sytti[\u00AD>>];",\r
+            "80: \u00E5tti[\u00AD>>];",\r
+            "90: nitti[\u00AD>>];",\r
+            "100: hundre[ og >>];",\r
+            "200: <%spellout-cardinal-neuter< hundre[ og >>];",\r
+            "1000: tusen[ >%%and-small>];",\r
+            "2000: <%spellout-cardinal-neuter< tusen[ >%%and-small>];",\r
+            "1000000: \u00E9n million[ >>];",\r
+            "2000000: << millioner[ >>];",\r
+            "1000000000: \u00E9n milliard[ >>];",\r
+            "2000000000: << milliarder[ >>];",\r
+            "1000000000000: \u00E9n billion[ >>];",\r
+            "2000000000000: << billioner[ >>];",\r
+            "1000000000000000: \u00E9n billiard[ >>];",\r
+            "2000000000000000: << billiarder[ >>];",\r
+            "1000000000000000000: =#,##0=;",\r
+            "%%and-small:",\r
+            "0: og =%%spellout-cardinal-reale=;",\r
+            "100: =%%spellout-cardinal-reale=;",\r
+            "%spellout-ordinal-masculine:",\r
+            "-x: minus >>;",\r
+            "x.x: =#,##0.#=;",\r
+            "0: nullte;",\r
+            "1: f\u00F8rste;",\r
+            "2: andre;",\r
+            "3: tredje;",\r
+            "4: fjerde;",\r
+            "5: femte;",\r
+            "6: sjette;",\r
+            "7: sjuende;",\r
+            "8: \u00E5ttende;",\r
+            "9: niende;",\r
+            "10: tiende;",\r
+            "11: ellevte;",\r
+            "12: tolvte;",\r
+            "13: =%spellout-cardinal-neuter=de;",\r
+            "20: tjue>%%ord-masc-nde>;",\r
+            "30: tretti>%%ord-masc-nde>;",\r
+            "40: f\u00F8rti>%%ord-masc-nde>;",\r
+            "50: femti>%%ord-masc-nde>;",\r
+            "60: seksti>%%ord-masc-nde>;",\r
+            "70: sytti>%%ord-masc-nde>;",\r
+            "80: \u00E5tti>%%ord-masc-nde>;",\r
+            "90: nitti>%%ord-masc-nde>;",\r
+            "100: <%spellout-numbering<\u00ADhundre>%%ord-masc-de>;",\r
+            "1000: <%spellout-numbering<\u00ADtusen>%%ord-masc-de>;",\r
+            "1000000: \u00E9n million>%%ord-masc-te>;",\r
+            "2000000: <%%spellout-cardinal-reale< million>%%ord-masc-teer>;",\r
+            "1000000000: \u00E9n milliard>%%ord-masc-te>;",\r
+            "2000000000: <%%spellout-cardinal-reale< milliard>%%ord-masc-teer>;",\r
+            "1000000000000: \u00E9n billion>%%ord-masc-te>;",\r
+            "2000000000000: <%%spellout-cardinal-reale< billion>%%ord-masc-teer>;",\r
+            "1000000000000000: \u00E9n billiard>%%ord-masc-te>;",\r
+            "2000000000000000: <%%spellout-cardinal-reale< billiard>%%ord-masc-teer>;",\r
+            "1000000000000000000: =#,##0=.;",\r
+            "%%ord-masc-nde:",\r
+            "0: ende;",\r
+            "1: \u00AD=%spellout-ordinal-masculine=;",\r
+            "%%ord-masc-de:",\r
+            "0: de;",\r
+            "1: ' =%spellout-ordinal-masculine=;",\r
+            "%%ord-masc-te:",\r
+            "0: te;",\r
+            "1: ' =%spellout-ordinal-masculine=;",\r
+            "%%ord-masc-teer:",\r
+            "0: te;",\r
+            "1: er =%spellout-ordinal-masculine=;",\r
+            "%spellout-ordinal-neuter:",\r
+            "-x: minus >>;",\r
+            "x.x: =#,##0.#=;",\r
+            "0: nullte;",\r
+            "1: f\u00F8rste;",\r
+            "2: andre;",\r
+            "3: tredje;",\r
+            "4: fjerde;",\r
+            "5: femte;",\r
+            "6: sjette;",\r
+            "7: sjuende;",\r
+            "8: \u00E5ttende;",\r
+            "9: niende;",\r
+            "10: tiende;",\r
+            "11: ellevte;",\r
+            "12: tolvte;",\r
+            "13: =%spellout-cardinal-neuter=de;",\r
+            "20: tjue>%%ord-neut-nde>;",\r
+            "30: tretti>%%ord-neut-nde>;",\r
+            "40: f\u00F8rti>%%ord-neut-nde>;",\r
+            "50: femti>%%ord-neut-nde>;",\r
+            "60: seksti>%%ord-neut-nde>;",\r
+            "70: sytti>%%ord-neut-nde>;",\r
+            "80: \u00E5tti>%%ord-neut-nde>;",\r
+            "90: nitti>%%ord-neut-nde>;",\r
+            "100: <%spellout-numbering<\u00ADhundre>%%ord-neut-de>;",\r
+            "1000: <%spellout-numbering<\u00ADtusen>%%ord-neut-de>;",\r
+            "1000000: \u00E9n million>%%ord-neut-te>;",\r
+            "2000000: <%%spellout-cardinal-reale< million>%%ord-neut-teer>;",\r
+            "1000000000: \u00E9n milliard>%%ord-neut-te>;",\r
+            "2000000000: <%%spellout-cardinal-reale< milliard>%%ord-neut-teer>;",\r
+            "1000000000000: \u00E9n billion>%%ord-neut-te>;",\r
+            "2000000000000: <%%spellout-cardinal-reale< billion>%%ord-neut-teer>;",\r
+            "1000000000000000: \u00E9n billiard>%%ord-neut-te>;",\r
+            "2000000000000000: <%%spellout-cardinal-reale< billiard>%%ord-neut-teer>;",\r
+            "1000000000000000000: =#,##0=.;",\r
+            "%%ord-neut-nde:",\r
+            "0: ende;",\r
+            "1: \u00AD=%spellout-ordinal-neuter=;",\r
+            "%%ord-neut-de:",\r
+            "0: de;",\r
+            "1: ' =%spellout-ordinal-neuter=;",\r
+            "%%ord-neut-te:",\r
+            "0: te;",\r
+            "1: ' =%spellout-ordinal-neuter=;",\r
+            "%%ord-neut-teer:",\r
+            "0: te;",\r
+            "1: er =%spellout-ordinal-neuter=;",\r
+            "%spellout-ordinal-feminine:",\r
+            "-x: minus >>;",\r
+            "x.x: =#,##0.#=;",\r
+            "0: nullte;",\r
+            "1: f\u00F8rste;",\r
+            "2: andre;",\r
+            "3: tredje;",\r
+            "4: fjerde;",\r
+            "5: femte;",\r
+            "6: sjette;",\r
+            "7: sjuende;",\r
+            "8: \u00E5ttende;",\r
+            "9: niende;",\r
+            "10: tiende;",\r
+            "11: ellevte;",\r
+            "12: tolvte;",\r
+            "13: =%spellout-cardinal-neuter=de;",\r
+            "20: tjue>%%ord-fem-nde>;",\r
+            "30: tretti>%%ord-fem-nde>;",\r
+            "40: f\u00F8rti>%%ord-fem-nde>;",\r
+            "50: femti>%%ord-fem-nde>;",\r
+            "60: seksti>%%ord-fem-nde>;",\r
+            "70: sytti>%%ord-fem-nde>;",\r
+            "80: \u00E5tti>%%ord-fem-nde>;",\r
+            "90: nitti>%%ord-fem-nde>;",\r
+            "100: <%spellout-numbering<\u00ADhundre>%%ord-fem-de>;",\r
+            "1000: <%spellout-numbering<\u00ADtusen>%%ord-fem-de>;",\r
+            "1000000: \u00E9n million>%%ord-fem-te>;",\r
+            "2000000: <%%spellout-cardinal-reale< million>%%ord-fem-teer>;",\r
+            "1000000000: \u00E9n milliard>%%ord-fem-te>;",\r
+            "2000000000: <%%spellout-cardinal-reale< milliard>%%ord-fem-teer>;",\r
+            "1000000000000: \u00E9n billion>%%ord-fem-te>;",\r
+            "2000000000000: <%%spellout-cardinal-reale< billion>%%ord-fem-teer>;",\r
+            "1000000000000000: \u00E9n billiard>%%ord-fem-te>;",\r
+            "2000000000000000: <%%spellout-cardinal-reale< billiard>%%ord-fem-teer>;",\r
+            "1000000000000000000: =#,##0=.;",\r
+            "%%ord-fem-nde:",\r
+            "0: ende;",\r
+            "1: \u00AD=%spellout-ordinal-feminine=;",\r
+            "%%ord-fem-de:",\r
+            "0: de;",\r
+            "1: ' =%spellout-ordinal-feminine=;",\r
+            "%%ord-fem-te:",\r
+            "0: te;",\r
+            "1: ' =%spellout-ordinal-feminine=;",\r
+            "%%ord-fem-teer:",\r
+            "0: te;",\r
+            "1: er =%spellout-ordinal-feminine=;",\r
+            "%spellout-ordinal-plural:",\r
+            "-x: minus >>;",\r
+            "x.x: =#,##0.#=;",\r
+            "0: nullte;",\r
+            "1: f\u00F8rste;",\r
+            "2: andre;",\r
+            "3: tredje;",\r
+            "4: fjerde;",\r
+            "5: femte;",\r
+            "6: sjette;",\r
+            "7: sjuende;",\r
+            "8: \u00E5ttende;",\r
+            "9: niende;",\r
+            "10: tiende;",\r
+            "11: ellevte;",\r
+            "12: tolvte;",\r
+            "13: =%spellout-cardinal-neuter=de;",\r
+            "20: tjue>%%ord-plural-nde>;",\r
+            "30: tretti>%%ord-plural-nde>;",\r
+            "40: f\u00F8rti>%%ord-plural-nde>;",\r
+            "50: femti>%%ord-plural-nde>;",\r
+            "60: seksti>%%ord-plural-nde>;",\r
+            "70: sytti>%%ord-plural-nde>;",\r
+            "80: \u00E5tti>%%ord-plural-nde>;",\r
+            "90: nitti>%%ord-plural-nde>;",\r
+            "100: <%spellout-numbering<\u00ADhundre>%%ord-plural-de>;",\r
+            "1000: <%spellout-numbering<\u00ADtusen>%%ord-plural-de>;",\r
+            "1000000: \u00E9n million>%%ord-plural-te>;",\r
+            "2000000: <%%spellout-cardinal-reale< million>%%ord-plural-teer>;",\r
+            "1000000000: \u00E9n milliard>%%ord-plural-te>;",\r
+            "2000000000: <%%spellout-cardinal-reale< milliard>%%ord-plural-teer>;",\r
+            "1000000000000: \u00E9n billion>%%ord-plural-te>;",\r
+            "2000000000000: <%%spellout-cardinal-reale< billion>%%ord-plural-teer>;",\r
+            "1000000000000000: \u00E9n billiard>%%ord-plural-te>;",\r
+            "2000000000000000: <%%spellout-cardinal-reale< billiard>%%ord-plural-teer>;",\r
+            "1000000000000000000: =#,##0=.;",\r
+            "%%ord-plural-nde:",\r
+            "0: ende;",\r
+            "1: \u00AD=%spellout-ordinal-plural=;",\r
+            "%%ord-plural-de:",\r
+            "0: de;",\r
+            "1: ' =%spellout-ordinal-plural=;",\r
+            "%%ord-plural-te:",\r
+            "0: te;",\r
+            "1: ' =%spellout-ordinal-plural=;",\r
+            "%%ord-plural-teer:",\r
+            "0: te;",\r
+            "1: er =%spellout-ordinal-plural=;",\r
+        }\r
+    }\r
 }\r
index d228cd4..05561c4 100644 (file)
@@ -21,6 +21,12 @@ pt{
             "0: =%spellout-numbering=;",\r
             "%spellout-numbering:",\r
             "0: =%spellout-cardinal-masculine=;",\r
+            "%%optional-e:",\r
+            "0: ' e ;",\r
+            "1: ' ;",\r
+            "%%spellout-cardinal-masculine-with-e:",\r
+            "0: ' e =%spellout-cardinal-masculine=;",\r
+            "100: >%%optional-e>=%spellout-cardinal-masculine=;",\r
             "%spellout-cardinal-masculine:",\r
             "-x: menos >>;",\r
             "x.x: << v\u00EDrgula >>;",\r
@@ -62,17 +68,16 @@ pt{
             "700: setecentos[ e >>];",\r
             "800: oitocentos[ e >>];",\r
             "900: novecentos[ e >>];",\r
-            "1000: mil[ e >>];",\r
-            "2000: << mil[ e >>];",\r
-            "1000000: um milh\u00E3o[ e >>];",\r
-            "2000000: << milh\u00F5es[ e >>];",\r
-            "1000000000: um bilh\u00E3o[ e >>];",\r
-            "2000000000: << bilh\u00F5es[ e >>];",\r
-            "1000000000000: um trilh\u00E3o[ e >>];",\r
-            "2000000000000: << trilh\u00F5es[ e >>];",\r
-            "1000000000000000: um quatrilh\u00E3o[ e >>];",\r
-            "2000000000000000: << quatrilh\u00F5es[ e >>];",\r
+            "1000: mil[>%%spellout-cardinal-masculine-with-e>];",\r
+            "2000: << mil[>%%spellout-cardinal-masculine-with-e>];",\r
+            "1000000: << $(cardinal,one{milh\u00E3o}other{milh\u00F5es})$[>%%spellout-cardinal-masculine-with-e>];",\r
+            "1000000000: << $(cardinal,one{bilh\u00E3o}other{bilh\u00F5es})$[>%%spellout-cardinal-masculine-with-e>];",\r
+            "1000000000000: << $(cardinal,one{trilh\u00E3o}other{trilh\u00F5es})$[>%%spellout-cardinal-masculine-with-e>];",\r
+            "1000000000000000: << $(cardinal,one{quatrilh\u00E3o}other{quatrilh\u00F5es})$[>%%spellout-cardinal-masculine-with-e>];",\r
             "1000000000000000000: =#,##0=;",\r
+            "%%spellout-cardinal-feminine-with-e:",\r
+            "0: ' e =%spellout-cardinal-feminine=;",\r
+            "100: >%%optional-e>=%spellout-cardinal-feminine=;",\r
             "%spellout-cardinal-feminine:",\r
             "-x: menos >>;",\r
             "x.x: << v\u00EDrgula >>;",\r
@@ -98,16 +103,12 @@ pt{
             "700: setecentas[ e >>];",\r
             "800: oitocentas[ e >>];",\r
             "900: novecentas[ e >>];",\r
-            "1000: mil[ e >>];",\r
-            "2000: << mil[ e >>];",\r
-            "1000000: um milh\u00E3o[ e >>];",\r
-            "2000000: <%spellout-cardinal-masculine< milh\u00F5es[ e >>];",\r
-            "1000000000: um bilh\u00E3o[ e >>];",\r
-            "2000000000: <%spellout-cardinal-masculine< bilh\u00F5es[ e >>];",\r
-            "1000000000000: um trilh\u00E3o[ e >>];",\r
-            "2000000000000: <%spellout-cardinal-masculine< trilh\u00F5es[ e >>];",\r
-            "1000000000000000: um quatrilh\u00E3o[ e >>];",\r
-            "2000000000000000: <%spellout-cardinal-masculine< quatrilh\u00F5es[ e >>];",\r
+            "1000: mil[>%%spellout-cardinal-feminine-with-e>];",\r
+            "2000: << mil[>%%spellout-cardinal-feminine-with-e>];",\r
+            "1000000: <%spellout-cardinal-masculine< $(cardinal,one{milh\u00E3o}other{milh\u00F5es})$[>%%spellout-cardinal-feminine-with-e>];",\r
+            "1000000000: <%spellout-cardinal-masculine< $(cardinal,one{bilh\u00E3o}other{bilh\u00F5es})$[>%%spellout-cardinal-feminine-with-e>];",\r
+            "1000000000000: <%spellout-cardinal-masculine< $(cardinal,one{trilh\u00E3o}other{trilh\u00F5es})$[>%%spellout-cardinal-feminine-with-e>];",\r
+            "1000000000000000: <%spellout-cardinal-masculine< $(cardinal,one{quatrilh\u00E3o}other{quatrilh\u00F5es})$[>%%spellout-cardinal-feminine-with-e>];",\r
             "1000000000000000000: =#,##0=;",\r
             "%spellout-ordinal-masculine:",\r
             "-x: menos >>;",\r
@@ -141,15 +142,11 @@ pt{
             "800: octingent\u00E9simo[ >>];",\r
             "900: noningent\u00E9simo[ >>];",\r
             "1000: mil\u00E9simo[ >>];",\r
-            "2000: <%spellout-cardinal-masculine< \u00ADmil\u00E9simo[ >>];",\r
-            "1000000: um milion\u00E9simo[ >>];",\r
-            "2000000: <%spellout-cardinal-masculine< milion\u00E9simo[ >>];",\r
-            "1000000000: um bilion\u00E9simo[ >>];",\r
-            "2000000000: <%spellout-cardinal-masculine< bilion\u00E9simo[ >>];",\r
-            "1000000000000: um trilion\u00E9simo[ >>];",\r
-            "2000000000000: <%spellout-cardinal-masculine< trilion\u00E9sima[ >>];",\r
-            "1000000000000000: um quadrilion\u00E9simo[ >>];",\r
-            "2000000000000000: <%spellout-cardinal-masculine< quadrilion\u00E9simo[ >>];",\r
+            "2000: <%spellout-cardinal-masculine< mil\u00E9simo[ >>];",\r
+            "1000000: <%spellout-cardinal-masculine< milion\u00E9simo[ >>];",\r
+            "1000000000: <%spellout-cardinal-masculine< bilion\u00E9simo[ >>];",\r
+            "1000000000000: <%spellout-cardinal-masculine< trilion\u00E9sima[ >>];",\r
+            "1000000000000000: <%spellout-cardinal-masculine< quadrilion\u00E9simo[ >>];",\r
             "1000000000000000000: =#,##0=\u00BA;",\r
             "%spellout-ordinal-feminine:",\r
             "-x: menos >>;",\r
@@ -183,15 +180,11 @@ pt{
             "800: octingent\u00E9sima[ >>];",\r
             "900: noningent\u00E9sima[ >>];",\r
             "1000: mil\u00E9sima[ >>];",\r
-            "2000: <%spellout-cardinal-feminine< \u00ADmil\u00E9sima[ >>];",\r
-            "1000000: uma milion\u00E9sima[ >>];",\r
-            "2000000: <%spellout-cardinal-feminine< milion\u00E9sima[ >>];",\r
-            "1000000000: uma bilion\u00E9sima[ >>];",\r
-            "2000000000: <%spellout-cardinal-feminine< bilion\u00E9sima[ >>];",\r
-            "1000000000000: uma trilion\u00E9sima[ >>];",\r
-            "2000000000000: <%spellout-cardinal-feminine< trilion\u00E9sima[ >>];",\r
-            "1000000000000000: uma quadrilion\u00E9sima[ >>];",\r
-            "2000000000000000: <%spellout-cardinal-feminine< quadrilion\u00E9sima[ >>];",\r
+            "2000: <%spellout-cardinal-feminine< mil\u00E9sima[ >>];",\r
+            "1000000: <%spellout-cardinal-feminine< milion\u00E9sima[ >>];",\r
+            "1000000000: <%spellout-cardinal-feminine< bilion\u00E9sima[ >>];",\r
+            "1000000000000: <%spellout-cardinal-feminine< trilion\u00E9sima[ >>];",\r
+            "1000000000000000: <%spellout-cardinal-feminine< quadrilion\u00E9sima[ >>];",\r
             "1000000000000000000: =#,##0=\u00AA;",\r
         }\r
     }\r
index 40764d0..0b59264 100644 (file)
@@ -11,6 +11,12 @@ pt_PT{
             "0: =%spellout-numbering=;",\r
             "%spellout-numbering:",\r
             "0: =%spellout-cardinal-masculine=;",\r
+            "%%optional-e:",\r
+            "0: ' e ;",\r
+            "1: ' ;",\r
+            "%%spellout-cardinal-masculine-with-e:",\r
+            "0: ' e =%spellout-cardinal-masculine=;",\r
+            "100: >%%optional-e>=%spellout-cardinal-masculine=;",\r
             "%spellout-cardinal-masculine:",\r
             "-x: menos >>;",\r
             "x.x: << v\u00EDrgula >>;",\r
@@ -52,17 +58,16 @@ pt_PT{
             "700: setecentos[ e >>];",\r
             "800: oitocentos[ e >>];",\r
             "900: novecentos[ e >>];",\r
-            "1000: mil[ e >>];",\r
-            "2000: << mil[ e >>];",\r
-            "1000000: um milh\u00E3o[ e >>];",\r
-            "2000000: << milh\u00F5es[ e >>];",\r
-            "1000000000: um bili\u00E3o[ e >>];",\r
-            "2000000000: << bili\u00F5es[ e >>];",\r
-            "1000000000000: um trili\u00E3o[ e >>];",\r
-            "2000000000000: << trili\u00F5es[ e >>];",\r
-            "1000000000000000: um quatrili\u00E3o[ e >>];",\r
-            "2000000000000000: << quatrili\u00F5es[ e >>];",\r
+            "1000: mil[>%%spellout-cardinal-masculine-with-e>];",\r
+            "2000: << mil[>%%spellout-cardinal-masculine-with-e>];",\r
+            "1000000: << $(cardinal,one{milh\u00E3o}other{milh\u00F5es})$[>%%spellout-cardinal-masculine-with-e>];",\r
+            "1000000000: << mil milh\u00F5es[>%%spellout-cardinal-masculine-with-e>];",\r
+            "1000000000000: << $(cardinal,one{bili\u00E3o}other{bili\u00F5es})$[>%%spellout-cardinal-masculine-with-e>];",\r
+            "1000000000000000: << mil bili\u00F5es[>%%spellout-cardinal-masculine-with-e>];",\r
             "1000000000000000000: =#,##0=;",\r
+            "%%spellout-cardinal-feminine-with-e:",\r
+            "0: ' e =%spellout-cardinal-feminine=;",\r
+            "100: >%%optional-e>=%spellout-cardinal-feminine=;",\r
             "%spellout-cardinal-feminine:",\r
             "-x: menos >>;",\r
             "x.x: << v\u00EDrgula >>;",\r
@@ -88,16 +93,12 @@ pt_PT{
             "700: setecentas[ e >>];",\r
             "800: oitocentas[ e >>];",\r
             "900: novecentas[ e >>];",\r
-            "1000: mil[ e >>];",\r
-            "2000: << mil[ e >>];",\r
-            "1000000: um milh\u00E3o[ e >>];",\r
-            "2000000: <%spellout-cardinal-masculine< milh\u00F5es[ e >>];",\r
-            "1000000000: um bili\u00E3o[ e >>];",\r
-            "2000000000: <%spellout-cardinal-masculine< bili\u00F5es[ e >>];",\r
-            "1000000000000: um trili\u00E3o[ e >>];",\r
-            "2000000000000: <%spellout-cardinal-masculine< trili\u00F5es[ e >>];",\r
-            "1000000000000000: um quatrili\u00E3o[ e >>];",\r
-            "2000000000000000: <%spellout-cardinal-masculine< quatrili\u00F5es[ e >>];",\r
+            "1000: mil[>%%spellout-cardinal-feminine-with-e>];",\r
+            "2000: << mil[>%%spellout-cardinal-feminine-with-e>];",\r
+            "1000000: <%spellout-cardinal-masculine< $(cardinal,one{milh\u00E3o}other{milh\u00F5es})$[>%%spellout-cardinal-feminine-with-e>];",\r
+            "1000000000: <%spellout-cardinal-masculine< mil milh\u00F5es[>%%spellout-cardinal-feminine-with-e>];",\r
+            "1000000000000: <%spellout-cardinal-masculine< $(cardinal,one{bili\u00E3o}other{bili\u00F5es})$[>%%spellout-cardinal-feminine-with-e>];",\r
+            "1000000000000000: <%spellout-cardinal-masculine< mil bili\u00F5es[>%%spellout-cardinal-feminine-with-e>];",\r
             "1000000000000000000: =#,##0=;",\r
             "%spellout-ordinal-masculine:",\r
             "-x: menos >>;",\r
@@ -131,15 +132,11 @@ pt_PT{
             "800: octingent\u00E9simo[ >>];",\r
             "900: noningent\u00E9simo[ >>];",\r
             "1000: mil\u00E9simo[ >>];",\r
-            "2000: <%spellout-cardinal-masculine< \u00ADmil\u00E9simo[ >>];",\r
-            "1000000: um milion\u00E9simo[ >>];",\r
-            "2000000: <%spellout-cardinal-masculine< milion\u00E9simo[ >>];",\r
-            "1000000000: um bilion\u00E9simo[ >>];",\r
-            "2000000000: <%spellout-cardinal-masculine< bilion\u00E9simo[ >>];",\r
-            "1000000000000: um trilion\u00E9simo[ >>];",\r
-            "2000000000000: <%spellout-cardinal-masculine< trilion\u00E9sima[ >>];",\r
-            "1000000000000000: um quadrilion\u00E9simo[ >>];",\r
-            "2000000000000000: <%spellout-cardinal-masculine< quadrilion\u00E9simo[ >>];",\r
+            "2000: <%spellout-cardinal-masculine< mil\u00E9simo[ >>];",\r
+            "1000000: <%spellout-cardinal-masculine< milion\u00E9simo[ >>];",\r
+            "1000000000: <%spellout-cardinal-masculine< mil milion\u00E9simo[ >>];",\r
+            "1000000000000: <%spellout-cardinal-masculine< bilion\u00E9simo[ >>];",\r
+            "1000000000000000: <%spellout-cardinal-masculine< mil bilion\u00E9simo[ >>];",\r
             "1000000000000000000: =#,##0=\u00BA;",\r
             "%spellout-ordinal-feminine:",\r
             "-x: menos >>;",\r
@@ -173,15 +170,11 @@ pt_PT{
             "800: octingent\u00E9sima[ >>];",\r
             "900: noningent\u00E9sima[ >>];",\r
             "1000: mil\u00E9sima[ >>];",\r
-            "2000: <%spellout-cardinal-feminine< \u00ADmil\u00E9sima[ >>];",\r
-            "1000000: uma milion\u00E9sima[ >>];",\r
-            "2000000: <%spellout-cardinal-feminine< milion\u00E9sima[ >>];",\r
-            "1000000000: uma bilion\u00E9sima[ >>];",\r
-            "2000000000: <%spellout-cardinal-feminine< bilion\u00E9sima[ >>];",\r
-            "1000000000000: uma trilion\u00E9sima[ >>];",\r
-            "2000000000000: <%spellout-cardinal-feminine< trilion\u00E9sima[ >>];",\r
-            "1000000000000000: uma quadrilion\u00E9sima[ >>];",\r
-            "2000000000000000: <%spellout-cardinal-feminine< quadrilion\u00E9sima[ >>];",\r
+            "2000: <%spellout-cardinal-feminine< mil\u00E9sima[ >>];",\r
+            "1000000: <%spellout-cardinal-feminine< milion\u00E9sima[ >>];",\r
+            "1000000000: <%spellout-cardinal-feminine< mil milion\u00E9sima[ >>];",\r
+            "1000000000000: <%spellout-cardinal-feminine< bilion\u00E9sima[ >>];",\r
+            "1000000000000000: <%spellout-cardinal-feminine< mil bilion\u00E9sima[ >>];",\r
             "1000000000000000000: =#,##0=\u00AA;",\r
         }\r
     }\r
index 3346bc5..8590788 100644 (file)
@@ -461,11 +461,11 @@ root{
             "61: \u05E1\u05F4>%hebrew-item>;",\r
             "70: \u05F4\u05E2;",\r
             "71: \u05E2\u05F4>%hebrew-item>;",\r
-            "80: \u05F4\u05E4;",\r
+            "80: \u05F4\u05E3;",\r
             "81: \u05E4\u05F4>%hebrew-item>;",\r
             "90: \u05F4\u05E6;",\r
             "91: \u05E6\u05F4>%hebrew-item>;",\r
-            "%hebrew-item:",\r
+            "%%hebrew-item-hundreds:",\r
             "-x: \u2212>>;",\r
             "x.x: =#,##0.00=;",\r
             "0: \u05F4;",\r
@@ -488,7 +488,8 @@ root{
             "50: \u05E0[>>];",\r
             "60: \u05E1[>>];",\r
             "70: \u05E2[>>];",\r
-            "80: \u05E4[>>];",\r
+            "80: \u05E3;",\r
+            "81: \u05E4[>>];",\r
             "90: \u05E6[>>];",\r
             "100: \u05E7[>>];",\r
             "200: \u05E8[>>];",\r
@@ -521,6 +522,32 @@ root{
             "1900/100: \u05EA\u05EA\u05EA\u05EA\u05E9[>>];",\r
             "2000/100: \u05EA\u05EA\u05EA\u05EA\u05EA[>>];",\r
             "2100: =#,##0=;",\r
+            "%hebrew-item:",\r
+            "-x: \u2212>>;",\r
+            "x.x: =#,##0.00=;",\r
+            "0: \u05F4;",\r
+            "1: \u05D0;",\r
+            "2: \u05D1;",\r
+            "3: \u05D2;",\r
+            "4: \u05D3;",\r
+            "5: \u05D4;",\r
+            "6: \u05D5;",\r
+            "7: \u05D6;",\r
+            "8: \u05D7;",\r
+            "9: \u05D8;",\r
+            "10: \u05D9[>>];",\r
+            "15: \u05D8\u05D5;",\r
+            "16: \u05D8\u05D6;",\r
+            "17: \u05D9>>;",\r
+            "20: \u05DB[>>];",\r
+            "30: \u05DC[>>];",\r
+            "40: \u05DE[>>];",\r
+            "50: \u05E0[>>];",\r
+            "60: \u05E1[>>];",\r
+            "70: \u05E2[>>];",\r
+            "80: \u05E4[>>];",\r
+            "90: \u05E6[>>];",\r
+            "100: =%%hebrew-item-hundreds=;",\r
             "%roman-lower:",\r
             "-x: \u2212>>;",\r
             "x.x: =#,##0.00=;",\r
@@ -656,5 +683,5 @@ root{
             "0: =#,##0.#=.;",\r
         }\r
     }\r
-    Version{"38.1"}\r
+    Version{"39"}\r
 }\r
index 05851c8..edb72ea 100644 (file)
@@ -3,7 +3,7 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 \r
 {\r
-    "cldrVersion": "38.1",\r
+    "cldrVersion": "39",\r
     "aliases": {\r
         "ars": "ar_SA",\r
         "az_AZ": "az_Latn_AZ",\r
@@ -21,8 +21,7 @@
         "ks_IN": "ks_Arab_IN",\r
         "mni_IN": "mni_Beng_IN",\r
         "mo": "ro",\r
-        "no": "nb",\r
-        "no_NO": "nb_NO",\r
+        "no_NO": "no",\r
         "no_NO_NY": "nn_NO",\r
         "pa_IN": "pa_Guru_IN",\r
         "pa_PK": "pa_Arab_PK",\r
         "es_UY": "es_419",\r
         "es_VE": "es_419",\r
         "ff_Adlm": "root",\r
+        "nb": "no",\r
+        "nn": "no",\r
         "pa_Arab": "root",\r
         "pt_AO": "pt_PT",\r
         "pt_CH": "pt_PT",\r
index 91ed392..42359b5 100644 (file)
@@ -3,7 +3,7 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 en{\r
     Countries{\r
-        001{"World"}\r
+        001{"world"}\r
         002{"Africa"}\r
         003{"North America"}\r
         005{"South America"}\r
index c4bcc4a..f868fec 100644 (file)
@@ -3,4 +3,7 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 en_AU{\r
     %%Parent{"en_001"}\r
+    Countries{\r
+        001{"World"}\r
+    }\r
 }\r
index fbbd617..eedd825 100644 (file)
@@ -2,313 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nb{\r
-    Countries{\r
-        001{"verden"}\r
-        002{"Afrika"}\r
-        003{"Nord-Amerika"}\r
-        005{"Sør-Amerika"}\r
-        009{"Oseania"}\r
-        011{"Vest-Afrika"}\r
-        013{"Mellom-Amerika"}\r
-        014{"Øst-Afrika"}\r
-        015{"Nord-Afrika"}\r
-        017{"Sentral-Afrika"}\r
-        018{"Sørlige Afrika"}\r
-        019{"Amerika"}\r
-        021{"Nordlige Amerika"}\r
-        029{"Karibia"}\r
-        030{"Øst-Asia"}\r
-        034{"Sør-Asia"}\r
-        035{"Sørøst-Asia"}\r
-        039{"Sør-Europa"}\r
-        053{"Australasia"}\r
-        054{"Melanesia"}\r
-        057{"Mikronesia"}\r
-        061{"Polynesia"}\r
-        142{"Asia"}\r
-        143{"Sentral-Asia"}\r
-        145{"Vest-Asia"}\r
-        150{"Europa"}\r
-        151{"Øst-Europa"}\r
-        154{"Nord-Europa"}\r
-        155{"Vest-Europa"}\r
-        202{"Afrika sør for Sahara"}\r
-        419{"Latin-Amerika"}\r
-        AC{"Ascension"}\r
-        AD{"Andorra"}\r
-        AE{"De forente arabiske emirater"}\r
-        AF{"Afghanistan"}\r
-        AG{"Antigua og Barbuda"}\r
-        AI{"Anguilla"}\r
-        AL{"Albania"}\r
-        AM{"Armenia"}\r
-        AO{"Angola"}\r
-        AQ{"Antarktis"}\r
-        AR{"Argentina"}\r
-        AS{"Amerikansk Samoa"}\r
-        AT{"Østerrike"}\r
-        AU{"Australia"}\r
-        AW{"Aruba"}\r
-        AX{"Åland"}\r
-        AZ{"Aserbajdsjan"}\r
-        BA{"Bosnia-Hercegovina"}\r
-        BB{"Barbados"}\r
-        BD{"Bangladesh"}\r
-        BE{"Belgia"}\r
-        BF{"Burkina Faso"}\r
-        BG{"Bulgaria"}\r
-        BH{"Bahrain"}\r
-        BI{"Burundi"}\r
-        BJ{"Benin"}\r
-        BL{"Saint-Barthélemy"}\r
-        BM{"Bermuda"}\r
-        BN{"Brunei"}\r
-        BO{"Bolivia"}\r
-        BQ{"Karibisk Nederland"}\r
-        BR{"Brasil"}\r
-        BS{"Bahamas"}\r
-        BT{"Bhutan"}\r
-        BV{"Bouvetøya"}\r
-        BW{"Botswana"}\r
-        BY{"Hviterussland"}\r
-        BZ{"Belize"}\r
-        CA{"Canada"}\r
-        CC{"Kokosøyene"}\r
-        CD{"Kongo"}\r
-        CF{"Den sentralafrikanske republikk"}\r
-        CG{"Kongo-Brazzaville"}\r
-        CH{"Sveits"}\r
-        CI{"Elfenbenskysten"}\r
-        CK{"Cookøyene"}\r
-        CL{"Chile"}\r
-        CM{"Kamerun"}\r
-        CN{"Kina"}\r
-        CO{"Colombia"}\r
-        CP{"Clippertonøya"}\r
-        CR{"Costa Rica"}\r
-        CU{"Cuba"}\r
-        CV{"Kapp Verde"}\r
-        CW{"Curaçao"}\r
-        CX{"Christmasøya"}\r
-        CY{"Kypros"}\r
-        CZ{"Tsjekkia"}\r
-        DE{"Tyskland"}\r
-        DG{"Diego Garcia"}\r
-        DJ{"Djibouti"}\r
-        DK{"Danmark"}\r
-        DM{"Dominica"}\r
-        DO{"Den dominikanske republikk"}\r
-        DZ{"Algerie"}\r
-        EA{"Ceuta og Melilla"}\r
-        EC{"Ecuador"}\r
-        EE{"Estland"}\r
-        EG{"Egypt"}\r
-        EH{"Vest-Sahara"}\r
-        ER{"Eritrea"}\r
-        ES{"Spania"}\r
-        ET{"Etiopia"}\r
-        EU{"Den europeiske union"}\r
-        EZ{"eurosonen"}\r
-        FI{"Finland"}\r
-        FJ{"Fiji"}\r
-        FK{"Falklandsøyene"}\r
-        FM{"Mikronesiaføderasjonen"}\r
-        FO{"Færøyene"}\r
-        FR{"Frankrike"}\r
-        GA{"Gabon"}\r
-        GB{"Storbritannia"}\r
-        GD{"Grenada"}\r
-        GE{"Georgia"}\r
-        GF{"Fransk Guyana"}\r
-        GG{"Guernsey"}\r
-        GH{"Ghana"}\r
-        GI{"Gibraltar"}\r
-        GL{"Grønland"}\r
-        GM{"Gambia"}\r
-        GN{"Guinea"}\r
-        GP{"Guadeloupe"}\r
-        GQ{"Ekvatorial-Guinea"}\r
-        GR{"Hellas"}\r
-        GS{"Sør-Georgia og Sør-Sandwichøyene"}\r
-        GT{"Guatemala"}\r
-        GU{"Guam"}\r
-        GW{"Guinea-Bissau"}\r
-        GY{"Guyana"}\r
-        HK{"Hongkong SAR Kina"}\r
-        HM{"Heard- og McDonaldøyene"}\r
-        HN{"Honduras"}\r
-        HR{"Kroatia"}\r
-        HT{"Haiti"}\r
-        HU{"Ungarn"}\r
-        IC{"Kanariøyene"}\r
-        ID{"Indonesia"}\r
-        IE{"Irland"}\r
-        IL{"Israel"}\r
-        IM{"Man"}\r
-        IN{"India"}\r
-        IO{"Det britiske territoriet i Indiahavet"}\r
-        IQ{"Irak"}\r
-        IR{"Iran"}\r
-        IS{"Island"}\r
-        IT{"Italia"}\r
-        JE{"Jersey"}\r
-        JM{"Jamaica"}\r
-        JO{"Jordan"}\r
-        JP{"Japan"}\r
-        KE{"Kenya"}\r
-        KG{"Kirgisistan"}\r
-        KH{"Kambodsja"}\r
-        KI{"Kiribati"}\r
-        KM{"Komorene"}\r
-        KN{"Saint Kitts og Nevis"}\r
-        KP{"Nord-Korea"}\r
-        KR{"Sør-Korea"}\r
-        KW{"Kuwait"}\r
-        KY{"Caymanøyene"}\r
-        KZ{"Kasakhstan"}\r
-        LA{"Laos"}\r
-        LB{"Libanon"}\r
-        LC{"St. Lucia"}\r
-        LI{"Liechtenstein"}\r
-        LK{"Sri Lanka"}\r
-        LR{"Liberia"}\r
-        LS{"Lesotho"}\r
-        LT{"Litauen"}\r
-        LU{"Luxemburg"}\r
-        LV{"Latvia"}\r
-        LY{"Libya"}\r
-        MA{"Marokko"}\r
-        MC{"Monaco"}\r
-        MD{"Moldova"}\r
-        ME{"Montenegro"}\r
-        MF{"Saint-Martin"}\r
-        MG{"Madagaskar"}\r
-        MH{"Marshalløyene"}\r
-        MK{"Nord-Makedonia"}\r
-        ML{"Mali"}\r
-        MM{"Myanmar (Burma)"}\r
-        MN{"Mongolia"}\r
-        MO{"Macao SAR Kina"}\r
-        MP{"Nord-Marianene"}\r
-        MQ{"Martinique"}\r
-        MR{"Mauritania"}\r
-        MS{"Montserrat"}\r
-        MT{"Malta"}\r
-        MU{"Mauritius"}\r
-        MV{"Maldivene"}\r
-        MW{"Malawi"}\r
-        MX{"Mexico"}\r
-        MY{"Malaysia"}\r
-        MZ{"Mosambik"}\r
-        NA{"Namibia"}\r
-        NC{"Ny-Caledonia"}\r
-        NE{"Niger"}\r
-        NF{"Norfolkøya"}\r
-        NG{"Nigeria"}\r
-        NI{"Nicaragua"}\r
-        NL{"Nederland"}\r
-        NO{"Norge"}\r
-        NP{"Nepal"}\r
-        NR{"Nauru"}\r
-        NU{"Niue"}\r
-        NZ{"New Zealand"}\r
-        OM{"Oman"}\r
-        PA{"Panama"}\r
-        PE{"Peru"}\r
-        PF{"Fransk Polynesia"}\r
-        PG{"Papua Ny-Guinea"}\r
-        PH{"Filippinene"}\r
-        PK{"Pakistan"}\r
-        PL{"Polen"}\r
-        PM{"Saint-Pierre-et-Miquelon"}\r
-        PN{"Pitcairnøyene"}\r
-        PR{"Puerto Rico"}\r
-        PS{"Det palestinske området"}\r
-        PT{"Portugal"}\r
-        PW{"Palau"}\r
-        PY{"Paraguay"}\r
-        QA{"Qatar"}\r
-        QO{"Ytre Oseania"}\r
-        RE{"Réunion"}\r
-        RO{"Romania"}\r
-        RS{"Serbia"}\r
-        RU{"Russland"}\r
-        RW{"Rwanda"}\r
-        SA{"Saudi-Arabia"}\r
-        SB{"Salomonøyene"}\r
-        SC{"Seychellene"}\r
-        SD{"Sudan"}\r
-        SE{"Sverige"}\r
-        SG{"Singapore"}\r
-        SH{"St. Helena"}\r
-        SI{"Slovenia"}\r
-        SJ{"Svalbard og Jan Mayen"}\r
-        SK{"Slovakia"}\r
-        SL{"Sierra Leone"}\r
-        SM{"San Marino"}\r
-        SN{"Senegal"}\r
-        SO{"Somalia"}\r
-        SR{"Surinam"}\r
-        SS{"Sør-Sudan"}\r
-        ST{"São Tomé og Príncipe"}\r
-        SV{"El Salvador"}\r
-        SX{"Sint Maarten"}\r
-        SY{"Syria"}\r
-        SZ{"Eswatini"}\r
-        TA{"Tristan da Cunha"}\r
-        TC{"Turks- og Caicosøyene"}\r
-        TD{"Tsjad"}\r
-        TF{"De franske sørterritorier"}\r
-        TG{"Togo"}\r
-        TH{"Thailand"}\r
-        TJ{"Tadsjikistan"}\r
-        TK{"Tokelau"}\r
-        TL{"Øst-Timor"}\r
-        TM{"Turkmenistan"}\r
-        TN{"Tunisia"}\r
-        TO{"Tonga"}\r
-        TR{"Tyrkia"}\r
-        TT{"Trinidad og Tobago"}\r
-        TV{"Tuvalu"}\r
-        TW{"Taiwan"}\r
-        TZ{"Tanzania"}\r
-        UA{"Ukraina"}\r
-        UG{"Uganda"}\r
-        UM{"USAs ytre øyer"}\r
-        UN{"FN"}\r
-        US{"USA"}\r
-        UY{"Uruguay"}\r
-        UZ{"Usbekistan"}\r
-        VA{"Vatikanstaten"}\r
-        VC{"St. Vincent og Grenadinene"}\r
-        VE{"Venezuela"}\r
-        VG{"De britiske jomfruøyene"}\r
-        VI{"De amerikanske jomfruøyene"}\r
-        VN{"Vietnam"}\r
-        VU{"Vanuatu"}\r
-        WF{"Wallis og Futuna"}\r
-        WS{"Samoa"}\r
-        XA{"pseudospråk – aksenter"}\r
-        XB{"pseudospråk – tekst begge veier"}\r
-        XK{"Kosovo"}\r
-        YE{"Jemen"}\r
-        YT{"Mayotte"}\r
-        ZA{"Sør-Afrika"}\r
-        ZM{"Zambia"}\r
-        ZW{"Zimbabwe"}\r
-        ZZ{"ukjent område"}\r
-    }\r
-    Countries%short{\r
-        HK{"Hongkong"}\r
-        MO{"Macao"}\r
-        PS{"Palestina"}\r
-    }\r
-    Countries%variant{\r
-        CD{"Den demokratiske republikken Kongo"}\r
-        CG{"Republikken Kongo"}\r
-        CZ{"Den tsjekkiske republikk"}\r
-        FK{"Falklandsøyene (Islas Malvinas)"}\r
-        SZ{"Swaziland"}\r
-        TL{"Timor-Leste"}\r
-    }\r
+    %%Parent{"no"}\r
 }\r
diff --git a/source/data/region/nb_NO.txt b/source/data/region/nb_NO.txt
deleted file mode 100644 (file)
index 3307fc3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html\r
-// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
-/**\r
- * generated alias target\r
- */\r
-nb_NO{\r
-    ___{""}\r
-}\r
index 926f723..c296aac 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nn{\r
+    %%Parent{"no"}\r
     Countries{\r
         001{"verda"}\r
-        002{"Afrika"}\r
-        003{"Nord-Amerika"}\r
-        005{"Sør-Amerika"}\r
-        009{"Oseania"}\r
-        011{"Vest-Afrika"}\r
         013{"Sentral-Amerika"}\r
         014{"Aust-Afrika"}\r
-        015{"Nord-Afrika"}\r
-        017{"Sentral-Afrika"}\r
         018{"Sørlege Afrika"}\r
-        019{"Amerika"}\r
         021{"Nordlege Amerika"}\r
-        029{"Karibia"}\r
         030{"Aust-Asia"}\r
-        034{"Sør-Asia"}\r
         035{"Søraust-Asia"}\r
-        039{"Sør-Europa"}\r
-        053{"Australasia"}\r
-        054{"Melanesia"}\r
-        057{"Mikronesia"}\r
-        061{"Polynesia"}\r
-        142{"Asia"}\r
-        143{"Sentral-Asia"}\r
-        145{"Vest-Asia"}\r
-        150{"Europa"}\r
         151{"Aust-Europa"}\r
-        154{"Nord-Europa"}\r
-        155{"Vest-Europa"}\r
-        202{"Afrika sør for Sahara"}\r
-        419{"Latin-Amerika"}\r
-        AC{"Ascension"}\r
-        AD{"Andorra"}\r
         AE{"Dei sameinte arabiske emirata"}\r
-        AF{"Afghanistan"}\r
-        AG{"Antigua og Barbuda"}\r
-        AI{"Anguilla"}\r
-        AL{"Albania"}\r
-        AM{"Armenia"}\r
-        AO{"Angola"}\r
-        AQ{"Antarktis"}\r
-        AR{"Argentina"}\r
-        AS{"Amerikansk Samoa"}\r
         AT{"Austerrike"}\r
-        AU{"Australia"}\r
-        AW{"Aruba"}\r
-        AX{"Åland"}\r
-        AZ{"Aserbajdsjan"}\r
-        BA{"Bosnia-Hercegovina"}\r
-        BB{"Barbados"}\r
-        BD{"Bangladesh"}\r
-        BE{"Belgia"}\r
-        BF{"Burkina Faso"}\r
-        BG{"Bulgaria"}\r
-        BH{"Bahrain"}\r
-        BI{"Burundi"}\r
-        BJ{"Benin"}\r
         BL{"Saint Barthélemy"}\r
-        BM{"Bermuda"}\r
-        BN{"Brunei"}\r
-        BO{"Bolivia"}\r
-        BQ{"Karibisk Nederland"}\r
-        BR{"Brasil"}\r
-        BS{"Bahamas"}\r
-        BT{"Bhutan"}\r
-        BV{"Bouvetøya"}\r
-        BW{"Botswana"}\r
         BY{"Kviterussland"}\r
-        BZ{"Belize"}\r
-        CA{"Canada"}\r
         CC{"Kokosøyane"}\r
         CD{"Kongo-Kinshasa"}\r
         CF{"Den sentralafrikanske republikken"}\r
-        CG{"Kongo-Brazzaville"}\r
-        CH{"Sveits"}\r
         CI{"Elfenbeinskysten"}\r
         CK{"Cookøyane"}\r
-        CL{"Chile"}\r
-        CM{"Kamerun"}\r
-        CN{"Kina"}\r
-        CO{"Colombia"}\r
-        CP{"Clippertonøya"}\r
-        CR{"Costa Rica"}\r
-        CU{"Cuba"}\r
-        CV{"Kapp Verde"}\r
-        CW{"Curaçao"}\r
-        CX{"Christmasøya"}\r
-        CY{"Kypros"}\r
-        CZ{"Tsjekkia"}\r
-        DE{"Tyskland"}\r
-        DG{"Diego Garcia"}\r
-        DJ{"Djibouti"}\r
-        DK{"Danmark"}\r
-        DM{"Dominica"}\r
         DO{"Den dominikanske republikken"}\r
-        DZ{"Algerie"}\r
-        EA{"Ceuta og Melilla"}\r
-        EC{"Ecuador"}\r
-        EE{"Estland"}\r
-        EG{"Egypt"}\r
-        EH{"Vest-Sahara"}\r
-        ER{"Eritrea"}\r
-        ES{"Spania"}\r
-        ET{"Etiopia"}\r
         EU{"Den europeiske unionen"}\r
         EZ{"eurosona"}\r
-        FI{"Finland"}\r
-        FJ{"Fiji"}\r
         FK{"Falklandsøyane"}\r
-        FM{"Mikronesiaføderasjonen"}\r
         FO{"Færøyane"}\r
-        FR{"Frankrike"}\r
-        GA{"Gabon"}\r
-        GB{"Storbritannia"}\r
-        GD{"Grenada"}\r
-        GE{"Georgia"}\r
-        GF{"Fransk Guyana"}\r
-        GG{"Guernsey"}\r
-        GH{"Ghana"}\r
-        GI{"Gibraltar"}\r
-        GL{"Grønland"}\r
-        GM{"Gambia"}\r
-        GN{"Guinea"}\r
-        GP{"Guadeloupe"}\r
-        GQ{"Ekvatorial-Guinea"}\r
-        GR{"Hellas"}\r
         GS{"Sør-Georgia og Sør-Sandwichøyane"}\r
-        GT{"Guatemala"}\r
-        GU{"Guam"}\r
-        GW{"Guinea-Bissau"}\r
-        GY{"Guyana"}\r
-        HK{"Hongkong SAR Kina"}\r
         HM{"Heardøya og McDonaldøyane"}\r
-        HN{"Honduras"}\r
-        HR{"Kroatia"}\r
-        HT{"Haiti"}\r
-        HU{"Ungarn"}\r
         IC{"Kanariøyane"}\r
-        ID{"Indonesia"}\r
-        IE{"Irland"}\r
-        IL{"Israel"}\r
-        IM{"Man"}\r
-        IN{"India"}\r
-        IO{"Det britiske territoriet i Indiahavet"}\r
-        IQ{"Irak"}\r
-        IR{"Iran"}\r
-        IS{"Island"}\r
-        IT{"Italia"}\r
-        JE{"Jersey"}\r
-        JM{"Jamaica"}\r
-        JO{"Jordan"}\r
-        JP{"Japan"}\r
-        KE{"Kenya"}\r
-        KG{"Kirgisistan"}\r
-        KH{"Kambodsja"}\r
-        KI{"Kiribati"}\r
         KM{"Komorane"}\r
-        KN{"Saint Kitts og Nevis"}\r
-        KP{"Nord-Korea"}\r
-        KR{"Sør-Korea"}\r
-        KW{"Kuwait"}\r
         KY{"Caymanøyane"}\r
-        KZ{"Kasakhstan"}\r
-        LA{"Laos"}\r
-        LB{"Libanon"}\r
-        LC{"St. Lucia"}\r
-        LI{"Liechtenstein"}\r
-        LK{"Sri Lanka"}\r
-        LR{"Liberia"}\r
-        LS{"Lesotho"}\r
-        LT{"Litauen"}\r
         LU{"Luxembourg"}\r
-        LV{"Latvia"}\r
-        LY{"Libya"}\r
-        MA{"Marokko"}\r
-        MC{"Monaco"}\r
-        MD{"Moldova"}\r
-        ME{"Montenegro"}\r
-        MF{"Saint-Martin"}\r
-        MG{"Madagaskar"}\r
         MH{"Marshalløyane"}\r
-        MK{"Nord-Makedonia"}\r
-        ML{"Mali"}\r
-        MM{"Myanmar (Burma)"}\r
-        MN{"Mongolia"}\r
-        MO{"Macao SAR Kina"}\r
         MP{"Nord-Marianane"}\r
-        MQ{"Martinique"}\r
-        MR{"Mauritania"}\r
-        MS{"Montserrat"}\r
-        MT{"Malta"}\r
-        MU{"Mauritius"}\r
         MV{"Maldivane"}\r
-        MW{"Malawi"}\r
-        MX{"Mexico"}\r
-        MY{"Malaysia"}\r
-        MZ{"Mosambik"}\r
-        NA{"Namibia"}\r
-        NC{"Ny-Caledonia"}\r
-        NE{"Niger"}\r
-        NF{"Norfolkøya"}\r
-        NG{"Nigeria"}\r
-        NI{"Nicaragua"}\r
-        NL{"Nederland"}\r
         NO{"Noreg"}\r
-        NP{"Nepal"}\r
-        NR{"Nauru"}\r
-        NU{"Niue"}\r
-        NZ{"New Zealand"}\r
-        OM{"Oman"}\r
-        PA{"Panama"}\r
-        PE{"Peru"}\r
-        PF{"Fransk Polynesia"}\r
-        PG{"Papua Ny-Guinea"}\r
         PH{"Filippinane"}\r
-        PK{"Pakistan"}\r
-        PL{"Polen"}\r
-        PM{"Saint-Pierre-et-Miquelon"}\r
         PN{"Pitcairn"}\r
-        PR{"Puerto Rico"}\r
-        PS{"Det palestinske området"}\r
-        PT{"Portugal"}\r
-        PW{"Palau"}\r
-        PY{"Paraguay"}\r
-        QA{"Qatar"}\r
-        QO{"Ytre Oseania"}\r
-        RE{"Réunion"}\r
-        RO{"Romania"}\r
-        RS{"Serbia"}\r
-        RU{"Russland"}\r
-        RW{"Rwanda"}\r
-        SA{"Saudi-Arabia"}\r
         SB{"Salomonøyane"}\r
         SC{"Seychellane"}\r
-        SD{"Sudan"}\r
-        SE{"Sverige"}\r
-        SG{"Singapore"}\r
         SH{"Saint Helena"}\r
-        SI{"Slovenia"}\r
-        SJ{"Svalbard og Jan Mayen"}\r
-        SK{"Slovakia"}\r
-        SL{"Sierra Leone"}\r
-        SM{"San Marino"}\r
-        SN{"Senegal"}\r
-        SO{"Somalia"}\r
-        SR{"Surinam"}\r
-        SS{"Sør-Sudan"}\r
-        ST{"São Tomé og Príncipe"}\r
-        SV{"El Salvador"}\r
-        SX{"Sint Maarten"}\r
-        SY{"Syria"}\r
-        SZ{"Eswatini"}\r
-        TA{"Tristan da Cunha"}\r
         TC{"Turks- og Caicosøyane"}\r
-        TD{"Tsjad"}\r
         TF{"Dei franske sørterritoria"}\r
-        TG{"Togo"}\r
-        TH{"Thailand"}\r
-        TJ{"Tadsjikistan"}\r
-        TK{"Tokelau"}\r
         TL{"Aust-Timor"}\r
-        TM{"Turkmenistan"}\r
-        TN{"Tunisia"}\r
-        TO{"Tonga"}\r
-        TR{"Tyrkia"}\r
-        TT{"Trinidad og Tobago"}\r
-        TV{"Tuvalu"}\r
-        TW{"Taiwan"}\r
-        TZ{"Tanzania"}\r
-        UA{"Ukraina"}\r
-        UG{"Uganda"}\r
         UM{"USAs ytre småøyar"}\r
         UN{"SN"}\r
-        US{"USA"}\r
-        UY{"Uruguay"}\r
-        UZ{"Usbekistan"}\r
-        VA{"Vatikanstaten"}\r
         VC{"St. Vincent og Grenadinane"}\r
-        VE{"Venezuela"}\r
         VG{"Dei britiske Jomfruøyane"}\r
         VI{"Dei amerikanske Jomfruøyane"}\r
-        VN{"Vietnam"}\r
-        VU{"Vanuatu"}\r
-        WF{"Wallis og Futuna"}\r
-        WS{"Samoa"}\r
         XA{"pseudospråk – aksentar"}\r
         XB{"pseudospråk – RTL"}\r
-        XK{"Kosovo"}\r
-        YE{"Jemen"}\r
-        YT{"Mayotte"}\r
-        ZA{"Sør-Afrika"}\r
-        ZM{"Zambia"}\r
-        ZW{"Zimbabwe"}\r
-        ZZ{"ukjent område"}\r
-    }\r
-    Countries%short{\r
-        HK{"Hongkong"}\r
-        MO{"Macao"}\r
-        PS{"Palestina"}\r
     }\r
     Countries%variant{\r
-        CD{"Den demokratiske republikken Kongo"}\r
-        CG{"Republikken Kongo"}\r
         FK{"Falklandsøyane (Islas Malvinas)"}\r
-        SZ{"Swaziland"}\r
+        TL{"Aust-Timor"}\r
     }\r
 }\r
index a6eca3c..dc01633 100644 (file)
@@ -2,5 +2,313 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no{\r
-    "%%ALIAS"{"nb"}\r
+    Countries{\r
+        001{"verden"}\r
+        002{"Afrika"}\r
+        003{"Nord-Amerika"}\r
+        005{"Sør-Amerika"}\r
+        009{"Oseania"}\r
+        011{"Vest-Afrika"}\r
+        013{"Mellom-Amerika"}\r
+        014{"Øst-Afrika"}\r
+        015{"Nord-Afrika"}\r
+        017{"Sentral-Afrika"}\r
+        018{"Sørlige Afrika"}\r
+        019{"Amerika"}\r
+        021{"Nordlige Amerika"}\r
+        029{"Karibia"}\r
+        030{"Øst-Asia"}\r
+        034{"Sør-Asia"}\r
+        035{"Sørøst-Asia"}\r
+        039{"Sør-Europa"}\r
+        053{"Australasia"}\r
+        054{"Melanesia"}\r
+        057{"Mikronesia"}\r
+        061{"Polynesia"}\r
+        142{"Asia"}\r
+        143{"Sentral-Asia"}\r
+        145{"Vest-Asia"}\r
+        150{"Europa"}\r
+        151{"Øst-Europa"}\r
+        154{"Nord-Europa"}\r
+        155{"Vest-Europa"}\r
+        202{"Afrika sør for Sahara"}\r
+        419{"Latin-Amerika"}\r
+        AC{"Ascension"}\r
+        AD{"Andorra"}\r
+        AE{"De forente arabiske emirater"}\r
+        AF{"Afghanistan"}\r
+        AG{"Antigua og Barbuda"}\r
+        AI{"Anguilla"}\r
+        AL{"Albania"}\r
+        AM{"Armenia"}\r
+        AO{"Angola"}\r
+        AQ{"Antarktis"}\r
+        AR{"Argentina"}\r
+        AS{"Amerikansk Samoa"}\r
+        AT{"Østerrike"}\r
+        AU{"Australia"}\r
+        AW{"Aruba"}\r
+        AX{"Åland"}\r
+        AZ{"Aserbajdsjan"}\r
+        BA{"Bosnia-Hercegovina"}\r
+        BB{"Barbados"}\r
+        BD{"Bangladesh"}\r
+        BE{"Belgia"}\r
+        BF{"Burkina Faso"}\r
+        BG{"Bulgaria"}\r
+        BH{"Bahrain"}\r
+        BI{"Burundi"}\r
+        BJ{"Benin"}\r
+        BL{"Saint-Barthélemy"}\r
+        BM{"Bermuda"}\r
+        BN{"Brunei"}\r
+        BO{"Bolivia"}\r
+        BQ{"Karibisk Nederland"}\r
+        BR{"Brasil"}\r
+        BS{"Bahamas"}\r
+        BT{"Bhutan"}\r
+        BV{"Bouvetøya"}\r
+        BW{"Botswana"}\r
+        BY{"Hviterussland"}\r
+        BZ{"Belize"}\r
+        CA{"Canada"}\r
+        CC{"Kokosøyene"}\r
+        CD{"Kongo"}\r
+        CF{"Den sentralafrikanske republikk"}\r
+        CG{"Kongo-Brazzaville"}\r
+        CH{"Sveits"}\r
+        CI{"Elfenbenskysten"}\r
+        CK{"Cookøyene"}\r
+        CL{"Chile"}\r
+        CM{"Kamerun"}\r
+        CN{"Kina"}\r
+        CO{"Colombia"}\r
+        CP{"Clippertonøya"}\r
+        CR{"Costa Rica"}\r
+        CU{"Cuba"}\r
+        CV{"Kapp Verde"}\r
+        CW{"Curaçao"}\r
+        CX{"Christmasøya"}\r
+        CY{"Kypros"}\r
+        CZ{"Tsjekkia"}\r
+        DE{"Tyskland"}\r
+        DG{"Diego Garcia"}\r
+        DJ{"Djibouti"}\r
+        DK{"Danmark"}\r
+        DM{"Dominica"}\r
+        DO{"Den dominikanske republikk"}\r
+        DZ{"Algerie"}\r
+        EA{"Ceuta og Melilla"}\r
+        EC{"Ecuador"}\r
+        EE{"Estland"}\r
+        EG{"Egypt"}\r
+        EH{"Vest-Sahara"}\r
+        ER{"Eritrea"}\r
+        ES{"Spania"}\r
+        ET{"Etiopia"}\r
+        EU{"Den europeiske union"}\r
+        EZ{"eurosonen"}\r
+        FI{"Finland"}\r
+        FJ{"Fiji"}\r
+        FK{"Falklandsøyene"}\r
+        FM{"Mikronesiaføderasjonen"}\r
+        FO{"Færøyene"}\r
+        FR{"Frankrike"}\r
+        GA{"Gabon"}\r
+        GB{"Storbritannia"}\r
+        GD{"Grenada"}\r
+        GE{"Georgia"}\r
+        GF{"Fransk Guyana"}\r
+        GG{"Guernsey"}\r
+        GH{"Ghana"}\r
+        GI{"Gibraltar"}\r
+        GL{"Grønland"}\r
+        GM{"Gambia"}\r
+        GN{"Guinea"}\r
+        GP{"Guadeloupe"}\r
+        GQ{"Ekvatorial-Guinea"}\r
+        GR{"Hellas"}\r
+        GS{"Sør-Georgia og Sør-Sandwichøyene"}\r
+        GT{"Guatemala"}\r
+        GU{"Guam"}\r
+        GW{"Guinea-Bissau"}\r
+        GY{"Guyana"}\r
+        HK{"Hongkong SAR Kina"}\r
+        HM{"Heard- og McDonaldøyene"}\r
+        HN{"Honduras"}\r
+        HR{"Kroatia"}\r
+        HT{"Haiti"}\r
+        HU{"Ungarn"}\r
+        IC{"Kanariøyene"}\r
+        ID{"Indonesia"}\r
+        IE{"Irland"}\r
+        IL{"Israel"}\r
+        IM{"Man"}\r
+        IN{"India"}\r
+        IO{"Det britiske territoriet i Indiahavet"}\r
+        IQ{"Irak"}\r
+        IR{"Iran"}\r
+        IS{"Island"}\r
+        IT{"Italia"}\r
+        JE{"Jersey"}\r
+        JM{"Jamaica"}\r
+        JO{"Jordan"}\r
+        JP{"Japan"}\r
+        KE{"Kenya"}\r
+        KG{"Kirgisistan"}\r
+        KH{"Kambodsja"}\r
+        KI{"Kiribati"}\r
+        KM{"Komorene"}\r
+        KN{"Saint Kitts og Nevis"}\r
+        KP{"Nord-Korea"}\r
+        KR{"Sør-Korea"}\r
+        KW{"Kuwait"}\r
+        KY{"Caymanøyene"}\r
+        KZ{"Kasakhstan"}\r
+        LA{"Laos"}\r
+        LB{"Libanon"}\r
+        LC{"St. Lucia"}\r
+        LI{"Liechtenstein"}\r
+        LK{"Sri Lanka"}\r
+        LR{"Liberia"}\r
+        LS{"Lesotho"}\r
+        LT{"Litauen"}\r
+        LU{"Luxemburg"}\r
+        LV{"Latvia"}\r
+        LY{"Libya"}\r
+        MA{"Marokko"}\r
+        MC{"Monaco"}\r
+        MD{"Moldova"}\r
+        ME{"Montenegro"}\r
+        MF{"Saint-Martin"}\r
+        MG{"Madagaskar"}\r
+        MH{"Marshalløyene"}\r
+        MK{"Nord-Makedonia"}\r
+        ML{"Mali"}\r
+        MM{"Myanmar (Burma)"}\r
+        MN{"Mongolia"}\r
+        MO{"Macao SAR Kina"}\r
+        MP{"Nord-Marianene"}\r
+        MQ{"Martinique"}\r
+        MR{"Mauritania"}\r
+        MS{"Montserrat"}\r
+        MT{"Malta"}\r
+        MU{"Mauritius"}\r
+        MV{"Maldivene"}\r
+        MW{"Malawi"}\r
+        MX{"Mexico"}\r
+        MY{"Malaysia"}\r
+        MZ{"Mosambik"}\r
+        NA{"Namibia"}\r
+        NC{"Ny-Caledonia"}\r
+        NE{"Niger"}\r
+        NF{"Norfolkøya"}\r
+        NG{"Nigeria"}\r
+        NI{"Nicaragua"}\r
+        NL{"Nederland"}\r
+        NO{"Norge"}\r
+        NP{"Nepal"}\r
+        NR{"Nauru"}\r
+        NU{"Niue"}\r
+        NZ{"New Zealand"}\r
+        OM{"Oman"}\r
+        PA{"Panama"}\r
+        PE{"Peru"}\r
+        PF{"Fransk Polynesia"}\r
+        PG{"Papua Ny-Guinea"}\r
+        PH{"Filippinene"}\r
+        PK{"Pakistan"}\r
+        PL{"Polen"}\r
+        PM{"Saint-Pierre-et-Miquelon"}\r
+        PN{"Pitcairnøyene"}\r
+        PR{"Puerto Rico"}\r
+        PS{"Det palestinske området"}\r
+        PT{"Portugal"}\r
+        PW{"Palau"}\r
+        PY{"Paraguay"}\r
+        QA{"Qatar"}\r
+        QO{"Ytre Oseania"}\r
+        RE{"Réunion"}\r
+        RO{"Romania"}\r
+        RS{"Serbia"}\r
+        RU{"Russland"}\r
+        RW{"Rwanda"}\r
+        SA{"Saudi-Arabia"}\r
+        SB{"Salomonøyene"}\r
+        SC{"Seychellene"}\r
+        SD{"Sudan"}\r
+        SE{"Sverige"}\r
+        SG{"Singapore"}\r
+        SH{"St. Helena"}\r
+        SI{"Slovenia"}\r
+        SJ{"Svalbard og Jan Mayen"}\r
+        SK{"Slovakia"}\r
+        SL{"Sierra Leone"}\r
+        SM{"San Marino"}\r
+        SN{"Senegal"}\r
+        SO{"Somalia"}\r
+        SR{"Surinam"}\r
+        SS{"Sør-Sudan"}\r
+        ST{"São Tomé og Príncipe"}\r
+        SV{"El Salvador"}\r
+        SX{"Sint Maarten"}\r
+        SY{"Syria"}\r
+        SZ{"Eswatini"}\r
+        TA{"Tristan da Cunha"}\r
+        TC{"Turks- og Caicosøyene"}\r
+        TD{"Tsjad"}\r
+        TF{"De franske sørterritorier"}\r
+        TG{"Togo"}\r
+        TH{"Thailand"}\r
+        TJ{"Tadsjikistan"}\r
+        TK{"Tokelau"}\r
+        TL{"Øst-Timor"}\r
+        TM{"Turkmenistan"}\r
+        TN{"Tunisia"}\r
+        TO{"Tonga"}\r
+        TR{"Tyrkia"}\r
+        TT{"Trinidad og Tobago"}\r
+        TV{"Tuvalu"}\r
+        TW{"Taiwan"}\r
+        TZ{"Tanzania"}\r
+        UA{"Ukraina"}\r
+        UG{"Uganda"}\r
+        UM{"USAs ytre øyer"}\r
+        UN{"FN"}\r
+        US{"USA"}\r
+        UY{"Uruguay"}\r
+        UZ{"Usbekistan"}\r
+        VA{"Vatikanstaten"}\r
+        VC{"St. Vincent og Grenadinene"}\r
+        VE{"Venezuela"}\r
+        VG{"De britiske jomfruøyene"}\r
+        VI{"De amerikanske jomfruøyene"}\r
+        VN{"Vietnam"}\r
+        VU{"Vanuatu"}\r
+        WF{"Wallis og Futuna"}\r
+        WS{"Samoa"}\r
+        XA{"pseudospråk – aksenter"}\r
+        XB{"pseudospråk – tekst begge veier"}\r
+        XK{"Kosovo"}\r
+        YE{"Jemen"}\r
+        YT{"Mayotte"}\r
+        ZA{"Sør-Afrika"}\r
+        ZM{"Zambia"}\r
+        ZW{"Zimbabwe"}\r
+        ZZ{"ukjent område"}\r
+    }\r
+    Countries%short{\r
+        HK{"Hongkong"}\r
+        MO{"Macao"}\r
+        PS{"Palestina"}\r
+    }\r
+    Countries%variant{\r
+        CD{"Den demokratiske republikken Kongo"}\r
+        CG{"Republikken Kongo"}\r
+        CZ{"Den tsjekkiske republikk"}\r
+        FK{"Falklandsøyene (Islas Malvinas)"}\r
+        SZ{"Swaziland"}\r
+        TL{"Timor-Leste"}\r
+    }\r
 }\r
index 40a8b61..312565f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no_NO{\r
-    "%%ALIAS"{"nb_NO"}\r
+    "%%ALIAS"{"no"}\r
 }\r
index 0bf8e20..fe775ab 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 root{\r
-    Version{"38.1"}\r
+    Version{"39"}\r
 }\r
index 0dd6859..4608b82 100644 (file)
@@ -37,7 +37,7 @@
 Đ → D ; # 0110;LATIN CAPITAL LETTER D WITH STROKE\r
 đ → d ; # 0111;LATIN SMALL LETTER D WITH STROKE\r
 Ħ → H ; # 0126;LATIN CAPITAL LETTER H WITH STROKE\r
-ħ → h ; # 0126;LATIN SMALL LETTER H WITH STROKE\r
+ħ → h ; # 0127;LATIN SMALL LETTER H WITH STROKE\r
 ı → i ; # 0131;LATIN SMALL LETTER DOTLESS I\r
 IJ → IJ ; # 0132;LATIN CAPITAL LIGATURE IJ (compat)\r
 ij → ij ; # 0133;LATIN SMALL LIGATURE IJ (compat)\r
 ₣ → 'Fr.' ; # 20A3;FRENCH FRANC SIGN (from ‹character-fallback›)\r
 ₤ → 'L.' ; # 20A4;LIRA SIGN (from ‹character-fallback›)\r
 ₧ → Pts ; # 20A7;PESETA SIGN (from ‹character-fallback›)\r
-₺ → TL ; # 20BA;TURKISH LIRA SIGN (from ‹character-fallback›)\r
 ₹ → Rs ; # 20B9;INDIAN RUPEE SIGN (from ‹character-fallback›)\r
+₺ → TL ; # 20BA;TURKISH LIRA SIGN (from ‹character-fallback›)\r
 ℀ → 'a/c' ; # 2100;ACCOUNT OF (compat)\r
 ℁ → 'a/s' ; # 2101;ADDRESSED TO THE SUBJECT (compat)\r
 ℂ → C ; # 2102;DOUBLE-STRUCK CAPITAL C (compat)\r
 ⒳ → '(x)' ; # 24B3;PARENTHESIZED LATIN SMALL LETTER X (compat)\r
 ⒴ → '(y)' ; # 24B4;PARENTHESIZED LATIN SMALL LETTER Y (compat)\r
 ⒵ → '(z)' ; # 24B5;PARENTHESIZED LATIN SMALL LETTER Z (compat)\r
+🄐 → '(A)' ; # 1F110;PARENTHESIZED LATIN CAPITAL LETTER A (compat)\r
+🄑 → '(B)' ; # 1F111;PARENTHESIZED LATIN CAPITAL LETTER B (compat)\r
+🄒 → '(C)' ; # 1F112;PARENTHESIZED LATIN CAPITAL LETTER C (compat)\r
+🄓 → '(D)' ; # 1F113;PARENTHESIZED LATIN CAPITAL LETTER D (compat)\r
+🄔 → '(E)' ; # 1F114;PARENTHESIZED LATIN CAPITAL LETTER E (compat)\r
+🄕 → '(F)' ; # 1F115;PARENTHESIZED LATIN CAPITAL LETTER F (compat)\r
+🄖 → '(G)' ; # 1F116;PARENTHESIZED LATIN CAPITAL LETTER G (compat)\r
+🄗 → '(H)' ; # 1F117;PARENTHESIZED LATIN CAPITAL LETTER H (compat)\r
+🄘 → '(I)' ; # 1F118;PARENTHESIZED LATIN CAPITAL LETTER I (compat)\r
+🄙 → '(J)' ; # 1F119;PARENTHESIZED LATIN CAPITAL LETTER J (compat)\r
+🄚 → '(K)' ; # 1F11A;PARENTHESIZED LATIN CAPITAL LETTER K (compat)\r
+🄛 → '(L)' ; # 1F11B;PARENTHESIZED LATIN CAPITAL LETTER L (compat)\r
+🄜 → '(M)' ; # 1F11C;PARENTHESIZED LATIN CAPITAL LETTER M (compat)\r
+🄝 → '(N)' ; # 1F11D;PARENTHESIZED LATIN CAPITAL LETTER N (compat)\r
+🄞 → '(O)' ; # 1F11E;PARENTHESIZED LATIN CAPITAL LETTER O (compat)\r
+🄟 → '(P)' ; # 1F11F;PARENTHESIZED LATIN CAPITAL LETTER P (compat)\r
+🄠 → '(Q)' ; # 1F120;PARENTHESIZED LATIN CAPITAL LETTER Q (compat)\r
+🄡 → '(R)' ; # 1F121;PARENTHESIZED LATIN CAPITAL LETTER R (compat)\r
+🄢 → '(S)' ; # 1F122;PARENTHESIZED LATIN CAPITAL LETTER S (compat)\r
+🄣 → '(T)' ; # 1F123;PARENTHESIZED LATIN CAPITAL LETTER T (compat)\r
+🄤 → '(U)' ; # 1F124;PARENTHESIZED LATIN CAPITAL LETTER U (compat)\r
+🄥 → '(V)' ; # 1F125;PARENTHESIZED LATIN CAPITAL LETTER V (compat)\r
+🄦 → '(W)' ; # 1F126;PARENTHESIZED LATIN CAPITAL LETTER W (compat)\r
+🄧 → '(X)' ; # 1F127;PARENTHESIZED LATIN CAPITAL LETTER X (compat)\r
+🄨 → '(Y)' ; # 1F128;PARENTHESIZED LATIN CAPITAL LETTER Y (compat)\r
+🄩 → '(Z)' ; # 1F129;PARENTHESIZED LATIN CAPITAL LETTER Z (compat)\r
 #\r
 # Roman numerals\r
 #\r
 ¼ → ' 1/4' ; # 00BC;VULGAR FRACTION ONE QUARTER (from ‹character-fallback›)\r
 ½ → ' 1/2' ; # 00BD;VULGAR FRACTION ONE HALF (from ‹character-fallback›)\r
 ¾ → ' 3/4' ; # 00BE;VULGAR FRACTION THREE QUARTERS (from ‹character-fallback›)\r
+⅐ → ' 1/7' ; # 2150;VULGAR FRACTION ONE SEVENTH\r
+⅑ → ' 1/9' ; # 2151;VULGAR FRACTION ONE NINTH\r
+⅒ → ' 1/10' ; # 2151;VULGAR FRACTION ONE TENTH\r
 ⅓ → ' 1/3' ; # 2153;VULGAR FRACTION ONE THIRD (from ‹character-fallback›)\r
 ⅔ → ' 2/3' ; # 2154;VULGAR FRACTION TWO THIRDS (from ‹character-fallback›)\r
 ⅕ → ' 1/5' ; # 2155;VULGAR FRACTION ONE FIFTH (from ‹character-fallback›)\r
 ⅝ → ' 5/8' ; # 215D;VULGAR FRACTION FIVE EIGHTHS (from ‹character-fallback›)\r
 ⅞ → ' 7/8' ; # 215E;VULGAR FRACTION SEVEN EIGHTHS (from ‹character-fallback›)\r
 ⅟ → ' 1/' ; # 215F;FRACTION NUMERATOR ONE (from ‹character-fallback›)\r
+↉ → ' 0/3' ; # 2189;VULGAR FRACTION ZERO THIRDS\r
 #\r
 # Enclosed numeric\r
 #\r
 ⒅ → '(18)' ; # 2485;PARENTHESIZED NUMBER EIGHTEEN (compat)\r
 ⒆ → '(19)' ; # 2486;PARENTHESIZED NUMBER NINETEEN (compat)\r
 ⒇ → '(20)' ; # 2487;PARENTHESIZED NUMBER TWENTY (compat)\r
+🄀 → '0.' ; # 1F100;DIGIT ZERO FULL STOP (compat)\r
 ⒈ → '1.' ; # 2488;DIGIT ONE FULL STOP (compat)\r
 ⒉ → '2.' ; # 2489;DIGIT TWO FULL STOP (compat)\r
 ⒊ → '3.' ; # 248A;DIGIT THREE FULL STOP (compat)\r
 ⒙ → '18.' ; # 2499;NUMBER EIGHTEEN FULL STOP (compat)\r
 ⒚ → '19.' ; # 249A;NUMBER NINETEEN FULL STOP (compat)\r
 ⒛ → '20.' ; # 249B;NUMBER TWENTY FULL STOP (compat)\r
+🄁 → '0,' ; # 1F101;DIGIT ZERO COMMA (compat)\r
+🄂 → '1,' ; # 1F102;DIGIT ONE COMMA (compat)\r
+🄃 → '2,' ; # 1F103;DIGIT TWO COMMA (compat)\r
+🄄 → '3,' ; # 1F104;DIGIT THREE COMMA (compat)\r
+🄅 → '4,' ; # 1F105;DIGIT FOUR COMMA (compat)\r
+🄆 → '5,' ; # 1F106;DIGIT FIVE COMMA (compat)\r
+🄇 → '6,' ; # 1F107;DIGIT SIX COMMA (compat)\r
+🄈 → '7,' ; # 1F108;DIGIT SEVEN COMMA (compat)\r
+🄉 → '8,' ; # 1F109;DIGIT EIGHT COMMA (compat)\r
+🄊 → '9,' ; # 1F10A;DIGIT NINE COMMA (compat)\r
 #\r
 # Other numeric (ideographic and fullwidth)\r
 #\r
 #\r
 # Other misc punctuation and symbols\r
 #\r
+¡ → '!' ; # 00A1;INVERTED EXCLAMATION MARK\r
+¿ → '?' ; # 00BF;INVERTED QUESTION MARK\r
 ˂ → '<' ; # 02C2;MODIFIER LETTER LEFT ARROWHEAD\r
 ˃ → '>' ; # 02C3;MODIFIER LETTER RIGHT ARROWHEAD\r
 ˄ → '^' ; # 02C4;MODIFIER LETTER UP ARROWHEAD\r
 ⁈ → '?!' ; # 2048;QUESTION EXCLAMATION MARK (compat)\r
 ⁉ → '!?' ; # 2049;EXCLAMATION QUESTION MARK (compat)\r
 ⁎ → '*' ; # 204E;LOW ASTERISK\r
+\← → '<-' ; # 2190;LEFTWARDS ARROW\r
+\→ → '->' ; # 2192;RIGHTWARDS ARROW\r
+\↔ → '<->' ; # 2194;LEFT RIGHT ARROW\r
+← → '<-' ; # FFE9;HALFWIDTH LEFTWARDS ARROW\r
+→ → '->' ; # FFEB;HALFWIDTH RIGHTWARDS ARROW\r
 # CJK\r
 、 → ',' ; # 3001;IDEOGRAPHIC COMMA\r
 。 → '.' ; # 3002;IDEOGRAPHIC FULL STOP\r
 #\r
 # Other math operators (non-ASCII-range)\r
 #\r
+± → '+/-' ; # 00B1;PLUS-MINUS SIGN\r
 × → '*' ; # 00D7;MULTIPLICATION SIGN\r
 ÷ → '/' ; # 00F7;DIVISION SIGN\r
 ˖ → '+' ; # 02D6;MODIFIER LETTER PLUS SIGN\r
index 84ccf84..f5a217a 100644 (file)
@@ -2358,144 +2358,144 @@ cp;03FD;age=4.1;cf=037B;CWCF;CWL;gc=Lu;na=GREEK CAPITAL REVERSED LUNATE SIGMA SY
 cp;03FE;age=4.1;cf=037C;CWCF;CWL;gc=Lu;na=GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;NFKC_CF=037C;SB=UP;scf=037C;slc=037C;Upper\r
 cp;03FF;age=4.1;cf=037D;CWCF;CWL;gc=Lu;na=GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;NFKC_CF=037D;SB=UP;scf=037D;slc=037D;Upper\r
 \r
-block;0400..04FF;age=1.1;Alpha;blk=Cyrillic;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS\r
+block;0400..04FF;age=1.1;Alpha;blk=Cyrillic;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Cyrl;WB=LE;XIDC;XIDS\r
 # 0400..04FF Cyrillic\r
 # Cyrillic extensions\r
-cp;0400;age=3.0;cf=0450;CWCF;CWKCF;CWL;dm=0415 0300;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER IE WITH GRAVE;NFD_QC=N;NFKC_CF=0450;NFKD_QC=N;SB=UP;scf=0450;slc=0450;Upper\r
-cp;0401;cf=0451;CWCF;CWKCF;CWL;dm=0415 0308;dt=Can;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER IO;NFD_QC=N;NFKC_CF=0451;NFKD_QC=N;SB=UP;scf=0451;slc=0451;Upper\r
-cp;0402;cf=0452;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DJE;NFKC_CF=0452;SB=UP;scf=0452;slc=0452;Upper\r
-cp;0403;cf=0453;CWCF;CWKCF;CWL;dm=0413 0301;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER GJE;NFD_QC=N;NFKC_CF=0453;NFKD_QC=N;SB=UP;scf=0453;slc=0453;Upper\r
-cp;0404;cf=0454;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER UKRAINIAN IE;NFKC_CF=0454;SB=UP;scf=0454;slc=0454;Upper\r
-cp;0405;cf=0455;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZE;NFKC_CF=0455;SB=UP;scf=0455;slc=0455;Upper\r
-cp;0406;cf=0456;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;NFKC_CF=0456;SB=UP;scf=0456;slc=0456;Upper\r
-cp;0407;cf=0457;CWCF;CWKCF;CWL;dm=0406 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER YI;NFD_QC=N;NFKC_CF=0457;NFKD_QC=N;SB=UP;scf=0457;slc=0457;Upper\r
-cp;0408;cf=0458;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER JE;NFKC_CF=0458;SB=UP;scf=0458;slc=0458;Upper\r
-cp;0409;cf=0459;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER LJE;NFKC_CF=0459;SB=UP;scf=0459;slc=0459;Upper\r
-cp;040A;cf=045A;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER NJE;NFKC_CF=045A;SB=UP;scf=045A;slc=045A;Upper\r
-cp;040B;cf=045B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TSHE;NFKC_CF=045B;SB=UP;scf=045B;slc=045B;Upper\r
-cp;040C;cf=045C;CWCF;CWKCF;CWL;dm=041A 0301;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER KJE;NFD_QC=N;NFKC_CF=045C;NFKD_QC=N;SB=UP;scf=045C;slc=045C;Upper\r
-cp;040D;age=3.0;cf=045D;CWCF;CWKCF;CWL;dm=0418 0300;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER I WITH GRAVE;NFD_QC=N;NFKC_CF=045D;NFKD_QC=N;SB=UP;scf=045D;slc=045D;Upper\r
-cp;040E;cf=045E;CWCF;CWKCF;CWL;dm=0423 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER SHORT U;NFD_QC=N;NFKC_CF=045E;NFKD_QC=N;SB=UP;scf=045E;slc=045E;Upper\r
-cp;040F;cf=045F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZHE;NFKC_CF=045F;SB=UP;scf=045F;slc=045F;Upper\r
+cp;0400;age=3.0;cf=0450;CWCF;CWKCF;CWL;dm=0415 0300;dt=Can;na=CYRILLIC CAPITAL LETTER IE WITH GRAVE;NFD_QC=N;NFKC_CF=0450;NFKD_QC=N;scf=0450;slc=0450;Upper\r
+cp;0401;cf=0451;CWCF;CWKCF;CWL;dm=0415 0308;dt=Can;ea=A;na=CYRILLIC CAPITAL LETTER IO;NFD_QC=N;NFKC_CF=0451;NFKD_QC=N;scf=0451;slc=0451;Upper\r
+cp;0402;cf=0452;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DJE;NFKC_CF=0452;scf=0452;slc=0452;Upper\r
+cp;0403;cf=0453;CWCF;CWKCF;CWL;dm=0413 0301;dt=Can;na=CYRILLIC CAPITAL LETTER GJE;NFD_QC=N;NFKC_CF=0453;NFKD_QC=N;scf=0453;slc=0453;Upper\r
+cp;0404;cf=0454;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER UKRAINIAN IE;NFKC_CF=0454;scf=0454;slc=0454;Upper\r
+cp;0405;cf=0455;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DZE;NFKC_CF=0455;scf=0455;slc=0455;Upper\r
+cp;0406;cf=0456;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;NFKC_CF=0456;scf=0456;slc=0456;Upper\r
+cp;0407;cf=0457;CWCF;CWKCF;CWL;dm=0406 0308;dt=Can;na=CYRILLIC CAPITAL LETTER YI;NFD_QC=N;NFKC_CF=0457;NFKD_QC=N;scf=0457;slc=0457;Upper\r
+cp;0408;cf=0458;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER JE;NFKC_CF=0458;scf=0458;slc=0458;Upper\r
+cp;0409;cf=0459;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER LJE;NFKC_CF=0459;scf=0459;slc=0459;Upper\r
+cp;040A;cf=045A;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER NJE;NFKC_CF=045A;scf=045A;slc=045A;Upper\r
+cp;040B;cf=045B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER TSHE;NFKC_CF=045B;scf=045B;slc=045B;Upper\r
+cp;040C;cf=045C;CWCF;CWKCF;CWL;dm=041A 0301;dt=Can;na=CYRILLIC CAPITAL LETTER KJE;NFD_QC=N;NFKC_CF=045C;NFKD_QC=N;scf=045C;slc=045C;Upper\r
+cp;040D;age=3.0;cf=045D;CWCF;CWKCF;CWL;dm=0418 0300;dt=Can;na=CYRILLIC CAPITAL LETTER I WITH GRAVE;NFD_QC=N;NFKC_CF=045D;NFKD_QC=N;scf=045D;slc=045D;Upper\r
+cp;040E;cf=045E;CWCF;CWKCF;CWL;dm=0423 0306;dt=Can;na=CYRILLIC CAPITAL LETTER SHORT U;NFD_QC=N;NFKC_CF=045E;NFKD_QC=N;scf=045E;slc=045E;Upper\r
+cp;040F;cf=045F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DZHE;NFKC_CF=045F;scf=045F;slc=045F;Upper\r
 # Basic Russian alphabet\r
-cp;0410;cf=0430;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER A;NFKC_CF=0430;SB=UP;scf=0430;slc=0430;Upper\r
-cp;0411;cf=0431;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER BE;NFKC_CF=0431;SB=UP;scf=0431;slc=0431;Upper\r
-cp;0412;cf=0432;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER VE;NFKC_CF=0432;SB=UP;scf=0432;slc=0432;Upper\r
-cp;0413;cf=0433;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE;NFKC_CF=0433;SB=UP;scf=0433;slc=0433;Upper\r
-cp;0414;cf=0434;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER DE;NFKC_CF=0434;SB=UP;scf=0434;slc=0434;Upper\r
-cp;0415;cf=0435;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER IE;NFKC_CF=0435;SB=UP;scf=0435;slc=0435;Upper\r
-cp;0416;cf=0436;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE;NFKC_CF=0436;SB=UP;scf=0436;slc=0436;Upper\r
-cp;0417;cf=0437;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ZE;NFKC_CF=0437;SB=UP;scf=0437;slc=0437;Upper\r
-cp;0418;cf=0438;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER I;NFKC_CF=0438;SB=UP;scf=0438;slc=0438;Upper\r
-cp;0419;cf=0439;CWCF;CWKCF;CWL;dm=0418 0306;dt=Can;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SHORT I;NFD_QC=N;NFKC_CF=0439;NFKD_QC=N;SB=UP;scf=0439;slc=0439;Upper\r
-cp;041A;cf=043A;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER KA;NFKC_CF=043A;SB=UP;scf=043A;slc=043A;Upper\r
-cp;041B;cf=043B;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EL;NFKC_CF=043B;SB=UP;scf=043B;slc=043B;Upper\r
-cp;041C;cf=043C;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EM;NFKC_CF=043C;SB=UP;scf=043C;slc=043C;Upper\r
-cp;041D;cf=043D;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EN;NFKC_CF=043D;SB=UP;scf=043D;slc=043D;Upper\r
-cp;041E;cf=043E;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER O;NFKC_CF=043E;SB=UP;scf=043E;slc=043E;Upper\r
-cp;041F;cf=043F;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER PE;NFKC_CF=043F;SB=UP;scf=043F;slc=043F;Upper\r
-cp;0420;cf=0440;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ER;NFKC_CF=0440;SB=UP;scf=0440;slc=0440;Upper\r
-cp;0421;cf=0441;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ES;NFKC_CF=0441;SB=UP;scf=0441;slc=0441;Upper\r
-cp;0422;cf=0442;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER TE;NFKC_CF=0442;SB=UP;scf=0442;slc=0442;Upper\r
-cp;0423;cf=0443;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER U;NFKC_CF=0443;SB=UP;scf=0443;slc=0443;Upper\r
-cp;0424;cf=0444;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EF;NFKC_CF=0444;SB=UP;scf=0444;slc=0444;Upper\r
-cp;0425;cf=0445;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER HA;NFKC_CF=0445;SB=UP;scf=0445;slc=0445;Upper\r
-cp;0426;cf=0446;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER TSE;NFKC_CF=0446;SB=UP;scf=0446;slc=0446;Upper\r
-cp;0427;cf=0447;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE;NFKC_CF=0447;SB=UP;scf=0447;slc=0447;Upper\r
-cp;0428;cf=0448;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SHA;NFKC_CF=0448;SB=UP;scf=0448;slc=0448;Upper\r
-cp;0429;cf=0449;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SHCHA;NFKC_CF=0449;SB=UP;scf=0449;slc=0449;Upper\r
-cp;042A;cf=044A;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER HARD SIGN;NFKC_CF=044A;SB=UP;scf=044A;slc=044A;Upper\r
-cp;042B;cf=044B;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER YERU;NFKC_CF=044B;SB=UP;scf=044B;slc=044B;Upper\r
-cp;042C;cf=044C;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT SIGN;NFKC_CF=044C;SB=UP;scf=044C;slc=044C;Upper\r
-cp;042D;cf=044D;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER E;NFKC_CF=044D;SB=UP;scf=044D;slc=044D;Upper\r
-cp;042E;cf=044E;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER YU;NFKC_CF=044E;SB=UP;scf=044E;slc=044E;Upper\r
-cp;042F;cf=044F;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER YA;NFKC_CF=044F;SB=UP;scf=044F;slc=044F;Upper\r
-cp;0430;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER A;stc=0410;suc=0410\r
-cp;0431;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER BE;stc=0411;suc=0411\r
-cp;0432;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER VE;stc=0412;suc=0412\r
-cp;0433;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER GHE;stc=0413;suc=0413\r
-cp;0434;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER DE;stc=0414;suc=0414\r
-cp;0435;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER IE;stc=0415;suc=0415\r
-cp;0436;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER ZHE;stc=0416;suc=0416\r
-cp;0437;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER ZE;stc=0417;suc=0417\r
-cp;0438;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER I;stc=0418;suc=0418\r
-cp;0439;CWT;CWU;dm=0438 0306;dt=Can;ea=A;Lower;na=CYRILLIC SMALL LETTER SHORT I;NFD_QC=N;NFKD_QC=N;stc=0419;suc=0419\r
-cp;043A;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER KA;stc=041A;suc=041A\r
-cp;043B;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER EL;stc=041B;suc=041B\r
-cp;043C;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER EM;stc=041C;suc=041C\r
-cp;043D;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER EN;stc=041D;suc=041D\r
-cp;043E;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER O;stc=041E;suc=041E\r
-cp;043F;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER PE;stc=041F;suc=041F\r
-cp;0440;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER ER;stc=0420;suc=0420\r
-cp;0441;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER ES;stc=0421;suc=0421\r
-cp;0442;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER TE;stc=0422;suc=0422\r
-cp;0443;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER U;stc=0423;suc=0423\r
-cp;0444;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER EF;stc=0424;suc=0424\r
-cp;0445;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER HA;stc=0425;suc=0425\r
-cp;0446;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER TSE;stc=0426;suc=0426\r
-cp;0447;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER CHE;stc=0427;suc=0427\r
-cp;0448;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER SHA;stc=0428;suc=0428\r
-cp;0449;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER SHCHA;stc=0429;suc=0429\r
-cp;044A;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER HARD SIGN;stc=042A;suc=042A\r
-cp;044B;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER YERU;stc=042B;suc=042B\r
-cp;044C;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER SOFT SIGN;stc=042C;suc=042C\r
-cp;044D;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER E;stc=042D;suc=042D\r
-cp;044E;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER YU;stc=042E;suc=042E\r
-cp;044F;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER YA;stc=042F;suc=042F\r
+cp;0410;cf=0430;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER A;NFKC_CF=0430;scf=0430;slc=0430;Upper\r
+cp;0411;cf=0431;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER BE;NFKC_CF=0431;scf=0431;slc=0431;Upper\r
+cp;0412;cf=0432;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER VE;NFKC_CF=0432;scf=0432;slc=0432;Upper\r
+cp;0413;cf=0433;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER GHE;NFKC_CF=0433;scf=0433;slc=0433;Upper\r
+cp;0414;cf=0434;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER DE;NFKC_CF=0434;scf=0434;slc=0434;Upper\r
+cp;0415;cf=0435;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER IE;NFKC_CF=0435;scf=0435;slc=0435;Upper\r
+cp;0416;cf=0436;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER ZHE;NFKC_CF=0436;scf=0436;slc=0436;Upper\r
+cp;0417;cf=0437;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER ZE;NFKC_CF=0437;scf=0437;slc=0437;Upper\r
+cp;0418;cf=0438;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER I;NFKC_CF=0438;scf=0438;slc=0438;Upper\r
+cp;0419;cf=0439;CWCF;CWKCF;CWL;dm=0418 0306;dt=Can;ea=A;na=CYRILLIC CAPITAL LETTER SHORT I;NFD_QC=N;NFKC_CF=0439;NFKD_QC=N;scf=0439;slc=0439;Upper\r
+cp;041A;cf=043A;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER KA;NFKC_CF=043A;scf=043A;slc=043A;Upper\r
+cp;041B;cf=043B;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER EL;NFKC_CF=043B;scf=043B;slc=043B;Upper\r
+cp;041C;cf=043C;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER EM;NFKC_CF=043C;scf=043C;slc=043C;Upper\r
+cp;041D;cf=043D;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER EN;NFKC_CF=043D;scf=043D;slc=043D;Upper\r
+cp;041E;cf=043E;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER O;NFKC_CF=043E;scf=043E;slc=043E;Upper\r
+cp;041F;cf=043F;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER PE;NFKC_CF=043F;scf=043F;slc=043F;Upper\r
+cp;0420;cf=0440;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER ER;NFKC_CF=0440;scf=0440;slc=0440;Upper\r
+cp;0421;cf=0441;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER ES;NFKC_CF=0441;scf=0441;slc=0441;Upper\r
+cp;0422;cf=0442;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER TE;NFKC_CF=0442;scf=0442;slc=0442;Upper\r
+cp;0423;cf=0443;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER U;NFKC_CF=0443;scf=0443;slc=0443;Upper\r
+cp;0424;cf=0444;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER EF;NFKC_CF=0444;scf=0444;slc=0444;Upper\r
+cp;0425;cf=0445;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER HA;NFKC_CF=0445;scf=0445;slc=0445;Upper\r
+cp;0426;cf=0446;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER TSE;NFKC_CF=0446;scf=0446;slc=0446;Upper\r
+cp;0427;cf=0447;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER CHE;NFKC_CF=0447;scf=0447;slc=0447;Upper\r
+cp;0428;cf=0448;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER SHA;NFKC_CF=0448;scf=0448;slc=0448;Upper\r
+cp;0429;cf=0449;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER SHCHA;NFKC_CF=0449;scf=0449;slc=0449;Upper\r
+cp;042A;cf=044A;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER HARD SIGN;NFKC_CF=044A;scf=044A;slc=044A;Upper\r
+cp;042B;cf=044B;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER YERU;NFKC_CF=044B;scf=044B;slc=044B;Upper\r
+cp;042C;cf=044C;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER SOFT SIGN;NFKC_CF=044C;scf=044C;slc=044C;Upper\r
+cp;042D;cf=044D;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER E;NFKC_CF=044D;scf=044D;slc=044D;Upper\r
+cp;042E;cf=044E;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER YU;NFKC_CF=044E;scf=044E;slc=044E;Upper\r
+cp;042F;cf=044F;CWCF;CWKCF;CWL;ea=A;na=CYRILLIC CAPITAL LETTER YA;NFKC_CF=044F;scf=044F;slc=044F;Upper\r
+cp;0430;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER A;SB=LO;stc=0410;suc=0410\r
+cp;0431;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER BE;SB=LO;stc=0411;suc=0411\r
+cp;0432;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER VE;SB=LO;stc=0412;suc=0412\r
+cp;0433;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER GHE;SB=LO;stc=0413;suc=0413\r
+cp;0434;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DE;SB=LO;stc=0414;suc=0414\r
+cp;0435;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IE;SB=LO;stc=0415;suc=0415\r
+cp;0436;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ZHE;SB=LO;stc=0416;suc=0416\r
+cp;0437;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ZE;SB=LO;stc=0417;suc=0417\r
+cp;0438;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER I;SB=LO;stc=0418;suc=0418\r
+cp;0439;CWT;CWU;dm=0438 0306;dt=Can;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SHORT I;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0419;suc=0419\r
+cp;043A;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KA;SB=LO;stc=041A;suc=041A\r
+cp;043B;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EL;SB=LO;stc=041B;suc=041B\r
+cp;043C;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EM;SB=LO;stc=041C;suc=041C\r
+cp;043D;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EN;SB=LO;stc=041D;suc=041D\r
+cp;043E;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER O;SB=LO;stc=041E;suc=041E\r
+cp;043F;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER PE;SB=LO;stc=041F;suc=041F\r
+cp;0440;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ER;SB=LO;stc=0420;suc=0420\r
+cp;0441;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ES;SB=LO;stc=0421;suc=0421\r
+cp;0442;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER TE;SB=LO;stc=0422;suc=0422\r
+cp;0443;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER U;SB=LO;stc=0423;suc=0423\r
+cp;0444;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EF;SB=LO;stc=0424;suc=0424\r
+cp;0445;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER HA;SB=LO;stc=0425;suc=0425\r
+cp;0446;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER TSE;SB=LO;stc=0426;suc=0426\r
+cp;0447;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER CHE;SB=LO;stc=0427;suc=0427\r
+cp;0448;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SHA;SB=LO;stc=0428;suc=0428\r
+cp;0449;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SHCHA;SB=LO;stc=0429;suc=0429\r
+cp;044A;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER HARD SIGN;SB=LO;stc=042A;suc=042A\r
+cp;044B;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER YERU;SB=LO;stc=042B;suc=042B\r
+cp;044C;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SOFT SIGN;SB=LO;stc=042C;suc=042C\r
+cp;044D;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER E;SB=LO;stc=042D;suc=042D\r
+cp;044E;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER YU;SB=LO;stc=042E;suc=042E\r
+cp;044F;CWT;CWU;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER YA;SB=LO;stc=042F;suc=042F\r
 # Cyrillic extensions\r
-cp;0450;age=3.0;CWT;CWU;dm=0435 0300;dt=Can;Lower;na=CYRILLIC SMALL LETTER IE WITH GRAVE;NFD_QC=N;NFKD_QC=N;stc=0400;suc=0400\r
-cp;0451;CWT;CWU;dm=0435 0308;dt=Can;ea=A;Lower;na=CYRILLIC SMALL LETTER IO;NFD_QC=N;NFKD_QC=N;stc=0401;suc=0401\r
-cp;0452;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DJE;stc=0402;suc=0402\r
-cp;0453;CWT;CWU;dm=0433 0301;dt=Can;Lower;na=CYRILLIC SMALL LETTER GJE;NFD_QC=N;NFKD_QC=N;stc=0403;suc=0403\r
-cp;0454;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER UKRAINIAN IE;stc=0404;suc=0404\r
-cp;0455;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZE;stc=0405;suc=0405\r
-cp;0456;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;SD;stc=0406;suc=0406\r
-cp;0457;CWT;CWU;dm=0456 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER YI;NFD_QC=N;NFKD_QC=N;stc=0407;suc=0407\r
-cp;0458;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER JE;SD;stc=0408;suc=0408\r
-cp;0459;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER LJE;stc=0409;suc=0409\r
-cp;045A;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER NJE;stc=040A;suc=040A\r
-cp;045B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TSHE;stc=040B;suc=040B\r
-cp;045C;CWT;CWU;dm=043A 0301;dt=Can;Lower;na=CYRILLIC SMALL LETTER KJE;NFD_QC=N;NFKD_QC=N;stc=040C;suc=040C\r
-cp;045D;age=3.0;CWT;CWU;dm=0438 0300;dt=Can;Lower;na=CYRILLIC SMALL LETTER I WITH GRAVE;NFD_QC=N;NFKD_QC=N;stc=040D;suc=040D\r
-cp;045E;CWT;CWU;dm=0443 0306;dt=Can;Lower;na=CYRILLIC SMALL LETTER SHORT U;NFD_QC=N;NFKD_QC=N;stc=040E;suc=040E\r
-cp;045F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZHE;stc=040F;suc=040F\r
+cp;0450;age=3.0;CWT;CWU;dm=0435 0300;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IE WITH GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0400;suc=0400\r
+cp;0451;CWT;CWU;dm=0435 0308;dt=Can;ea=A;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IO;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0401;suc=0401\r
+cp;0452;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DJE;SB=LO;stc=0402;suc=0402\r
+cp;0453;CWT;CWU;dm=0433 0301;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER GJE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0403;suc=0403\r
+cp;0454;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER UKRAINIAN IE;SB=LO;stc=0404;suc=0404\r
+cp;0455;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DZE;SB=LO;stc=0405;suc=0405\r
+cp;0456;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;SB=LO;SD;stc=0406;suc=0406\r
+cp;0457;CWT;CWU;dm=0456 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER YI;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0407;suc=0407\r
+cp;0458;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER JE;SB=LO;SD;stc=0408;suc=0408\r
+cp;0459;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER LJE;SB=LO;stc=0409;suc=0409\r
+cp;045A;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER NJE;SB=LO;stc=040A;suc=040A\r
+cp;045B;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER TSHE;SB=LO;stc=040B;suc=040B\r
+cp;045C;CWT;CWU;dm=043A 0301;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KJE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=040C;suc=040C\r
+cp;045D;age=3.0;CWT;CWU;dm=0438 0300;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER I WITH GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=040D;suc=040D\r
+cp;045E;CWT;CWU;dm=0443 0306;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SHORT U;NFD_QC=N;NFKD_QC=N;SB=LO;stc=040E;suc=040E\r
+cp;045F;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DZHE;SB=LO;stc=040F;suc=040F\r
 # Historic letters\r
-cp;0460;cf=0461;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OMEGA;NFKC_CF=0461;SB=UP;scf=0461;slc=0461;Upper\r
-cp;0461;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER OMEGA;stc=0460;suc=0460\r
-cp;0462;cf=0463;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YAT;NFKC_CF=0463;SB=UP;scf=0463;slc=0463;Upper\r
-cp;0463;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER YAT;stc=0462;suc=0462\r
-cp;0464;cf=0465;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED E;NFKC_CF=0465;SB=UP;scf=0465;slc=0465;Upper\r
-cp;0465;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED E;stc=0464;suc=0464\r
-cp;0466;cf=0467;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER LITTLE YUS;NFKC_CF=0467;SB=UP;scf=0467;slc=0467;Upper\r
-cp;0467;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER LITTLE YUS;stc=0466;suc=0466\r
-cp;0468;cf=0469;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;NFKC_CF=0469;SB=UP;scf=0469;slc=0469;Upper\r
-cp;0469;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;stc=0468;suc=0468\r
-cp;046A;cf=046B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BIG YUS;NFKC_CF=046B;SB=UP;scf=046B;slc=046B;Upper\r
-cp;046B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BIG YUS;stc=046A;suc=046A\r
-cp;046C;cf=046D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;NFKC_CF=046D;SB=UP;scf=046D;slc=046D;Upper\r
-cp;046D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED BIG YUS;stc=046C;suc=046C\r
-cp;046E;cf=046F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KSI;NFKC_CF=046F;SB=UP;scf=046F;slc=046F;Upper\r
-cp;046F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KSI;stc=046E;suc=046E\r
-cp;0470;cf=0471;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER PSI;NFKC_CF=0471;SB=UP;scf=0471;slc=0471;Upper\r
-cp;0471;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER PSI;stc=0470;suc=0470\r
-cp;0472;cf=0473;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER FITA;NFKC_CF=0473;SB=UP;scf=0473;slc=0473;Upper\r
-cp;0473;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER FITA;stc=0472;suc=0472\r
-cp;0474;cf=0475;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IZHITSA;NFKC_CF=0475;SB=UP;scf=0475;slc=0475;Upper\r
-cp;0475;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IZHITSA;stc=0474;suc=0474\r
-cp;0476;cf=0477;CWCF;CWKCF;CWL;dm=0474 030F;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;NFD_QC=N;NFKC_CF=0477;NFKD_QC=N;SB=UP;scf=0477;slc=0477;Upper\r
-cp;0477;CWT;CWU;dm=0475 030F;dt=Can;Lower;na=CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;NFD_QC=N;NFKD_QC=N;stc=0476;suc=0476\r
+cp;0460;cf=0461;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER OMEGA;NFKC_CF=0461;scf=0461;slc=0461;Upper\r
+cp;0461;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER OMEGA;SB=LO;stc=0460;suc=0460\r
+cp;0462;cf=0463;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER YAT;NFKC_CF=0463;scf=0463;slc=0463;Upper\r
+cp;0463;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER YAT;SB=LO;stc=0462;suc=0462\r
+cp;0464;cf=0465;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER IOTIFIED E;NFKC_CF=0465;scf=0465;slc=0465;Upper\r
+cp;0465;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IOTIFIED E;SB=LO;stc=0464;suc=0464\r
+cp;0466;cf=0467;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER LITTLE YUS;NFKC_CF=0467;scf=0467;slc=0467;Upper\r
+cp;0467;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER LITTLE YUS;SB=LO;stc=0466;suc=0466\r
+cp;0468;cf=0469;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;NFKC_CF=0469;scf=0469;slc=0469;Upper\r
+cp;0469;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;SB=LO;stc=0468;suc=0468\r
+cp;046A;cf=046B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER BIG YUS;NFKC_CF=046B;scf=046B;slc=046B;Upper\r
+cp;046B;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER BIG YUS;SB=LO;stc=046A;suc=046A\r
+cp;046C;cf=046D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;NFKC_CF=046D;scf=046D;slc=046D;Upper\r
+cp;046D;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IOTIFIED BIG YUS;SB=LO;stc=046C;suc=046C\r
+cp;046E;cf=046F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KSI;NFKC_CF=046F;scf=046F;slc=046F;Upper\r
+cp;046F;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KSI;SB=LO;stc=046E;suc=046E\r
+cp;0470;cf=0471;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER PSI;NFKC_CF=0471;scf=0471;slc=0471;Upper\r
+cp;0471;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER PSI;SB=LO;stc=0470;suc=0470\r
+cp;0472;cf=0473;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER FITA;NFKC_CF=0473;scf=0473;slc=0473;Upper\r
+cp;0473;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER FITA;SB=LO;stc=0472;suc=0472\r
+cp;0474;cf=0475;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER IZHITSA;NFKC_CF=0475;scf=0475;slc=0475;Upper\r
+cp;0475;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IZHITSA;SB=LO;stc=0474;suc=0474\r
+cp;0476;cf=0477;CWCF;CWKCF;CWL;dm=0474 030F;dt=Can;na=CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;NFD_QC=N;NFKC_CF=0477;NFKD_QC=N;scf=0477;slc=0477;Upper\r
+cp;0477;CWT;CWU;dm=0475 030F;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0476;suc=0476\r
 # Historic digraphs\r
-cp;0478;cf=0479;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER UK;NFKC_CF=0479;SB=UP;scf=0479;slc=0479;Upper\r
-cp;0479;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER UK;stc=0478;suc=0478\r
+cp;0478;cf=0479;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER UK;NFKC_CF=0479;scf=0479;slc=0479;Upper\r
+cp;0479;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER UK;SB=LO;stc=0478;suc=0478\r
 # Historic letters\r
-cp;047A;cf=047B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ROUND OMEGA;NFKC_CF=047B;SB=UP;scf=047B;slc=047B;Upper\r
-cp;047B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ROUND OMEGA;stc=047A;suc=047A\r
-cp;047C;cf=047D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;NFKC_CF=047D;SB=UP;scf=047D;slc=047D;Upper\r
-cp;047D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER OMEGA WITH TITLO;stc=047C;suc=047C\r
-cp;047E;cf=047F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OT;NFKC_CF=047F;SB=UP;scf=047F;slc=047F;Upper\r
-cp;047F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER OT;stc=047E;suc=047E\r
-cp;0480;cf=0481;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOPPA;NFKC_CF=0481;SB=UP;scf=0481;slc=0481;Upper\r
-cp;0481;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOPPA;stc=0480;suc=0480\r
+cp;047A;cf=047B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ROUND OMEGA;NFKC_CF=047B;scf=047B;slc=047B;Upper\r
+cp;047B;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ROUND OMEGA;SB=LO;stc=047A;suc=047A\r
+cp;047C;cf=047D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;NFKC_CF=047D;scf=047D;slc=047D;Upper\r
+cp;047D;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER OMEGA WITH TITLO;SB=LO;stc=047C;suc=047C\r
+cp;047E;cf=047F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER OT;NFKC_CF=047F;scf=047F;slc=047F;Upper\r
+cp;047F;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER OT;SB=LO;stc=047E;suc=047E\r
+cp;0480;cf=0481;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KOPPA;NFKC_CF=0481;scf=0481;slc=0481;Upper\r
+cp;0481;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KOPPA;SB=LO;stc=0480;suc=0480\r
 # Historic miscellaneous\r
 cp;0482;-Alpha;-Cased;-CWCM;gc=So;-IDC;-IDS;na=CYRILLIC THOUSANDS SIGN;SB=XX;WB=XX;-XIDC;-XIDS\r
 cp;0483;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC TITLO;SB=EX;scx=Cyrl Perm;WB=Extend;-XIDS\r
@@ -2506,188 +2506,188 @@ cp;0487;age=5.1;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;
 cp;0488;age=3.0;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS\r
 cp;0489;age=3.0;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS\r
 # Extended Cyrillic\r
-cp;048A;age=3.2;cf=048B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;NFKC_CF=048B;SB=UP;scf=048B;slc=048B;Upper\r
-cp;048B;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SHORT I WITH TAIL;stc=048A;suc=048A\r
-cp;048C;age=3.0;cf=048D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SEMISOFT SIGN;NFKC_CF=048D;SB=UP;scf=048D;slc=048D;Upper\r
-cp;048D;age=3.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SEMISOFT SIGN;stc=048C;suc=048C\r
-cp;048E;age=3.0;cf=048F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ER WITH TICK;NFKC_CF=048F;SB=UP;scf=048F;slc=048F;Upper\r
-cp;048F;age=3.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ER WITH TICK;stc=048E;suc=048E\r
-cp;0490;cf=0491;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH UPTURN;NFKC_CF=0491;SB=UP;scf=0491;slc=0491;Upper\r
-cp;0491;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER GHE WITH UPTURN;stc=0490;suc=0490\r
-cp;0492;cf=0493;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH STROKE;NFKC_CF=0493;SB=UP;scf=0493;slc=0493;Upper\r
-cp;0493;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER GHE WITH STROKE;stc=0492;suc=0492\r
-cp;0494;cf=0495;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;NFKC_CF=0495;SB=UP;scf=0495;slc=0495;Upper\r
-cp;0495;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;stc=0494;suc=0494\r
-cp;0496;cf=0497;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;NFKC_CF=0497;SB=UP;scf=0497;slc=0497;Upper\r
-cp;0497;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ZHE WITH DESCENDER;stc=0496;suc=0496\r
-cp;0498;cf=0499;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;NFKC_CF=0499;SB=UP;scf=0499;slc=0499;Upper\r
-cp;0499;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ZE WITH DESCENDER;stc=0498;suc=0498\r
-cp;049A;cf=049B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH DESCENDER;NFKC_CF=049B;SB=UP;scf=049B;slc=049B;Upper\r
-cp;049B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KA WITH DESCENDER;stc=049A;suc=049A\r
-cp;049C;cf=049D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;NFKC_CF=049D;SB=UP;scf=049D;slc=049D;Upper\r
-cp;049D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;stc=049C;suc=049C\r
-cp;049E;cf=049F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH STROKE;NFKC_CF=049F;SB=UP;scf=049F;slc=049F;Upper\r
-cp;049F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KA WITH STROKE;stc=049E;suc=049E\r
-cp;04A0;cf=04A1;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BASHKIR KA;NFKC_CF=04A1;SB=UP;scf=04A1;slc=04A1;Upper\r
-cp;04A1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BASHKIR KA;stc=04A0;suc=04A0\r
-cp;04A2;cf=04A3;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH DESCENDER;NFKC_CF=04A3;SB=UP;scf=04A3;slc=04A3;Upper\r
-cp;04A3;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH DESCENDER;stc=04A2;suc=04A2\r
-cp;04A4;cf=04A5;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LIGATURE EN GHE;NFKC_CF=04A5;SB=UP;scf=04A5;slc=04A5;Upper\r
-cp;04A5;CWT;CWU;Lower;na=CYRILLIC SMALL LIGATURE EN GHE;stc=04A4;suc=04A4\r
-cp;04A6;cf=04A7;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;NFKC_CF=04A7;SB=UP;scf=04A7;slc=04A7;Upper\r
-cp;04A7;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;stc=04A6;suc=04A6\r
-cp;04A8;cf=04A9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN HA;NFKC_CF=04A9;SB=UP;scf=04A9;slc=04A9;Upper\r
-cp;04A9;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN HA;stc=04A8;suc=04A8\r
-cp;04AA;cf=04AB;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ES WITH DESCENDER;NFKC_CF=04AB;SB=UP;scf=04AB;slc=04AB;Upper\r
-cp;04AB;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ES WITH DESCENDER;stc=04AA;suc=04AA\r
-cp;04AC;cf=04AD;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TE WITH DESCENDER;NFKC_CF=04AD;SB=UP;scf=04AD;slc=04AD;Upper\r
-cp;04AD;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TE WITH DESCENDER;stc=04AC;suc=04AC\r
-cp;04AE;cf=04AF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER STRAIGHT U;NFKC_CF=04AF;SB=UP;scf=04AF;slc=04AF;Upper\r
-cp;04AF;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER STRAIGHT U;stc=04AE;suc=04AE\r
-cp;04B0;cf=04B1;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;NFKC_CF=04B1;SB=UP;scf=04B1;slc=04B1;Upper\r
-cp;04B1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;stc=04B0;suc=04B0\r
-cp;04B2;cf=04B3;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HA WITH DESCENDER;NFKC_CF=04B3;SB=UP;scf=04B3;slc=04B3;Upper\r
-cp;04B3;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER HA WITH DESCENDER;stc=04B2;suc=04B2\r
-cp;04B4;cf=04B5;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LIGATURE TE TSE;NFKC_CF=04B5;SB=UP;scf=04B5;slc=04B5;Upper\r
-cp;04B5;CWT;CWU;Lower;na=CYRILLIC SMALL LIGATURE TE TSE;stc=04B4;suc=04B4\r
-cp;04B6;cf=04B7;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;NFKC_CF=04B7;SB=UP;scf=04B7;slc=04B7;Upper\r
-cp;04B7;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CHE WITH DESCENDER;stc=04B6;suc=04B6\r
-cp;04B8;cf=04B9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;NFKC_CF=04B9;SB=UP;scf=04B9;slc=04B9;Upper\r
-cp;04B9;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;stc=04B8;suc=04B8\r
-cp;04BA;cf=04BB;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHHA;NFKC_CF=04BB;SB=UP;scf=04BB;slc=04BB;Upper\r
-cp;04BB;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SHHA;stc=04BA;suc=04BA\r
-cp;04BC;cf=04BD;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN CHE;NFKC_CF=04BD;SB=UP;scf=04BD;slc=04BD;Upper\r
-cp;04BD;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN CHE;stc=04BC;suc=04BC\r
-cp;04BE;cf=04BF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;NFKC_CF=04BF;SB=UP;scf=04BF;slc=04BF;Upper\r
-cp;04BF;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;stc=04BE;suc=04BE\r
-cp;04C0;cf=04CF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC LETTER PALOCHKA;NFKC_CF=04CF;SB=UP;scf=04CF;slc=04CF;Upper\r
-cp;04C1;cf=04C2;CWCF;CWKCF;CWL;dm=0416 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE WITH BREVE;NFD_QC=N;NFKC_CF=04C2;NFKD_QC=N;SB=UP;scf=04C2;slc=04C2;Upper\r
-cp;04C2;CWT;CWU;dm=0436 0306;dt=Can;Lower;na=CYRILLIC SMALL LETTER ZHE WITH BREVE;NFD_QC=N;NFKD_QC=N;stc=04C1;suc=04C1\r
-cp;04C3;cf=04C4;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH HOOK;NFKC_CF=04C4;SB=UP;scf=04C4;slc=04C4;Upper\r
-cp;04C4;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KA WITH HOOK;stc=04C3;suc=04C3\r
-cp;04C5;age=3.2;cf=04C6;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH TAIL;NFKC_CF=04C6;SB=UP;scf=04C6;slc=04C6;Upper\r
-cp;04C6;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EL WITH TAIL;stc=04C5;suc=04C5\r
-cp;04C7;cf=04C8;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH HOOK;NFKC_CF=04C8;SB=UP;scf=04C8;slc=04C8;Upper\r
-cp;04C8;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH HOOK;stc=04C7;suc=04C7\r
-cp;04C9;age=3.2;cf=04CA;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH TAIL;NFKC_CF=04CA;SB=UP;scf=04CA;slc=04CA;Upper\r
-cp;04CA;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH TAIL;stc=04C9;suc=04C9\r
-cp;04CB;cf=04CC;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;NFKC_CF=04CC;SB=UP;scf=04CC;slc=04CC;Upper\r
-cp;04CC;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KHAKASSIAN CHE;stc=04CB;suc=04CB\r
-cp;04CD;age=3.2;cf=04CE;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EM WITH TAIL;NFKC_CF=04CE;SB=UP;scf=04CE;slc=04CE;Upper\r
-cp;04CE;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EM WITH TAIL;stc=04CD;suc=04CD\r
-cp;04CF;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER PALOCHKA;stc=04C0;suc=04C0\r
-cp;04D0;cf=04D1;CWCF;CWKCF;CWL;dm=0410 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER A WITH BREVE;NFD_QC=N;NFKC_CF=04D1;NFKD_QC=N;SB=UP;scf=04D1;slc=04D1;Upper\r
-cp;04D1;CWT;CWU;dm=0430 0306;dt=Can;Lower;na=CYRILLIC SMALL LETTER A WITH BREVE;NFD_QC=N;NFKD_QC=N;stc=04D0;suc=04D0\r
-cp;04D2;cf=04D3;CWCF;CWKCF;CWL;dm=0410 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER A WITH DIAERESIS;NFD_QC=N;NFKC_CF=04D3;NFKD_QC=N;SB=UP;scf=04D3;slc=04D3;Upper\r
-cp;04D3;CWT;CWU;dm=0430 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER A WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04D2;suc=04D2\r
-cp;04D4;cf=04D5;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LIGATURE A IE;NFKC_CF=04D5;SB=UP;scf=04D5;slc=04D5;Upper\r
-cp;04D5;CWT;CWU;Lower;na=CYRILLIC SMALL LIGATURE A IE;stc=04D4;suc=04D4\r
-cp;04D6;cf=04D7;CWCF;CWKCF;CWL;dm=0415 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER IE WITH BREVE;NFD_QC=N;NFKC_CF=04D7;NFKD_QC=N;SB=UP;scf=04D7;slc=04D7;Upper\r
-cp;04D7;CWT;CWU;dm=0435 0306;dt=Can;Lower;na=CYRILLIC SMALL LETTER IE WITH BREVE;NFD_QC=N;NFKD_QC=N;stc=04D6;suc=04D6\r
-cp;04D8;cf=04D9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SCHWA;NFKC_CF=04D9;SB=UP;scf=04D9;slc=04D9;Upper\r
-cp;04D9;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SCHWA;stc=04D8;suc=04D8\r
-cp;04DA;cf=04DB;CWCF;CWKCF;CWL;dm=04D8 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DB;NFKD_QC=N;SB=UP;scf=04DB;slc=04DB;Upper\r
-cp;04DB;CWT;CWU;dm=04D9 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04DA;suc=04DA\r
-cp;04DC;cf=04DD;CWCF;CWKCF;CWL;dm=0416 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DD;NFKD_QC=N;SB=UP;scf=04DD;slc=04DD;Upper\r
-cp;04DD;CWT;CWU;dm=0436 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04DC;suc=04DC\r
-cp;04DE;cf=04DF;CWCF;CWKCF;CWL;dm=0417 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DF;NFKD_QC=N;SB=UP;scf=04DF;slc=04DF;Upper\r
-cp;04DF;CWT;CWU;dm=0437 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER ZE WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04DE;suc=04DE\r
-cp;04E0;cf=04E1;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN DZE;NFKC_CF=04E1;SB=UP;scf=04E1;slc=04E1;Upper\r
-cp;04E1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN DZE;stc=04E0;suc=04E0\r
-cp;04E2;cf=04E3;CWCF;CWKCF;CWL;dm=0418 0304;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER I WITH MACRON;NFD_QC=N;NFKC_CF=04E3;NFKD_QC=N;SB=UP;scf=04E3;slc=04E3;Upper\r
-cp;04E3;CWT;CWU;dm=0438 0304;dt=Can;Lower;na=CYRILLIC SMALL LETTER I WITH MACRON;NFD_QC=N;NFKD_QC=N;stc=04E2;suc=04E2\r
-cp;04E4;cf=04E5;CWCF;CWKCF;CWL;dm=0418 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER I WITH DIAERESIS;NFD_QC=N;NFKC_CF=04E5;NFKD_QC=N;SB=UP;scf=04E5;slc=04E5;Upper\r
-cp;04E5;CWT;CWU;dm=0438 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER I WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04E4;suc=04E4\r
-cp;04E6;cf=04E7;CWCF;CWKCF;CWL;dm=041E 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER O WITH DIAERESIS;NFD_QC=N;NFKC_CF=04E7;NFKD_QC=N;SB=UP;scf=04E7;slc=04E7;Upper\r
-cp;04E7;CWT;CWU;dm=043E 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER O WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04E6;suc=04E6\r
-cp;04E8;cf=04E9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BARRED O;NFKC_CF=04E9;SB=UP;scf=04E9;slc=04E9;Upper\r
-cp;04E9;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BARRED O;stc=04E8;suc=04E8\r
-cp;04EA;cf=04EB;CWCF;CWKCF;CWL;dm=04E8 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;NFD_QC=N;NFKC_CF=04EB;NFKD_QC=N;SB=UP;scf=04EB;slc=04EB;Upper\r
-cp;04EB;CWT;CWU;dm=04E9 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04EA;suc=04EA\r
-cp;04EC;age=3.0;cf=04ED;CWCF;CWKCF;CWL;dm=042D 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER E WITH DIAERESIS;NFD_QC=N;NFKC_CF=04ED;NFKD_QC=N;SB=UP;scf=04ED;slc=04ED;Upper\r
-cp;04ED;age=3.0;CWT;CWU;dm=044D 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER E WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04EC;suc=04EC\r
-cp;04EE;cf=04EF;CWCF;CWKCF;CWL;dm=0423 0304;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER U WITH MACRON;NFD_QC=N;NFKC_CF=04EF;NFKD_QC=N;SB=UP;scf=04EF;slc=04EF;Upper\r
-cp;04EF;CWT;CWU;dm=0443 0304;dt=Can;Lower;na=CYRILLIC SMALL LETTER U WITH MACRON;NFD_QC=N;NFKD_QC=N;stc=04EE;suc=04EE\r
-cp;04F0;cf=04F1;CWCF;CWKCF;CWL;dm=0423 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER U WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F1;NFKD_QC=N;SB=UP;scf=04F1;slc=04F1;Upper\r
-cp;04F1;CWT;CWU;dm=0443 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER U WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04F0;suc=04F0\r
-cp;04F2;cf=04F3;CWCF;CWKCF;CWL;dm=0423 030B;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;NFD_QC=N;NFKC_CF=04F3;NFKD_QC=N;SB=UP;scf=04F3;slc=04F3;Upper\r
-cp;04F3;CWT;CWU;dm=0443 030B;dt=Can;Lower;na=CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;NFD_QC=N;NFKD_QC=N;stc=04F2;suc=04F2\r
-cp;04F4;cf=04F5;CWCF;CWKCF;CWL;dm=0427 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F5;NFKD_QC=N;SB=UP;scf=04F5;slc=04F5;Upper\r
-cp;04F5;CWT;CWU;dm=0447 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER CHE WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04F4;suc=04F4\r
-cp;04F6;age=4.1;cf=04F7;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;NFKC_CF=04F7;SB=UP;scf=04F7;slc=04F7;Upper\r
-cp;04F7;age=4.1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER GHE WITH DESCENDER;stc=04F6;suc=04F6\r
-cp;04F8;cf=04F9;CWCF;CWKCF;CWL;dm=042B 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F9;NFKD_QC=N;SB=UP;scf=04F9;slc=04F9;Upper\r
-cp;04F9;CWT;CWU;dm=044B 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER YERU WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04F8;suc=04F8\r
+cp;048A;age=3.2;cf=048B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;NFKC_CF=048B;scf=048B;slc=048B;Upper\r
+cp;048B;age=3.2;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SHORT I WITH TAIL;SB=LO;stc=048A;suc=048A\r
+cp;048C;age=3.0;cf=048D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER SEMISOFT SIGN;NFKC_CF=048D;scf=048D;slc=048D;Upper\r
+cp;048D;age=3.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SEMISOFT SIGN;SB=LO;stc=048C;suc=048C\r
+cp;048E;age=3.0;cf=048F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ER WITH TICK;NFKC_CF=048F;scf=048F;slc=048F;Upper\r
+cp;048F;age=3.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ER WITH TICK;SB=LO;stc=048E;suc=048E\r
+cp;0490;cf=0491;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER GHE WITH UPTURN;NFKC_CF=0491;scf=0491;slc=0491;Upper\r
+cp;0491;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER GHE WITH UPTURN;SB=LO;stc=0490;suc=0490\r
+cp;0492;cf=0493;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER GHE WITH STROKE;NFKC_CF=0493;scf=0493;slc=0493;Upper\r
+cp;0493;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER GHE WITH STROKE;SB=LO;stc=0492;suc=0492\r
+cp;0494;cf=0495;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;NFKC_CF=0495;scf=0495;slc=0495;Upper\r
+cp;0495;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;SB=LO;stc=0494;suc=0494\r
+cp;0496;cf=0497;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;NFKC_CF=0497;scf=0497;slc=0497;Upper\r
+cp;0497;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ZHE WITH DESCENDER;SB=LO;stc=0496;suc=0496\r
+cp;0498;cf=0499;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;NFKC_CF=0499;scf=0499;slc=0499;Upper\r
+cp;0499;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ZE WITH DESCENDER;SB=LO;stc=0498;suc=0498\r
+cp;049A;cf=049B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KA WITH DESCENDER;NFKC_CF=049B;scf=049B;slc=049B;Upper\r
+cp;049B;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KA WITH DESCENDER;SB=LO;stc=049A;suc=049A\r
+cp;049C;cf=049D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;NFKC_CF=049D;scf=049D;slc=049D;Upper\r
+cp;049D;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;SB=LO;stc=049C;suc=049C\r
+cp;049E;cf=049F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KA WITH STROKE;NFKC_CF=049F;scf=049F;slc=049F;Upper\r
+cp;049F;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KA WITH STROKE;SB=LO;stc=049E;suc=049E\r
+cp;04A0;cf=04A1;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER BASHKIR KA;NFKC_CF=04A1;scf=04A1;slc=04A1;Upper\r
+cp;04A1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER BASHKIR KA;SB=LO;stc=04A0;suc=04A0\r
+cp;04A2;cf=04A3;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER EN WITH DESCENDER;NFKC_CF=04A3;scf=04A3;slc=04A3;Upper\r
+cp;04A3;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EN WITH DESCENDER;SB=LO;stc=04A2;suc=04A2\r
+cp;04A4;cf=04A5;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LIGATURE EN GHE;NFKC_CF=04A5;scf=04A5;slc=04A5;Upper\r
+cp;04A5;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LIGATURE EN GHE;SB=LO;stc=04A4;suc=04A4\r
+cp;04A6;cf=04A7;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;NFKC_CF=04A7;scf=04A7;slc=04A7;Upper\r
+cp;04A7;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;SB=LO;stc=04A6;suc=04A6\r
+cp;04A8;cf=04A9;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ABKHASIAN HA;NFKC_CF=04A9;scf=04A9;slc=04A9;Upper\r
+cp;04A9;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN HA;SB=LO;stc=04A8;suc=04A8\r
+cp;04AA;cf=04AB;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ES WITH DESCENDER;NFKC_CF=04AB;scf=04AB;slc=04AB;Upper\r
+cp;04AB;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ES WITH DESCENDER;SB=LO;stc=04AA;suc=04AA\r
+cp;04AC;cf=04AD;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER TE WITH DESCENDER;NFKC_CF=04AD;scf=04AD;slc=04AD;Upper\r
+cp;04AD;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER TE WITH DESCENDER;SB=LO;stc=04AC;suc=04AC\r
+cp;04AE;cf=04AF;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER STRAIGHT U;NFKC_CF=04AF;scf=04AF;slc=04AF;Upper\r
+cp;04AF;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER STRAIGHT U;SB=LO;stc=04AE;suc=04AE\r
+cp;04B0;cf=04B1;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;NFKC_CF=04B1;scf=04B1;slc=04B1;Upper\r
+cp;04B1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;SB=LO;stc=04B0;suc=04B0\r
+cp;04B2;cf=04B3;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER HA WITH DESCENDER;NFKC_CF=04B3;scf=04B3;slc=04B3;Upper\r
+cp;04B3;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER HA WITH DESCENDER;SB=LO;stc=04B2;suc=04B2\r
+cp;04B4;cf=04B5;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LIGATURE TE TSE;NFKC_CF=04B5;scf=04B5;slc=04B5;Upper\r
+cp;04B5;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LIGATURE TE TSE;SB=LO;stc=04B4;suc=04B4\r
+cp;04B6;cf=04B7;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;NFKC_CF=04B7;scf=04B7;slc=04B7;Upper\r
+cp;04B7;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER CHE WITH DESCENDER;SB=LO;stc=04B6;suc=04B6\r
+cp;04B8;cf=04B9;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;NFKC_CF=04B9;scf=04B9;slc=04B9;Upper\r
+cp;04B9;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;SB=LO;stc=04B8;suc=04B8\r
+cp;04BA;cf=04BB;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER SHHA;NFKC_CF=04BB;scf=04BB;slc=04BB;Upper\r
+cp;04BB;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SHHA;SB=LO;stc=04BA;suc=04BA\r
+cp;04BC;cf=04BD;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ABKHASIAN CHE;NFKC_CF=04BD;scf=04BD;slc=04BD;Upper\r
+cp;04BD;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN CHE;SB=LO;stc=04BC;suc=04BC\r
+cp;04BE;cf=04BF;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;NFKC_CF=04BF;scf=04BF;slc=04BF;Upper\r
+cp;04BF;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;SB=LO;stc=04BE;suc=04BE\r
+cp;04C0;cf=04CF;CWCF;CWKCF;CWL;na=CYRILLIC LETTER PALOCHKA;NFKC_CF=04CF;scf=04CF;slc=04CF;Upper\r
+cp;04C1;cf=04C2;CWCF;CWKCF;CWL;dm=0416 0306;dt=Can;na=CYRILLIC CAPITAL LETTER ZHE WITH BREVE;NFD_QC=N;NFKC_CF=04C2;NFKD_QC=N;scf=04C2;slc=04C2;Upper\r
+cp;04C2;CWT;CWU;dm=0436 0306;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ZHE WITH BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04C1;suc=04C1\r
+cp;04C3;cf=04C4;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KA WITH HOOK;NFKC_CF=04C4;scf=04C4;slc=04C4;Upper\r
+cp;04C4;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KA WITH HOOK;SB=LO;stc=04C3;suc=04C3\r
+cp;04C5;age=3.2;cf=04C6;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER EL WITH TAIL;NFKC_CF=04C6;scf=04C6;slc=04C6;Upper\r
+cp;04C6;age=3.2;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EL WITH TAIL;SB=LO;stc=04C5;suc=04C5\r
+cp;04C7;cf=04C8;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER EN WITH HOOK;NFKC_CF=04C8;scf=04C8;slc=04C8;Upper\r
+cp;04C8;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EN WITH HOOK;SB=LO;stc=04C7;suc=04C7\r
+cp;04C9;age=3.2;cf=04CA;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER EN WITH TAIL;NFKC_CF=04CA;scf=04CA;slc=04CA;Upper\r
+cp;04CA;age=3.2;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EN WITH TAIL;SB=LO;stc=04C9;suc=04C9\r
+cp;04CB;cf=04CC;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;NFKC_CF=04CC;scf=04CC;slc=04CC;Upper\r
+cp;04CC;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KHAKASSIAN CHE;SB=LO;stc=04CB;suc=04CB\r
+cp;04CD;age=3.2;cf=04CE;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER EM WITH TAIL;NFKC_CF=04CE;scf=04CE;slc=04CE;Upper\r
+cp;04CE;age=3.2;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EM WITH TAIL;SB=LO;stc=04CD;suc=04CD\r
+cp;04CF;age=5.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER PALOCHKA;SB=LO;stc=04C0;suc=04C0\r
+cp;04D0;cf=04D1;CWCF;CWKCF;CWL;dm=0410 0306;dt=Can;na=CYRILLIC CAPITAL LETTER A WITH BREVE;NFD_QC=N;NFKC_CF=04D1;NFKD_QC=N;scf=04D1;slc=04D1;Upper\r
+cp;04D1;CWT;CWU;dm=0430 0306;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER A WITH BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04D0;suc=04D0\r
+cp;04D2;cf=04D3;CWCF;CWKCF;CWL;dm=0410 0308;dt=Can;na=CYRILLIC CAPITAL LETTER A WITH DIAERESIS;NFD_QC=N;NFKC_CF=04D3;NFKD_QC=N;scf=04D3;slc=04D3;Upper\r
+cp;04D3;CWT;CWU;dm=0430 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER A WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04D2;suc=04D2\r
+cp;04D4;cf=04D5;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LIGATURE A IE;NFKC_CF=04D5;scf=04D5;slc=04D5;Upper\r
+cp;04D5;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LIGATURE A IE;SB=LO;stc=04D4;suc=04D4\r
+cp;04D6;cf=04D7;CWCF;CWKCF;CWL;dm=0415 0306;dt=Can;na=CYRILLIC CAPITAL LETTER IE WITH BREVE;NFD_QC=N;NFKC_CF=04D7;NFKD_QC=N;scf=04D7;slc=04D7;Upper\r
+cp;04D7;CWT;CWU;dm=0435 0306;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IE WITH BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04D6;suc=04D6\r
+cp;04D8;cf=04D9;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER SCHWA;NFKC_CF=04D9;scf=04D9;slc=04D9;Upper\r
+cp;04D9;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SCHWA;SB=LO;stc=04D8;suc=04D8\r
+cp;04DA;cf=04DB;CWCF;CWKCF;CWL;dm=04D8 0308;dt=Can;na=CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DB;NFKD_QC=N;scf=04DB;slc=04DB;Upper\r
+cp;04DB;CWT;CWU;dm=04D9 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04DA;suc=04DA\r
+cp;04DC;cf=04DD;CWCF;CWKCF;CWL;dm=0416 0308;dt=Can;na=CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DD;NFKD_QC=N;scf=04DD;slc=04DD;Upper\r
+cp;04DD;CWT;CWU;dm=0436 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04DC;suc=04DC\r
+cp;04DE;cf=04DF;CWCF;CWKCF;CWL;dm=0417 0308;dt=Can;na=CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DF;NFKD_QC=N;scf=04DF;slc=04DF;Upper\r
+cp;04DF;CWT;CWU;dm=0437 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ZE WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04DE;suc=04DE\r
+cp;04E0;cf=04E1;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ABKHASIAN DZE;NFKC_CF=04E1;scf=04E1;slc=04E1;Upper\r
+cp;04E1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN DZE;SB=LO;stc=04E0;suc=04E0\r
+cp;04E2;cf=04E3;CWCF;CWKCF;CWL;dm=0418 0304;dt=Can;na=CYRILLIC CAPITAL LETTER I WITH MACRON;NFD_QC=N;NFKC_CF=04E3;NFKD_QC=N;scf=04E3;slc=04E3;Upper\r
+cp;04E3;CWT;CWU;dm=0438 0304;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER I WITH MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04E2;suc=04E2\r
+cp;04E4;cf=04E5;CWCF;CWKCF;CWL;dm=0418 0308;dt=Can;na=CYRILLIC CAPITAL LETTER I WITH DIAERESIS;NFD_QC=N;NFKC_CF=04E5;NFKD_QC=N;scf=04E5;slc=04E5;Upper\r
+cp;04E5;CWT;CWU;dm=0438 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER I WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04E4;suc=04E4\r
+cp;04E6;cf=04E7;CWCF;CWKCF;CWL;dm=041E 0308;dt=Can;na=CYRILLIC CAPITAL LETTER O WITH DIAERESIS;NFD_QC=N;NFKC_CF=04E7;NFKD_QC=N;scf=04E7;slc=04E7;Upper\r
+cp;04E7;CWT;CWU;dm=043E 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER O WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04E6;suc=04E6\r
+cp;04E8;cf=04E9;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER BARRED O;NFKC_CF=04E9;scf=04E9;slc=04E9;Upper\r
+cp;04E9;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER BARRED O;SB=LO;stc=04E8;suc=04E8\r
+cp;04EA;cf=04EB;CWCF;CWKCF;CWL;dm=04E8 0308;dt=Can;na=CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;NFD_QC=N;NFKC_CF=04EB;NFKD_QC=N;scf=04EB;slc=04EB;Upper\r
+cp;04EB;CWT;CWU;dm=04E9 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04EA;suc=04EA\r
+cp;04EC;age=3.0;cf=04ED;CWCF;CWKCF;CWL;dm=042D 0308;dt=Can;na=CYRILLIC CAPITAL LETTER E WITH DIAERESIS;NFD_QC=N;NFKC_CF=04ED;NFKD_QC=N;scf=04ED;slc=04ED;Upper\r
+cp;04ED;age=3.0;CWT;CWU;dm=044D 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER E WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04EC;suc=04EC\r
+cp;04EE;cf=04EF;CWCF;CWKCF;CWL;dm=0423 0304;dt=Can;na=CYRILLIC CAPITAL LETTER U WITH MACRON;NFD_QC=N;NFKC_CF=04EF;NFKD_QC=N;scf=04EF;slc=04EF;Upper\r
+cp;04EF;CWT;CWU;dm=0443 0304;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER U WITH MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04EE;suc=04EE\r
+cp;04F0;cf=04F1;CWCF;CWKCF;CWL;dm=0423 0308;dt=Can;na=CYRILLIC CAPITAL LETTER U WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F1;NFKD_QC=N;scf=04F1;slc=04F1;Upper\r
+cp;04F1;CWT;CWU;dm=0443 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER U WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04F0;suc=04F0\r
+cp;04F2;cf=04F3;CWCF;CWKCF;CWL;dm=0423 030B;dt=Can;na=CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;NFD_QC=N;NFKC_CF=04F3;NFKD_QC=N;scf=04F3;slc=04F3;Upper\r
+cp;04F3;CWT;CWU;dm=0443 030B;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04F2;suc=04F2\r
+cp;04F4;cf=04F5;CWCF;CWKCF;CWL;dm=0427 0308;dt=Can;na=CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F5;NFKD_QC=N;scf=04F5;slc=04F5;Upper\r
+cp;04F5;CWT;CWU;dm=0447 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER CHE WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04F4;suc=04F4\r
+cp;04F6;age=4.1;cf=04F7;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;NFKC_CF=04F7;scf=04F7;slc=04F7;Upper\r
+cp;04F7;age=4.1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER GHE WITH DESCENDER;SB=LO;stc=04F6;suc=04F6\r
+cp;04F8;cf=04F9;CWCF;CWKCF;CWL;dm=042B 0308;dt=Can;na=CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F9;NFKD_QC=N;scf=04F9;slc=04F9;Upper\r
+cp;04F9;CWT;CWU;dm=044B 0308;dt=Can;gc=Ll;Lower;na=CYRILLIC SMALL LETTER YERU WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;SB=LO;stc=04F8;suc=04F8\r
 # Additions for Nivkh\r
-cp;04FA;age=5.0;cf=04FB;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;NFKC_CF=04FB;SB=UP;scf=04FB;slc=04FB;Upper\r
-cp;04FB;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;stc=04FA;suc=04FA\r
-cp;04FC;age=5.0;cf=04FD;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HA WITH HOOK;NFKC_CF=04FD;SB=UP;scf=04FD;slc=04FD;Upper\r
-cp;04FD;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER HA WITH HOOK;stc=04FC;suc=04FC\r
-cp;04FE;age=5.0;cf=04FF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HA WITH STROKE;NFKC_CF=04FF;SB=UP;scf=04FF;slc=04FF;Upper\r
-cp;04FF;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER HA WITH STROKE;stc=04FE;suc=04FE\r
-\r
-block;0500..052F;age=5.1;Alpha;blk=Cyrillic_Sup;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS\r
+cp;04FA;age=5.0;cf=04FB;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;NFKC_CF=04FB;scf=04FB;slc=04FB;Upper\r
+cp;04FB;age=5.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;SB=LO;stc=04FA;suc=04FA\r
+cp;04FC;age=5.0;cf=04FD;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER HA WITH HOOK;NFKC_CF=04FD;scf=04FD;slc=04FD;Upper\r
+cp;04FD;age=5.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER HA WITH HOOK;SB=LO;stc=04FC;suc=04FC\r
+cp;04FE;age=5.0;cf=04FF;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER HA WITH STROKE;NFKC_CF=04FF;scf=04FF;slc=04FF;Upper\r
+cp;04FF;age=5.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER HA WITH STROKE;SB=LO;stc=04FE;suc=04FE\r
+\r
+block;0500..052F;age=3.2;Alpha;blk=Cyrillic_Sup;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Cyrl;WB=LE;XIDC;XIDS\r
 # 0500..052F Cyrillic Supplement\r
 # Komi letters\r
-cp;0500;age=3.2;cf=0501;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DE;NFKC_CF=0501;SB=UP;scf=0501;slc=0501;Upper\r
-cp;0501;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI DE;stc=0500;suc=0500\r
-cp;0502;age=3.2;cf=0503;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DJE;NFKC_CF=0503;SB=UP;scf=0503;slc=0503;Upper\r
-cp;0503;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI DJE;stc=0502;suc=0502\r
-cp;0504;age=3.2;cf=0505;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI ZJE;NFKC_CF=0505;SB=UP;scf=0505;slc=0505;Upper\r
-cp;0505;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI ZJE;stc=0504;suc=0504\r
-cp;0506;age=3.2;cf=0507;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DZJE;NFKC_CF=0507;SB=UP;scf=0507;slc=0507;Upper\r
-cp;0507;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI DZJE;stc=0506;suc=0506\r
-cp;0508;age=3.2;cf=0509;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI LJE;NFKC_CF=0509;SB=UP;scf=0509;slc=0509;Upper\r
-cp;0509;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI LJE;stc=0508;suc=0508\r
-cp;050A;age=3.2;cf=050B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI NJE;NFKC_CF=050B;SB=UP;scf=050B;slc=050B;Upper\r
-cp;050B;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI NJE;stc=050A;suc=050A\r
-cp;050C;age=3.2;cf=050D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI SJE;NFKC_CF=050D;SB=UP;scf=050D;slc=050D;Upper\r
-cp;050D;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI SJE;stc=050C;suc=050C\r
-cp;050E;age=3.2;cf=050F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI TJE;NFKC_CF=050F;SB=UP;scf=050F;slc=050F;Upper\r
-cp;050F;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI TJE;stc=050E;suc=050E\r
+cp;0500;cf=0501;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KOMI DE;NFKC_CF=0501;scf=0501;slc=0501;Upper\r
+cp;0501;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KOMI DE;SB=LO;stc=0500;suc=0500\r
+cp;0502;cf=0503;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KOMI DJE;NFKC_CF=0503;scf=0503;slc=0503;Upper\r
+cp;0503;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KOMI DJE;SB=LO;stc=0502;suc=0502\r
+cp;0504;cf=0505;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KOMI ZJE;NFKC_CF=0505;scf=0505;slc=0505;Upper\r
+cp;0505;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KOMI ZJE;SB=LO;stc=0504;suc=0504\r
+cp;0506;cf=0507;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KOMI DZJE;NFKC_CF=0507;scf=0507;slc=0507;Upper\r
+cp;0507;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KOMI DZJE;SB=LO;stc=0506;suc=0506\r
+cp;0508;cf=0509;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KOMI LJE;NFKC_CF=0509;scf=0509;slc=0509;Upper\r
+cp;0509;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KOMI LJE;SB=LO;stc=0508;suc=0508\r
+cp;050A;cf=050B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KOMI NJE;NFKC_CF=050B;scf=050B;slc=050B;Upper\r
+cp;050B;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KOMI NJE;SB=LO;stc=050A;suc=050A\r
+cp;050C;cf=050D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KOMI SJE;NFKC_CF=050D;scf=050D;slc=050D;Upper\r
+cp;050D;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KOMI SJE;SB=LO;stc=050C;suc=050C\r
+cp;050E;cf=050F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER KOMI TJE;NFKC_CF=050F;scf=050F;slc=050F;Upper\r
+cp;050F;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER KOMI TJE;SB=LO;stc=050E;suc=050E\r
 # Khanty letters\r
-cp;0510;age=5.0;cf=0511;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED ZE;NFKC_CF=0511;SB=UP;scf=0511;slc=0511;Upper\r
-cp;0511;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER REVERSED ZE;stc=0510;suc=0510\r
+cp;0510;age=5.0;cf=0511;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER REVERSED ZE;NFKC_CF=0511;scf=0511;slc=0511;Upper\r
+cp;0511;age=5.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER REVERSED ZE;SB=LO;stc=0510;suc=0510\r
 # Chukchi letters\r
-cp;0512;age=5.0;cf=0513;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH HOOK;NFKC_CF=0513;SB=UP;scf=0513;slc=0513;Upper\r
-cp;0513;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EL WITH HOOK;stc=0512;suc=0512\r
+cp;0512;age=5.0;cf=0513;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER EL WITH HOOK;NFKC_CF=0513;scf=0513;slc=0513;Upper\r
+cp;0513;age=5.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EL WITH HOOK;SB=LO;stc=0512;suc=0512\r
 # Mordvin letters\r
-cp;0514;cf=0515;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER LHA;NFKC_CF=0515;SB=UP;scf=0515;slc=0515;Upper\r
-cp;0515;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER LHA;stc=0514;suc=0514\r
-cp;0516;cf=0517;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER RHA;NFKC_CF=0517;SB=UP;scf=0517;slc=0517;Upper\r
-cp;0517;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER RHA;stc=0516;suc=0516\r
-cp;0518;cf=0519;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YAE;NFKC_CF=0519;SB=UP;scf=0519;slc=0519;Upper\r
-cp;0519;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER YAE;stc=0518;suc=0518\r
+cp;0514;age=5.1;cf=0515;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER LHA;NFKC_CF=0515;scf=0515;slc=0515;Upper\r
+cp;0515;age=5.1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER LHA;SB=LO;stc=0514;suc=0514\r
+cp;0516;age=5.1;cf=0517;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER RHA;NFKC_CF=0517;scf=0517;slc=0517;Upper\r
+cp;0517;age=5.1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER RHA;SB=LO;stc=0516;suc=0516\r
+cp;0518;age=5.1;cf=0519;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER YAE;NFKC_CF=0519;scf=0519;slc=0519;Upper\r
+cp;0519;age=5.1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER YAE;SB=LO;stc=0518;suc=0518\r
 # Kurdish letters\r
-cp;051A;cf=051B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER QA;NFKC_CF=051B;SB=UP;scf=051B;slc=051B;Upper\r
-cp;051B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER QA;stc=051A;suc=051A\r
-cp;051C;cf=051D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER WE;NFKC_CF=051D;SB=UP;scf=051D;slc=051D;Upper\r
-cp;051D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER WE;stc=051C;suc=051C\r
+cp;051A;age=5.1;cf=051B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER QA;NFKC_CF=051B;scf=051B;slc=051B;Upper\r
+cp;051B;age=5.1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER QA;SB=LO;stc=051A;suc=051A\r
+cp;051C;age=5.1;cf=051D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER WE;NFKC_CF=051D;scf=051D;slc=051D;Upper\r
+cp;051D;age=5.1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER WE;SB=LO;stc=051C;suc=051C\r
 # Aleut letters\r
-cp;051E;cf=051F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ALEUT KA;NFKC_CF=051F;SB=UP;scf=051F;slc=051F;Upper\r
-cp;051F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ALEUT KA;stc=051E;suc=051E\r
+cp;051E;age=5.1;cf=051F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ALEUT KA;NFKC_CF=051F;scf=051F;slc=051F;Upper\r
+cp;051F;age=5.1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ALEUT KA;SB=LO;stc=051E;suc=051E\r
 # Chuvash letters\r
-cp;0520;cf=0521;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;NFKC_CF=0521;SB=UP;scf=0521;slc=0521;Upper\r
-cp;0521;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;stc=0520;suc=0520\r
-cp;0522;cf=0523;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;NFKC_CF=0523;SB=UP;scf=0523;slc=0523;Upper\r
-cp;0523;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;stc=0522;suc=0522\r
+cp;0520;age=5.1;cf=0521;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;NFKC_CF=0521;scf=0521;slc=0521;Upper\r
+cp;0521;age=5.1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;SB=LO;stc=0520;suc=0520\r
+cp;0522;age=5.1;cf=0523;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;NFKC_CF=0523;scf=0523;slc=0523;Upper\r
+cp;0523;age=5.1;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;SB=LO;stc=0522;suc=0522\r
 # Abkhaz letters\r
-cp;0524;age=5.2;cf=0525;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER PE WITH DESCENDER;NFKC_CF=0525;SB=UP;scf=0525;slc=0525;Upper\r
-cp;0525;age=5.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER PE WITH DESCENDER;stc=0524;suc=0524\r
+cp;0524;age=5.2;cf=0525;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER PE WITH DESCENDER;NFKC_CF=0525;scf=0525;slc=0525;Upper\r
+cp;0525;age=5.2;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER PE WITH DESCENDER;SB=LO;stc=0524;suc=0524\r
 # Azerbaijani letters\r
-cp;0526;age=6.0;cf=0527;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER;NFKC_CF=0527;SB=UP;scf=0527;slc=0527;Upper\r
-cp;0527;age=6.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SHHA WITH DESCENDER;stc=0526;suc=0526\r
+cp;0526;age=6.0;cf=0527;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER;NFKC_CF=0527;scf=0527;slc=0527;Upper\r
+cp;0527;age=6.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SHHA WITH DESCENDER;SB=LO;stc=0526;suc=0526\r
 # Orok letters\r
-cp;0528;age=7.0;cf=0529;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK;NFKC_CF=0529;SB=UP;scf=0529;slc=0529;Upper\r
-cp;0529;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH LEFT HOOK;stc=0528;suc=0528\r
+cp;0528;age=7.0;cf=0529;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK;NFKC_CF=0529;scf=0529;slc=0529;Upper\r
+cp;0529;age=7.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EN WITH LEFT HOOK;SB=LO;stc=0528;suc=0528\r
 # Komi letters\r
-cp;052A;age=7.0;cf=052B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZZHE;NFKC_CF=052B;SB=UP;scf=052B;slc=052B;Upper\r
-cp;052B;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZZHE;stc=052A;suc=052A\r
-cp;052C;age=7.0;cf=052D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DCHE;NFKC_CF=052D;SB=UP;scf=052D;slc=052D;Upper\r
-cp;052D;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DCHE;stc=052C;suc=052C\r
+cp;052A;age=7.0;cf=052B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DZZHE;NFKC_CF=052B;scf=052B;slc=052B;Upper\r
+cp;052B;age=7.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DZZHE;SB=LO;stc=052A;suc=052A\r
+cp;052C;age=7.0;cf=052D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DCHE;NFKC_CF=052D;scf=052D;slc=052D;Upper\r
+cp;052D;age=7.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DCHE;SB=LO;stc=052C;suc=052C\r
 # Khanty letters\r
-cp;052E;age=7.0;cf=052F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH DESCENDER;NFKC_CF=052F;SB=UP;scf=052F;slc=052F;Upper\r
-cp;052F;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EL WITH DESCENDER;stc=052E;suc=052E\r
+cp;052E;age=7.0;cf=052F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER EL WITH DESCENDER;NFKC_CF=052F;scf=052F;slc=052F;Upper\r
+cp;052F;age=7.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER EL WITH DESCENDER;SB=LO;stc=052E;suc=052E\r
 \r
 block;0530..058F;age=1.1;Alpha;blk=Armenian;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Armn;WB=LE;XIDC;XIDS\r
 # 0530..058F Armenian\r
@@ -13051,147 +13051,147 @@ cp;2BFE;age=11.0;Bidi_M;bmg=221F;na=REVERSED RIGHT ANGLE;vo=U
 # Miscellaneous symbol\r
 cp;2BFF;age=12.0;na=HELLSCHREIBER PAUSE SYMBOL;vo=U\r
 \r
-block;2C00..2C5F;age=4.1;Alpha;blk=Glagolitic;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Glag;WB=LE;XIDC;XIDS\r
+block;2C00..2C5F;age=4.1;Alpha;blk=Glagolitic;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Glag;WB=LE;XIDC;XIDS\r
 # 2C00..2C5F Glagolitic\r
 # Capital letters\r
-cp;2C00;cf=2C30;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER AZU;NFKC_CF=2C30;SB=UP;scf=2C30;slc=2C30;Upper\r
-cp;2C01;cf=2C31;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER BUKY;NFKC_CF=2C31;SB=UP;scf=2C31;slc=2C31;Upper\r
-cp;2C02;cf=2C32;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER VEDE;NFKC_CF=2C32;SB=UP;scf=2C32;slc=2C32;Upper\r
-cp;2C03;cf=2C33;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER GLAGOLI;NFKC_CF=2C33;SB=UP;scf=2C33;slc=2C33;Upper\r
-cp;2C04;cf=2C34;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER DOBRO;NFKC_CF=2C34;SB=UP;scf=2C34;slc=2C34;Upper\r
-cp;2C05;cf=2C35;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YESTU;NFKC_CF=2C35;SB=UP;scf=2C35;slc=2C35;Upper\r
-cp;2C06;cf=2C36;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER ZHIVETE;NFKC_CF=2C36;SB=UP;scf=2C36;slc=2C36;Upper\r
-cp;2C07;cf=2C37;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER DZELO;NFKC_CF=2C37;SB=UP;scf=2C37;slc=2C37;Upper\r
-cp;2C08;cf=2C38;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER ZEMLJA;NFKC_CF=2C38;SB=UP;scf=2C38;slc=2C38;Upper\r
-cp;2C09;cf=2C39;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IZHE;NFKC_CF=2C39;SB=UP;scf=2C39;slc=2C39;Upper\r
-cp;2C0A;cf=2C3A;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER INITIAL IZHE;NFKC_CF=2C3A;SB=UP;scf=2C3A;slc=2C3A;Upper\r
-cp;2C0B;cf=2C3B;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER I;NFKC_CF=2C3B;SB=UP;scf=2C3B;slc=2C3B;Upper\r
-cp;2C0C;cf=2C3C;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER DJERVI;NFKC_CF=2C3C;SB=UP;scf=2C3C;slc=2C3C;Upper\r
-cp;2C0D;cf=2C3D;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER KAKO;NFKC_CF=2C3D;SB=UP;scf=2C3D;slc=2C3D;Upper\r
-cp;2C0E;cf=2C3E;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER LJUDIJE;NFKC_CF=2C3E;SB=UP;scf=2C3E;slc=2C3E;Upper\r
-cp;2C0F;cf=2C3F;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER MYSLITE;NFKC_CF=2C3F;SB=UP;scf=2C3F;slc=2C3F;Upper\r
-cp;2C10;cf=2C40;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER NASHI;NFKC_CF=2C40;SB=UP;scf=2C40;slc=2C40;Upper\r
-cp;2C11;cf=2C41;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER ONU;NFKC_CF=2C41;SB=UP;scf=2C41;slc=2C41;Upper\r
-cp;2C12;cf=2C42;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER POKOJI;NFKC_CF=2C42;SB=UP;scf=2C42;slc=2C42;Upper\r
-cp;2C13;cf=2C43;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER RITSI;NFKC_CF=2C43;SB=UP;scf=2C43;slc=2C43;Upper\r
-cp;2C14;cf=2C44;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SLOVO;NFKC_CF=2C44;SB=UP;scf=2C44;slc=2C44;Upper\r
-cp;2C15;cf=2C45;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER TVRIDO;NFKC_CF=2C45;SB=UP;scf=2C45;slc=2C45;Upper\r
-cp;2C16;cf=2C46;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER UKU;NFKC_CF=2C46;SB=UP;scf=2C46;slc=2C46;Upper\r
-cp;2C17;cf=2C47;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER FRITU;NFKC_CF=2C47;SB=UP;scf=2C47;slc=2C47;Upper\r
-cp;2C18;cf=2C48;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER HERU;NFKC_CF=2C48;SB=UP;scf=2C48;slc=2C48;Upper\r
-cp;2C19;cf=2C49;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER OTU;NFKC_CF=2C49;SB=UP;scf=2C49;slc=2C49;Upper\r
-cp;2C1A;cf=2C4A;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER PE;NFKC_CF=2C4A;SB=UP;scf=2C4A;slc=2C4A;Upper\r
-cp;2C1B;cf=2C4B;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SHTA;NFKC_CF=2C4B;SB=UP;scf=2C4B;slc=2C4B;Upper\r
-cp;2C1C;cf=2C4C;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER TSI;NFKC_CF=2C4C;SB=UP;scf=2C4C;slc=2C4C;Upper\r
-cp;2C1D;cf=2C4D;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER CHRIVI;NFKC_CF=2C4D;SB=UP;scf=2C4D;slc=2C4D;Upper\r
-cp;2C1E;cf=2C4E;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SHA;NFKC_CF=2C4E;SB=UP;scf=2C4E;slc=2C4E;Upper\r
-cp;2C1F;cf=2C4F;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YERU;NFKC_CF=2C4F;SB=UP;scf=2C4F;slc=2C4F;Upper\r
-cp;2C20;cf=2C50;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YERI;NFKC_CF=2C50;SB=UP;scf=2C50;slc=2C50;Upper\r
-cp;2C21;cf=2C51;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YATI;NFKC_CF=2C51;SB=UP;scf=2C51;slc=2C51;Upper\r
-cp;2C22;cf=2C52;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SPIDERY HA;NFKC_CF=2C52;SB=UP;scf=2C52;slc=2C52;Upper\r
-cp;2C23;cf=2C53;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YU;NFKC_CF=2C53;SB=UP;scf=2C53;slc=2C53;Upper\r
-cp;2C24;cf=2C54;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SMALL YUS;NFKC_CF=2C54;SB=UP;scf=2C54;slc=2C54;Upper\r
-cp;2C25;cf=2C55;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;NFKC_CF=2C55;SB=UP;scf=2C55;slc=2C55;Upper\r
-cp;2C26;cf=2C56;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YO;NFKC_CF=2C56;SB=UP;scf=2C56;slc=2C56;Upper\r
-cp;2C27;cf=2C57;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;NFKC_CF=2C57;SB=UP;scf=2C57;slc=2C57;Upper\r
-cp;2C28;cf=2C58;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER BIG YUS;NFKC_CF=2C58;SB=UP;scf=2C58;slc=2C58;Upper\r
-cp;2C29;cf=2C59;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;NFKC_CF=2C59;SB=UP;scf=2C59;slc=2C59;Upper\r
-cp;2C2A;cf=2C5A;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER FITA;NFKC_CF=2C5A;SB=UP;scf=2C5A;slc=2C5A;Upper\r
-cp;2C2B;cf=2C5B;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IZHITSA;NFKC_CF=2C5B;SB=UP;scf=2C5B;slc=2C5B;Upper\r
-cp;2C2C;cf=2C5C;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SHTAPIC;NFKC_CF=2C5C;SB=UP;scf=2C5C;slc=2C5C;Upper\r
-cp;2C2D;cf=2C5D;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER TROKUTASTI A;NFKC_CF=2C5D;SB=UP;scf=2C5D;slc=2C5D;Upper\r
-cp;2C2E;cf=2C5E;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;NFKC_CF=2C5E;SB=UP;scf=2C5E;slc=2C5E;Upper\r
+cp;2C00;cf=2C30;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER AZU;NFKC_CF=2C30;scf=2C30;slc=2C30;Upper\r
+cp;2C01;cf=2C31;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER BUKY;NFKC_CF=2C31;scf=2C31;slc=2C31;Upper\r
+cp;2C02;cf=2C32;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER VEDE;NFKC_CF=2C32;scf=2C32;slc=2C32;Upper\r
+cp;2C03;cf=2C33;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER GLAGOLI;NFKC_CF=2C33;scf=2C33;slc=2C33;Upper\r
+cp;2C04;cf=2C34;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER DOBRO;NFKC_CF=2C34;scf=2C34;slc=2C34;Upper\r
+cp;2C05;cf=2C35;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER YESTU;NFKC_CF=2C35;scf=2C35;slc=2C35;Upper\r
+cp;2C06;cf=2C36;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER ZHIVETE;NFKC_CF=2C36;scf=2C36;slc=2C36;Upper\r
+cp;2C07;cf=2C37;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER DZELO;NFKC_CF=2C37;scf=2C37;slc=2C37;Upper\r
+cp;2C08;cf=2C38;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER ZEMLJA;NFKC_CF=2C38;scf=2C38;slc=2C38;Upper\r
+cp;2C09;cf=2C39;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER IZHE;NFKC_CF=2C39;scf=2C39;slc=2C39;Upper\r
+cp;2C0A;cf=2C3A;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER INITIAL IZHE;NFKC_CF=2C3A;scf=2C3A;slc=2C3A;Upper\r
+cp;2C0B;cf=2C3B;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER I;NFKC_CF=2C3B;scf=2C3B;slc=2C3B;Upper\r
+cp;2C0C;cf=2C3C;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER DJERVI;NFKC_CF=2C3C;scf=2C3C;slc=2C3C;Upper\r
+cp;2C0D;cf=2C3D;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER KAKO;NFKC_CF=2C3D;scf=2C3D;slc=2C3D;Upper\r
+cp;2C0E;cf=2C3E;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER LJUDIJE;NFKC_CF=2C3E;scf=2C3E;slc=2C3E;Upper\r
+cp;2C0F;cf=2C3F;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER MYSLITE;NFKC_CF=2C3F;scf=2C3F;slc=2C3F;Upper\r
+cp;2C10;cf=2C40;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER NASHI;NFKC_CF=2C40;scf=2C40;slc=2C40;Upper\r
+cp;2C11;cf=2C41;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER ONU;NFKC_CF=2C41;scf=2C41;slc=2C41;Upper\r
+cp;2C12;cf=2C42;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER POKOJI;NFKC_CF=2C42;scf=2C42;slc=2C42;Upper\r
+cp;2C13;cf=2C43;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER RITSI;NFKC_CF=2C43;scf=2C43;slc=2C43;Upper\r
+cp;2C14;cf=2C44;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER SLOVO;NFKC_CF=2C44;scf=2C44;slc=2C44;Upper\r
+cp;2C15;cf=2C45;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER TVRIDO;NFKC_CF=2C45;scf=2C45;slc=2C45;Upper\r
+cp;2C16;cf=2C46;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER UKU;NFKC_CF=2C46;scf=2C46;slc=2C46;Upper\r
+cp;2C17;cf=2C47;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER FRITU;NFKC_CF=2C47;scf=2C47;slc=2C47;Upper\r
+cp;2C18;cf=2C48;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER HERU;NFKC_CF=2C48;scf=2C48;slc=2C48;Upper\r
+cp;2C19;cf=2C49;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER OTU;NFKC_CF=2C49;scf=2C49;slc=2C49;Upper\r
+cp;2C1A;cf=2C4A;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER PE;NFKC_CF=2C4A;scf=2C4A;slc=2C4A;Upper\r
+cp;2C1B;cf=2C4B;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER SHTA;NFKC_CF=2C4B;scf=2C4B;slc=2C4B;Upper\r
+cp;2C1C;cf=2C4C;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER TSI;NFKC_CF=2C4C;scf=2C4C;slc=2C4C;Upper\r
+cp;2C1D;cf=2C4D;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER CHRIVI;NFKC_CF=2C4D;scf=2C4D;slc=2C4D;Upper\r
+cp;2C1E;cf=2C4E;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER SHA;NFKC_CF=2C4E;scf=2C4E;slc=2C4E;Upper\r
+cp;2C1F;cf=2C4F;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER YERU;NFKC_CF=2C4F;scf=2C4F;slc=2C4F;Upper\r
+cp;2C20;cf=2C50;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER YERI;NFKC_CF=2C50;scf=2C50;slc=2C50;Upper\r
+cp;2C21;cf=2C51;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER YATI;NFKC_CF=2C51;scf=2C51;slc=2C51;Upper\r
+cp;2C22;cf=2C52;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER SPIDERY HA;NFKC_CF=2C52;scf=2C52;slc=2C52;Upper\r
+cp;2C23;cf=2C53;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER YU;NFKC_CF=2C53;scf=2C53;slc=2C53;Upper\r
+cp;2C24;cf=2C54;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER SMALL YUS;NFKC_CF=2C54;scf=2C54;slc=2C54;Upper\r
+cp;2C25;cf=2C55;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;NFKC_CF=2C55;scf=2C55;slc=2C55;Upper\r
+cp;2C26;cf=2C56;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER YO;NFKC_CF=2C56;scf=2C56;slc=2C56;Upper\r
+cp;2C27;cf=2C57;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;NFKC_CF=2C57;scf=2C57;slc=2C57;Upper\r
+cp;2C28;cf=2C58;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER BIG YUS;NFKC_CF=2C58;scf=2C58;slc=2C58;Upper\r
+cp;2C29;cf=2C59;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;NFKC_CF=2C59;scf=2C59;slc=2C59;Upper\r
+cp;2C2A;cf=2C5A;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER FITA;NFKC_CF=2C5A;scf=2C5A;slc=2C5A;Upper\r
+cp;2C2B;cf=2C5B;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER IZHITSA;NFKC_CF=2C5B;scf=2C5B;slc=2C5B;Upper\r
+cp;2C2C;cf=2C5C;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER SHTAPIC;NFKC_CF=2C5C;scf=2C5C;slc=2C5C;Upper\r
+cp;2C2D;cf=2C5D;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER TROKUTASTI A;NFKC_CF=2C5D;scf=2C5D;slc=2C5D;Upper\r
+cp;2C2E;cf=2C5E;CWCF;CWKCF;CWL;na=GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;NFKC_CF=2C5E;scf=2C5E;slc=2C5E;Upper\r
 unassigned;2C2F\r
 # Small letters\r
-cp;2C30;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER AZU;stc=2C00;suc=2C00\r
-cp;2C31;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER BUKY;stc=2C01;suc=2C01\r
-cp;2C32;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER VEDE;stc=2C02;suc=2C02\r
-cp;2C33;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER GLAGOLI;stc=2C03;suc=2C03\r
-cp;2C34;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER DOBRO;stc=2C04;suc=2C04\r
-cp;2C35;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER YESTU;stc=2C05;suc=2C05\r
-cp;2C36;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER ZHIVETE;stc=2C06;suc=2C06\r
-cp;2C37;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER DZELO;stc=2C07;suc=2C07\r
-cp;2C38;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER ZEMLJA;stc=2C08;suc=2C08\r
-cp;2C39;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER IZHE;stc=2C09;suc=2C09\r
-cp;2C3A;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER INITIAL IZHE;stc=2C0A;suc=2C0A\r
-cp;2C3B;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER I;stc=2C0B;suc=2C0B\r
-cp;2C3C;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER DJERVI;stc=2C0C;suc=2C0C\r
-cp;2C3D;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER KAKO;stc=2C0D;suc=2C0D\r
-cp;2C3E;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER LJUDIJE;stc=2C0E;suc=2C0E\r
-cp;2C3F;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER MYSLITE;stc=2C0F;suc=2C0F\r
-cp;2C40;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER NASHI;stc=2C10;suc=2C10\r
-cp;2C41;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER ONU;stc=2C11;suc=2C11\r
-cp;2C42;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER POKOJI;stc=2C12;suc=2C12\r
-cp;2C43;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER RITSI;stc=2C13;suc=2C13\r
-cp;2C44;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER SLOVO;stc=2C14;suc=2C14\r
-cp;2C45;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER TVRIDO;stc=2C15;suc=2C15\r
-cp;2C46;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER UKU;stc=2C16;suc=2C16\r
-cp;2C47;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER FRITU;stc=2C17;suc=2C17\r
-cp;2C48;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER HERU;stc=2C18;suc=2C18\r
-cp;2C49;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER OTU;stc=2C19;suc=2C19\r
-cp;2C4A;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER PE;stc=2C1A;suc=2C1A\r
-cp;2C4B;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER SHTA;stc=2C1B;suc=2C1B\r
-cp;2C4C;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER TSI;stc=2C1C;suc=2C1C\r
-cp;2C4D;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER CHRIVI;stc=2C1D;suc=2C1D\r
-cp;2C4E;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER SHA;stc=2C1E;suc=2C1E\r
-cp;2C4F;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER YERU;stc=2C1F;suc=2C1F\r
-cp;2C50;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER YERI;stc=2C20;suc=2C20\r
-cp;2C51;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER YATI;stc=2C21;suc=2C21\r
-cp;2C52;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER SPIDERY HA;stc=2C22;suc=2C22\r
-cp;2C53;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER YU;stc=2C23;suc=2C23\r
-cp;2C54;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER SMALL YUS;stc=2C24;suc=2C24\r
-cp;2C55;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;stc=2C25;suc=2C25\r
-cp;2C56;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER YO;stc=2C26;suc=2C26\r
-cp;2C57;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;stc=2C27;suc=2C27\r
-cp;2C58;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER BIG YUS;stc=2C28;suc=2C28\r
-cp;2C59;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER IOTATED BIG YUS;stc=2C29;suc=2C29\r
-cp;2C5A;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER FITA;stc=2C2A;suc=2C2A\r
-cp;2C5B;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER IZHITSA;stc=2C2B;suc=2C2B\r
-cp;2C5C;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER SHTAPIC;stc=2C2C;suc=2C2C\r
-cp;2C5D;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER TROKUTASTI A;stc=2C2D;suc=2C2D\r
-cp;2C5E;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER LATINATE MYSLITE;stc=2C2E;suc=2C2E\r
+cp;2C30;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER AZU;SB=LO;stc=2C00;suc=2C00\r
+cp;2C31;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER BUKY;SB=LO;stc=2C01;suc=2C01\r
+cp;2C32;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER VEDE;SB=LO;stc=2C02;suc=2C02\r
+cp;2C33;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER GLAGOLI;SB=LO;stc=2C03;suc=2C03\r
+cp;2C34;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER DOBRO;SB=LO;stc=2C04;suc=2C04\r
+cp;2C35;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER YESTU;SB=LO;stc=2C05;suc=2C05\r
+cp;2C36;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER ZHIVETE;SB=LO;stc=2C06;suc=2C06\r
+cp;2C37;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER DZELO;SB=LO;stc=2C07;suc=2C07\r
+cp;2C38;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER ZEMLJA;SB=LO;stc=2C08;suc=2C08\r
+cp;2C39;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER IZHE;SB=LO;stc=2C09;suc=2C09\r
+cp;2C3A;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER INITIAL IZHE;SB=LO;stc=2C0A;suc=2C0A\r
+cp;2C3B;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER I;SB=LO;stc=2C0B;suc=2C0B\r
+cp;2C3C;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER DJERVI;SB=LO;stc=2C0C;suc=2C0C\r
+cp;2C3D;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER KAKO;SB=LO;stc=2C0D;suc=2C0D\r
+cp;2C3E;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER LJUDIJE;SB=LO;stc=2C0E;suc=2C0E\r
+cp;2C3F;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER MYSLITE;SB=LO;stc=2C0F;suc=2C0F\r
+cp;2C40;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER NASHI;SB=LO;stc=2C10;suc=2C10\r
+cp;2C41;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER ONU;SB=LO;stc=2C11;suc=2C11\r
+cp;2C42;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER POKOJI;SB=LO;stc=2C12;suc=2C12\r
+cp;2C43;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER RITSI;SB=LO;stc=2C13;suc=2C13\r
+cp;2C44;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER SLOVO;SB=LO;stc=2C14;suc=2C14\r
+cp;2C45;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER TVRIDO;SB=LO;stc=2C15;suc=2C15\r
+cp;2C46;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER UKU;SB=LO;stc=2C16;suc=2C16\r
+cp;2C47;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER FRITU;SB=LO;stc=2C17;suc=2C17\r
+cp;2C48;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER HERU;SB=LO;stc=2C18;suc=2C18\r
+cp;2C49;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER OTU;SB=LO;stc=2C19;suc=2C19\r
+cp;2C4A;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER PE;SB=LO;stc=2C1A;suc=2C1A\r
+cp;2C4B;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER SHTA;SB=LO;stc=2C1B;suc=2C1B\r
+cp;2C4C;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER TSI;SB=LO;stc=2C1C;suc=2C1C\r
+cp;2C4D;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER CHRIVI;SB=LO;stc=2C1D;suc=2C1D\r
+cp;2C4E;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER SHA;SB=LO;stc=2C1E;suc=2C1E\r
+cp;2C4F;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER YERU;SB=LO;stc=2C1F;suc=2C1F\r
+cp;2C50;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER YERI;SB=LO;stc=2C20;suc=2C20\r
+cp;2C51;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER YATI;SB=LO;stc=2C21;suc=2C21\r
+cp;2C52;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER SPIDERY HA;SB=LO;stc=2C22;suc=2C22\r
+cp;2C53;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER YU;SB=LO;stc=2C23;suc=2C23\r
+cp;2C54;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER SMALL YUS;SB=LO;stc=2C24;suc=2C24\r
+cp;2C55;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;SB=LO;stc=2C25;suc=2C25\r
+cp;2C56;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER YO;SB=LO;stc=2C26;suc=2C26\r
+cp;2C57;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;SB=LO;stc=2C27;suc=2C27\r
+cp;2C58;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER BIG YUS;SB=LO;stc=2C28;suc=2C28\r
+cp;2C59;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER IOTATED BIG YUS;SB=LO;stc=2C29;suc=2C29\r
+cp;2C5A;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER FITA;SB=LO;stc=2C2A;suc=2C2A\r
+cp;2C5B;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER IZHITSA;SB=LO;stc=2C2B;suc=2C2B\r
+cp;2C5C;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER SHTAPIC;SB=LO;stc=2C2C;suc=2C2C\r
+cp;2C5D;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER TROKUTASTI A;SB=LO;stc=2C2D;suc=2C2D\r
+cp;2C5E;CWT;CWU;gc=Ll;Lower;na=GLAGOLITIC SMALL LETTER LATINATE MYSLITE;SB=LO;stc=2C2E;suc=2C2E\r
 unassigned;2C5F\r
 \r
-block;2C60..2C7F;age=5.0;Alpha;blk=Latin_Ext_C;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+block;2C60..2C7F;age=5.0;Alpha;blk=Latin_Ext_C;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
 # 2C60..2C7F Latin Extended-C\r
 # Orthographic Latin additions\r
-cp;2C60;cf=2C61;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH DOUBLE BAR;NFKC_CF=2C61;SB=UP;scf=2C61;slc=2C61;Upper\r
-cp;2C61;CWT;CWU;Lower;na=LATIN SMALL LETTER L WITH DOUBLE BAR;stc=2C60;suc=2C60\r
-cp;2C62;cf=026B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH MIDDLE TILDE;NFKC_CF=026B;SB=UP;scf=026B;slc=026B;Upper\r
-cp;2C63;cf=1D7D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER P WITH STROKE;NFKC_CF=1D7D;SB=UP;scf=1D7D;slc=1D7D;Upper\r
-cp;2C64;cf=027D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER R WITH TAIL;NFKC_CF=027D;SB=UP;scf=027D;slc=027D;Upper\r
-cp;2C65;CWT;CWU;Lower;na=LATIN SMALL LETTER A WITH STROKE;stc=023A;suc=023A\r
-cp;2C66;CWT;CWU;Lower;na=LATIN SMALL LETTER T WITH DIAGONAL STROKE;stc=023E;suc=023E\r
+cp;2C60;cf=2C61;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER L WITH DOUBLE BAR;NFKC_CF=2C61;SB=UP;scf=2C61;slc=2C61;Upper\r
+cp;2C61;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER L WITH DOUBLE BAR;stc=2C60;suc=2C60\r
+cp;2C62;cf=026B;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER L WITH MIDDLE TILDE;NFKC_CF=026B;SB=UP;scf=026B;slc=026B;Upper\r
+cp;2C63;cf=1D7D;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER P WITH STROKE;NFKC_CF=1D7D;SB=UP;scf=1D7D;slc=1D7D;Upper\r
+cp;2C64;cf=027D;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER R WITH TAIL;NFKC_CF=027D;SB=UP;scf=027D;slc=027D;Upper\r
+cp;2C65;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH STROKE;stc=023A;suc=023A\r
+cp;2C66;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER T WITH DIAGONAL STROKE;stc=023E;suc=023E\r
 # Additions for Uighur\r
-cp;2C67;cf=2C68;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER H WITH DESCENDER;NFKC_CF=2C68;SB=UP;scf=2C68;slc=2C68;Upper\r
-cp;2C68;CWT;CWU;Lower;na=LATIN SMALL LETTER H WITH DESCENDER;stc=2C67;suc=2C67\r
-cp;2C69;cf=2C6A;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH DESCENDER;NFKC_CF=2C6A;SB=UP;scf=2C6A;slc=2C6A;Upper\r
-cp;2C6A;CWT;CWU;Lower;na=LATIN SMALL LETTER K WITH DESCENDER;stc=2C69;suc=2C69\r
-cp;2C6B;cf=2C6C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH DESCENDER;NFKC_CF=2C6C;SB=UP;scf=2C6C;slc=2C6C;Upper\r
-cp;2C6C;CWT;CWU;Lower;na=LATIN SMALL LETTER Z WITH DESCENDER;stc=2C6B;suc=2C6B\r
+cp;2C67;cf=2C68;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER H WITH DESCENDER;NFKC_CF=2C68;SB=UP;scf=2C68;slc=2C68;Upper\r
+cp;2C68;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER H WITH DESCENDER;stc=2C67;suc=2C67\r
+cp;2C69;cf=2C6A;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER K WITH DESCENDER;NFKC_CF=2C6A;SB=UP;scf=2C6A;slc=2C6A;Upper\r
+cp;2C6A;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER K WITH DESCENDER;stc=2C69;suc=2C69\r
+cp;2C6B;cf=2C6C;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Z WITH DESCENDER;NFKC_CF=2C6C;SB=UP;scf=2C6C;slc=2C6C;Upper\r
+cp;2C6C;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Z WITH DESCENDER;stc=2C6B;suc=2C6B\r
 # Miscellaneous additions\r
-cp;2C6D;age=5.1;cf=0251;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER ALPHA;NFKC_CF=0251;SB=UP;scf=0251;slc=0251;Upper\r
-cp;2C6E;age=5.1;cf=0271;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER M WITH HOOK;NFKC_CF=0271;SB=UP;scf=0271;slc=0271;Upper\r
-cp;2C6F;age=5.1;cf=0250;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED A;NFKC_CF=0250;SB=UP;scf=0250;slc=0250;Upper\r
-cp;2C70;age=5.2;cf=0252;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED ALPHA;NFKC_CF=0252;SB=UP;scf=0252;slc=0252;Upper\r
-cp;2C71;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER V WITH RIGHT HOOK\r
-cp;2C72;age=5.1;cf=2C73;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER W WITH HOOK;NFKC_CF=2C73;SB=UP;scf=2C73;slc=2C73;Upper\r
-cp;2C73;age=5.1;CWT;CWU;Lower;na=LATIN SMALL LETTER W WITH HOOK;stc=2C72;suc=2C72\r
-cp;2C74;-CWCM;Lower;na=LATIN SMALL LETTER V WITH CURL\r
+cp;2C6D;age=5.1;cf=0251;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER ALPHA;NFKC_CF=0251;SB=UP;scf=0251;slc=0251;Upper\r
+cp;2C6E;age=5.1;cf=0271;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER M WITH HOOK;NFKC_CF=0271;SB=UP;scf=0271;slc=0271;Upper\r
+cp;2C6F;age=5.1;cf=0250;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TURNED A;NFKC_CF=0250;SB=UP;scf=0250;slc=0250;Upper\r
+cp;2C70;age=5.2;cf=0252;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TURNED ALPHA;NFKC_CF=0252;SB=UP;scf=0252;slc=0252;Upper\r
+cp;2C71;age=5.1;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER V WITH RIGHT HOOK\r
+cp;2C72;age=5.1;cf=2C73;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER W WITH HOOK;NFKC_CF=2C73;SB=UP;scf=2C73;slc=2C73;Upper\r
+cp;2C73;age=5.1;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER W WITH HOOK;stc=2C72;suc=2C72\r
+cp;2C74;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER V WITH CURL\r
 # Claudian letters\r
-cp;2C75;cf=2C76;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER HALF H;NFKC_CF=2C76;SB=UP;scf=2C76;slc=2C76;Upper\r
-cp;2C76;CWT;CWU;Lower;na=LATIN SMALL LETTER HALF H;stc=2C75;suc=2C75\r
+cp;2C75;cf=2C76;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER HALF H;NFKC_CF=2C76;SB=UP;scf=2C76;slc=2C76;Upper\r
+cp;2C76;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER HALF H;stc=2C75;suc=2C75\r
 # Additions for UPA\r
-cp;2C77;-CWCM;Lower;na=LATIN SMALL LETTER TAILLESS PHI\r
-cp;2C78;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER E WITH NOTCH\r
-cp;2C79;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER TURNED R WITH TAIL\r
-cp;2C7A;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER O WITH LOW RING INSIDE\r
-cp;2C7B;age=5.1;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL TURNED E\r
+cp;2C77;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER TAILLESS PHI\r
+cp;2C78;age=5.1;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER E WITH NOTCH\r
+cp;2C79;age=5.1;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER TURNED R WITH TAIL\r
+cp;2C7A;age=5.1;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH LOW RING INSIDE\r
+cp;2C7B;age=5.1;-CWCM;gc=Ll;Lower;na=LATIN LETTER SMALL CAPITAL TURNED E\r
 cp;2C7C;age=5.1;CI;-CWCM;CWKCF;dm=006A;dt=Sub;gc=Lm;Lower;na=LATIN SUBSCRIPT SMALL LETTER J;NFKC_CF=006A;NFKC_QC=N;NFKD_QC=N;SD\r
 cp;2C7D;age=5.1;CI;-CWCM;CWKCF;dm=0056;dt=Sup;FC_NFKC=0076;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL V;NFKC_CF=0076;NFKC_QC=N;NFKD_QC=N\r
 # Additions for Shona\r
-cp;2C7E;age=5.2;cf=023F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH SWASH TAIL;NFKC_CF=023F;SB=UP;scf=023F;slc=023F;Upper\r
-cp;2C7F;age=5.2;cf=0240;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH SWASH TAIL;NFKC_CF=0240;SB=UP;scf=0240;slc=0240;Upper\r
+cp;2C7E;age=5.2;cf=023F;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER S WITH SWASH TAIL;NFKC_CF=023F;SB=UP;scf=023F;slc=023F;Upper\r
+cp;2C7F;age=5.2;cf=0240;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Z WITH SWASH TAIL;NFKC_CF=0240;SB=UP;scf=0240;slc=0240;Upper\r
 \r
 block;2C80..2CFF;age=4.1;Alpha;blk=Coptic;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Copt;WB=LE;XIDC;XIDS\r
 # 2C80..2CFF Coptic\r
@@ -16904,55 +16904,55 @@ cp;A62A;na=VAI SYLLABLE NDOLE MA
 cp;A62B;na=VAI SYLLABLE NDOLE DO\r
 unassigned;A62C..A63F\r
 \r
-block;A640..A69F;age=5.1;Alpha;blk=Cyrillic_Ext_B;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS\r
+block;A640..A69F;age=5.1;Alpha;blk=Cyrillic_Ext_B;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS\r
 # A640..A69F Cyrillic Extended-B\r
 # Letters for Old Cyrillic\r
-cp;A640;cf=A641;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZEMLYA;NFKC_CF=A641;SB=UP;scf=A641;slc=A641;Upper\r
-cp;A641;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ZEMLYA;stc=A640;suc=A640\r
-cp;A642;cf=A643;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZELO;NFKC_CF=A643;SB=UP;scf=A643;slc=A643;Upper\r
-cp;A643;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZELO;stc=A642;suc=A642\r
-cp;A644;cf=A645;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED DZE;NFKC_CF=A645;SB=UP;scf=A645;slc=A645;Upper\r
-cp;A645;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER REVERSED DZE;stc=A644;suc=A644\r
-cp;A646;cf=A647;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTA;NFKC_CF=A647;SB=UP;scf=A647;slc=A647;Upper\r
-cp;A647;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTA;stc=A646;suc=A646\r
-cp;A648;cf=A649;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DJERV;NFKC_CF=A649;SB=UP;scf=A649;slc=A649;Upper\r
-cp;A649;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DJERV;stc=A648;suc=A648\r
-cp;A64A;cf=A64B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER MONOGRAPH UK;NFKC_CF=A64B;SB=UP;scf=A64B;slc=A64B;Upper\r
-cp;A64B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER MONOGRAPH UK;stc=A64A;suc=A64A\r
-cp;A64C;cf=A64D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BROAD OMEGA;NFKC_CF=A64D;SB=UP;scf=A64D;slc=A64D;Upper\r
-cp;A64D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BROAD OMEGA;stc=A64C;suc=A64C\r
-cp;A64E;cf=A64F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER NEUTRAL YER;NFKC_CF=A64F;SB=UP;scf=A64F;slc=A64F;Upper\r
-cp;A64F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER NEUTRAL YER;stc=A64E;suc=A64E\r
-cp;A650;cf=A651;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YERU WITH BACK YER;NFKC_CF=A651;SB=UP;scf=A651;slc=A651;Upper\r
-cp;A651;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER YERU WITH BACK YER;stc=A650;suc=A650\r
-cp;A652;cf=A653;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED YAT;NFKC_CF=A653;SB=UP;scf=A653;slc=A653;Upper\r
-cp;A653;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED YAT;stc=A652;suc=A652\r
-cp;A654;cf=A655;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED YU;NFKC_CF=A655;SB=UP;scf=A655;slc=A655;Upper\r
-cp;A655;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER REVERSED YU;stc=A654;suc=A654\r
-cp;A656;cf=A657;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED A;NFKC_CF=A657;SB=UP;scf=A657;slc=A657;Upper\r
-cp;A657;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED A;stc=A656;suc=A656\r
-cp;A658;cf=A659;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;NFKC_CF=A659;SB=UP;scf=A659;slc=A659;Upper\r
-cp;A659;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CLOSED LITTLE YUS;stc=A658;suc=A658\r
-cp;A65A;cf=A65B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BLENDED YUS;NFKC_CF=A65B;SB=UP;scf=A65B;slc=A65B;Upper\r
-cp;A65B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BLENDED YUS;stc=A65A;suc=A65A\r
-cp;A65C;cf=A65D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;NFKC_CF=A65D;SB=UP;scf=A65D;slc=A65D;Upper\r
-cp;A65D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;stc=A65C;suc=A65C\r
-cp;A65E;cf=A65F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YN;NFKC_CF=A65F;SB=UP;scf=A65F;slc=A65F;Upper\r
-cp;A65F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER YN;stc=A65E;suc=A65E\r
-cp;A660;age=6.0;cf=A661;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED TSE;NFKC_CF=A661;SB=UP;scf=A661;slc=A661;Upper\r
-cp;A661;age=6.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER REVERSED TSE;stc=A660;suc=A660\r
-cp;A662;cf=A663;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT DE;NFKC_CF=A663;SB=UP;scf=A663;slc=A663;Upper\r
-cp;A663;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SOFT DE;stc=A662;suc=A662\r
-cp;A664;cf=A665;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT EL;NFKC_CF=A665;SB=UP;scf=A665;slc=A665;Upper\r
-cp;A665;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SOFT EL;stc=A664;suc=A664\r
-cp;A666;cf=A667;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT EM;NFKC_CF=A667;SB=UP;scf=A667;slc=A667;Upper\r
-cp;A667;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SOFT EM;stc=A666;suc=A666\r
-cp;A668;cf=A669;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER MONOCULAR O;NFKC_CF=A669;SB=UP;scf=A669;slc=A669;Upper\r
-cp;A669;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER MONOCULAR O;stc=A668;suc=A668\r
-cp;A66A;cf=A66B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BINOCULAR O;NFKC_CF=A66B;SB=UP;scf=A66B;slc=A66B;Upper\r
-cp;A66B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BINOCULAR O;stc=A66A;suc=A66A\r
-cp;A66C;cf=A66D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;NFKC_CF=A66D;SB=UP;scf=A66D;slc=A66D;Upper\r
-cp;A66D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;stc=A66C;suc=A66C\r
+cp;A640;cf=A641;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ZEMLYA;NFKC_CF=A641;SB=UP;scf=A641;slc=A641;Upper\r
+cp;A641;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ZEMLYA;stc=A640;suc=A640\r
+cp;A642;cf=A643;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DZELO;NFKC_CF=A643;SB=UP;scf=A643;slc=A643;Upper\r
+cp;A643;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DZELO;stc=A642;suc=A642\r
+cp;A644;cf=A645;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER REVERSED DZE;NFKC_CF=A645;SB=UP;scf=A645;slc=A645;Upper\r
+cp;A645;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER REVERSED DZE;stc=A644;suc=A644\r
+cp;A646;cf=A647;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER IOTA;NFKC_CF=A647;SB=UP;scf=A647;slc=A647;Upper\r
+cp;A647;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IOTA;stc=A646;suc=A646\r
+cp;A648;cf=A649;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DJERV;NFKC_CF=A649;SB=UP;scf=A649;slc=A649;Upper\r
+cp;A649;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DJERV;stc=A648;suc=A648\r
+cp;A64A;cf=A64B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER MONOGRAPH UK;NFKC_CF=A64B;SB=UP;scf=A64B;slc=A64B;Upper\r
+cp;A64B;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER MONOGRAPH UK;stc=A64A;suc=A64A\r
+cp;A64C;cf=A64D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER BROAD OMEGA;NFKC_CF=A64D;SB=UP;scf=A64D;slc=A64D;Upper\r
+cp;A64D;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER BROAD OMEGA;stc=A64C;suc=A64C\r
+cp;A64E;cf=A64F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER NEUTRAL YER;NFKC_CF=A64F;SB=UP;scf=A64F;slc=A64F;Upper\r
+cp;A64F;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER NEUTRAL YER;stc=A64E;suc=A64E\r
+cp;A650;cf=A651;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER YERU WITH BACK YER;NFKC_CF=A651;SB=UP;scf=A651;slc=A651;Upper\r
+cp;A651;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER YERU WITH BACK YER;stc=A650;suc=A650\r
+cp;A652;cf=A653;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER IOTIFIED YAT;NFKC_CF=A653;SB=UP;scf=A653;slc=A653;Upper\r
+cp;A653;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IOTIFIED YAT;stc=A652;suc=A652\r
+cp;A654;cf=A655;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER REVERSED YU;NFKC_CF=A655;SB=UP;scf=A655;slc=A655;Upper\r
+cp;A655;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER REVERSED YU;stc=A654;suc=A654\r
+cp;A656;cf=A657;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER IOTIFIED A;NFKC_CF=A657;SB=UP;scf=A657;slc=A657;Upper\r
+cp;A657;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IOTIFIED A;stc=A656;suc=A656\r
+cp;A658;cf=A659;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;NFKC_CF=A659;SB=UP;scf=A659;slc=A659;Upper\r
+cp;A659;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER CLOSED LITTLE YUS;stc=A658;suc=A658\r
+cp;A65A;cf=A65B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER BLENDED YUS;NFKC_CF=A65B;SB=UP;scf=A65B;slc=A65B;Upper\r
+cp;A65B;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER BLENDED YUS;stc=A65A;suc=A65A\r
+cp;A65C;cf=A65D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;NFKC_CF=A65D;SB=UP;scf=A65D;slc=A65D;Upper\r
+cp;A65D;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;stc=A65C;suc=A65C\r
+cp;A65E;cf=A65F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER YN;NFKC_CF=A65F;SB=UP;scf=A65F;slc=A65F;Upper\r
+cp;A65F;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER YN;stc=A65E;suc=A65E\r
+cp;A660;age=6.0;cf=A661;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER REVERSED TSE;NFKC_CF=A661;SB=UP;scf=A661;slc=A661;Upper\r
+cp;A661;age=6.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER REVERSED TSE;stc=A660;suc=A660\r
+cp;A662;cf=A663;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER SOFT DE;NFKC_CF=A663;SB=UP;scf=A663;slc=A663;Upper\r
+cp;A663;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SOFT DE;stc=A662;suc=A662\r
+cp;A664;cf=A665;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER SOFT EL;NFKC_CF=A665;SB=UP;scf=A665;slc=A665;Upper\r
+cp;A665;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SOFT EL;stc=A664;suc=A664\r
+cp;A666;cf=A667;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER SOFT EM;NFKC_CF=A667;SB=UP;scf=A667;slc=A667;Upper\r
+cp;A667;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SOFT EM;stc=A666;suc=A666\r
+cp;A668;cf=A669;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER MONOCULAR O;NFKC_CF=A669;SB=UP;scf=A669;slc=A669;Upper\r
+cp;A669;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER MONOCULAR O;stc=A668;suc=A668\r
+cp;A66A;cf=A66B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER BINOCULAR O;NFKC_CF=A66B;SB=UP;scf=A66B;slc=A66B;Upper\r
+cp;A66B;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER BINOCULAR O;stc=A66A;suc=A66A\r
+cp;A66C;cf=A66D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;NFKC_CF=A66D;SB=UP;scf=A66D;slc=A66D;Upper\r
+cp;A66D;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;stc=A66C;suc=A66C\r
 cp;A66E;-Cased;-CWCM;gc=Lo;na=CYRILLIC LETTER MULTIOCULAR O;SB=LE\r
 # Abbreviation mark\r
 cp;A66F;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC VZMET;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS\r
@@ -16978,35 +16978,35 @@ cp;A67E;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=CYRILLIC KAVYKA;SB=XX;WB=XX
 # Modifier letter\r
 cp;A67F;bc=ON;-Cased;CI;-CWCM;Dia;gc=Lm;na=CYRILLIC PAYEROK;SB=LE\r
 # Letters for Old Abkhasian orthography\r
-cp;A680;cf=A681;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DWE;NFKC_CF=A681;SB=UP;scf=A681;slc=A681;Upper\r
-cp;A681;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DWE;stc=A680;suc=A680\r
-cp;A682;cf=A683;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZWE;NFKC_CF=A683;SB=UP;scf=A683;slc=A683;Upper\r
-cp;A683;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZWE;stc=A682;suc=A682\r
-cp;A684;cf=A685;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHWE;NFKC_CF=A685;SB=UP;scf=A685;slc=A685;Upper\r
-cp;A685;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ZHWE;stc=A684;suc=A684\r
-cp;A686;cf=A687;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CCHE;NFKC_CF=A687;SB=UP;scf=A687;slc=A687;Upper\r
-cp;A687;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CCHE;stc=A686;suc=A686\r
-cp;A688;cf=A689;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZZE;NFKC_CF=A689;SB=UP;scf=A689;slc=A689;Upper\r
-cp;A689;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZZE;stc=A688;suc=A688\r
-cp;A68A;cf=A68B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;NFKC_CF=A68B;SB=UP;scf=A68B;slc=A68B;Upper\r
-cp;A68B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;stc=A68A;suc=A68A\r
-cp;A68C;cf=A68D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TWE;NFKC_CF=A68D;SB=UP;scf=A68D;slc=A68D;Upper\r
-cp;A68D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TWE;stc=A68C;suc=A68C\r
-cp;A68E;cf=A68F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TSWE;NFKC_CF=A68F;SB=UP;scf=A68F;slc=A68F;Upper\r
-cp;A68F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TSWE;stc=A68E;suc=A68E\r
-cp;A690;cf=A691;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TSSE;NFKC_CF=A691;SB=UP;scf=A691;slc=A691;Upper\r
-cp;A691;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TSSE;stc=A690;suc=A690\r
-cp;A692;cf=A693;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TCHE;NFKC_CF=A693;SB=UP;scf=A693;slc=A693;Upper\r
-cp;A693;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TCHE;stc=A692;suc=A692\r
-cp;A694;cf=A695;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HWE;NFKC_CF=A695;SB=UP;scf=A695;slc=A695;Upper\r
-cp;A695;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER HWE;stc=A694;suc=A694\r
-cp;A696;cf=A697;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHWE;NFKC_CF=A697;SB=UP;scf=A697;slc=A697;Upper\r
-cp;A697;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SHWE;stc=A696;suc=A696\r
+cp;A680;cf=A681;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DWE;NFKC_CF=A681;SB=UP;scf=A681;slc=A681;Upper\r
+cp;A681;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DWE;stc=A680;suc=A680\r
+cp;A682;cf=A683;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DZWE;NFKC_CF=A683;SB=UP;scf=A683;slc=A683;Upper\r
+cp;A683;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DZWE;stc=A682;suc=A682\r
+cp;A684;cf=A685;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER ZHWE;NFKC_CF=A685;SB=UP;scf=A685;slc=A685;Upper\r
+cp;A685;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER ZHWE;stc=A684;suc=A684\r
+cp;A686;cf=A687;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER CCHE;NFKC_CF=A687;SB=UP;scf=A687;slc=A687;Upper\r
+cp;A687;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER CCHE;stc=A686;suc=A686\r
+cp;A688;cf=A689;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DZZE;NFKC_CF=A689;SB=UP;scf=A689;slc=A689;Upper\r
+cp;A689;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DZZE;stc=A688;suc=A688\r
+cp;A68A;cf=A68B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;NFKC_CF=A68B;SB=UP;scf=A68B;slc=A68B;Upper\r
+cp;A68B;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;stc=A68A;suc=A68A\r
+cp;A68C;cf=A68D;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER TWE;NFKC_CF=A68D;SB=UP;scf=A68D;slc=A68D;Upper\r
+cp;A68D;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER TWE;stc=A68C;suc=A68C\r
+cp;A68E;cf=A68F;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER TSWE;NFKC_CF=A68F;SB=UP;scf=A68F;slc=A68F;Upper\r
+cp;A68F;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER TSWE;stc=A68E;suc=A68E\r
+cp;A690;cf=A691;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER TSSE;NFKC_CF=A691;SB=UP;scf=A691;slc=A691;Upper\r
+cp;A691;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER TSSE;stc=A690;suc=A690\r
+cp;A692;cf=A693;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER TCHE;NFKC_CF=A693;SB=UP;scf=A693;slc=A693;Upper\r
+cp;A693;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER TCHE;stc=A692;suc=A692\r
+cp;A694;cf=A695;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER HWE;NFKC_CF=A695;SB=UP;scf=A695;slc=A695;Upper\r
+cp;A695;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER HWE;stc=A694;suc=A694\r
+cp;A696;cf=A697;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER SHWE;NFKC_CF=A697;SB=UP;scf=A697;slc=A697;Upper\r
+cp;A697;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER SHWE;stc=A696;suc=A696\r
 # Letters for Old Cyrillic\r
-cp;A698;age=7.0;cf=A699;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DOUBLE O;NFKC_CF=A699;SB=UP;scf=A699;slc=A699;Upper\r
-cp;A699;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DOUBLE O;stc=A698;suc=A698\r
-cp;A69A;age=7.0;cf=A69B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CROSSED O;NFKC_CF=A69B;SB=UP;scf=A69B;slc=A69B;Upper\r
-cp;A69B;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CROSSED O;stc=A69A;suc=A69A\r
+cp;A698;age=7.0;cf=A699;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER DOUBLE O;NFKC_CF=A699;SB=UP;scf=A699;slc=A699;Upper\r
+cp;A699;age=7.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER DOUBLE O;stc=A698;suc=A698\r
+cp;A69A;age=7.0;cf=A69B;CWCF;CWKCF;CWL;na=CYRILLIC CAPITAL LETTER CROSSED O;NFKC_CF=A69B;SB=UP;scf=A69B;slc=A69B;Upper\r
+cp;A69B;age=7.0;CWT;CWU;gc=Ll;Lower;na=CYRILLIC SMALL LETTER CROSSED O;stc=A69A;suc=A69A\r
 # Intonation marks for Lithuanian dialectology\r
 cp;A69C;age=7.0;CI;-CWCM;CWKCF;Dia;dm=044A;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER CYRILLIC HARD SIGN;NFKC_CF=044A;NFKC_QC=N;NFKD_QC=N\r
 cp;A69D;age=7.0;CI;-CWCM;CWKCF;Dia;dm=044C;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER CYRILLIC SOFT SIGN;NFKC_CF=044C;NFKC_QC=N;NFKD_QC=N\r
@@ -20547,18 +20547,18 @@ cp;FE0D;na=VARIATION SELECTOR-14;Name_Alias=abbreviation=VS14
 cp;FE0E;na=VARIATION SELECTOR-15;Name_Alias=abbreviation=VS15\r
 cp;FE0F;EComp;na=VARIATION SELECTOR-16;Name_Alias=abbreviation=VS16\r
 \r
-block;FE10..FE1F;age=4.1;bc=ON;blk=Vertical_Forms;CWKCF;dt=Vert;ea=W;gc=Po;Gr_Base;lb=CL;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U\r
+block;FE10..FE1F;age=4.1;bc=ON;blk=Vertical_Forms;CWKCF;dt=Vert;ea=W;gc=Po;Gr_Base;lb=IS;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U\r
 # FE10..FE1F Vertical Forms\r
 # Glyphs for vertical variants\r
-cp;FE10;dm=002C;lb=IS;na=PRESENTATION FORM FOR VERTICAL COMMA;NFKC_CF=002C;SB=SC;WB=MN\r
-cp;FE11;dm=3001;na=PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;NFKC_CF=3001;SB=SC\r
-cp;FE12;dm=3002;na=PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;NFKC_CF=3002\r
-cp;FE13;CI;dm=003A;lb=IS;na=PRESENTATION FORM FOR VERTICAL COLON;NFKC_CF=003A;SB=SC;WB=ML\r
-cp;FE14;dm=003B;lb=IS;na=PRESENTATION FORM FOR VERTICAL SEMICOLON;NFKC_CF=003B;WB=MN\r
+cp;FE10;dm=002C;na=PRESENTATION FORM FOR VERTICAL COMMA;NFKC_CF=002C;SB=SC;WB=MN\r
+cp;FE11;dm=3001;lb=CL;na=PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;NFKC_CF=3001;SB=SC\r
+cp;FE12;dm=3002;lb=CL;na=PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;NFKC_CF=3002\r
+cp;FE13;CI;dm=003A;na=PRESENTATION FORM FOR VERTICAL COLON;NFKC_CF=003A;SB=SC;WB=ML\r
+cp;FE14;dm=003B;na=PRESENTATION FORM FOR VERTICAL SEMICOLON;NFKC_CF=003B;WB=MN\r
 cp;FE15;dm=0021;lb=EX;na=PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;NFKC_CF=0021\r
 cp;FE16;dm=003F;lb=EX;na=PRESENTATION FORM FOR VERTICAL QUESTION MARK;NFKC_CF=003F\r
 cp;FE17;dm=3016;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;NFKC_CF=3016;SB=CL\r
-cp;FE18;dm=3017;gc=Pe;na=PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Name_Alias=correction=PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET;NFKC_CF=3017;SB=CL\r
+cp;FE18;dm=3017;gc=Pe;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Name_Alias=correction=PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET;NFKC_CF=3017;SB=CL\r
 cp;FE19;dm=2026;lb=IN;na=PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;NFKC_CF=002E 002E 002E\r
 unassigned;FE1A..FE1F;vo=U\r
 \r
@@ -21873,90 +21873,90 @@ cp;103D4;gc=Nl;na=OLD PERSIAN NUMBER TWENTY;nt=Nu;nv=20
 cp;103D5;gc=Nl;na=OLD PERSIAN NUMBER HUNDRED;nt=Nu;nv=100\r
 unassigned;103D6..103DF\r
 \r
-block;10400..1044F;age=3.1;Alpha;blk=Deseret;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Dsrt;WB=LE;XIDC;XIDS\r
+block;10400..1044F;age=3.1;Alpha;blk=Deseret;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Dsrt;WB=LE;XIDC;XIDS\r
 # 10400..1044F Deseret\r
 # Uppercase letters\r
-cp;10400;cf=10428;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG I;NFKC_CF=10428;SB=UP;scf=10428;slc=10428;Upper\r
-cp;10401;cf=10429;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG E;NFKC_CF=10429;SB=UP;scf=10429;slc=10429;Upper\r
-cp;10402;cf=1042A;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG A;NFKC_CF=1042A;SB=UP;scf=1042A;slc=1042A;Upper\r
-cp;10403;cf=1042B;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG AH;NFKC_CF=1042B;SB=UP;scf=1042B;slc=1042B;Upper\r
-cp;10404;cf=1042C;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG O;NFKC_CF=1042C;SB=UP;scf=1042C;slc=1042C;Upper\r
-cp;10405;cf=1042D;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG OO;NFKC_CF=1042D;SB=UP;scf=1042D;slc=1042D;Upper\r
-cp;10406;cf=1042E;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT I;NFKC_CF=1042E;SB=UP;scf=1042E;slc=1042E;Upper\r
-cp;10407;cf=1042F;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT E;NFKC_CF=1042F;SB=UP;scf=1042F;slc=1042F;Upper\r
-cp;10408;cf=10430;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT A;NFKC_CF=10430;SB=UP;scf=10430;slc=10430;Upper\r
-cp;10409;cf=10431;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT AH;NFKC_CF=10431;SB=UP;scf=10431;slc=10431;Upper\r
-cp;1040A;cf=10432;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT O;NFKC_CF=10432;SB=UP;scf=10432;slc=10432;Upper\r
-cp;1040B;cf=10433;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT OO;NFKC_CF=10433;SB=UP;scf=10433;slc=10433;Upper\r
-cp;1040C;cf=10434;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER AY;NFKC_CF=10434;SB=UP;scf=10434;slc=10434;Upper\r
-cp;1040D;cf=10435;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER OW;NFKC_CF=10435;SB=UP;scf=10435;slc=10435;Upper\r
-cp;1040E;cf=10436;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER WU;NFKC_CF=10436;SB=UP;scf=10436;slc=10436;Upper\r
-cp;1040F;cf=10437;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER YEE;NFKC_CF=10437;SB=UP;scf=10437;slc=10437;Upper\r
-cp;10410;cf=10438;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER H;NFKC_CF=10438;SB=UP;scf=10438;slc=10438;Upper\r
-cp;10411;cf=10439;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER PEE;NFKC_CF=10439;SB=UP;scf=10439;slc=10439;Upper\r
-cp;10412;cf=1043A;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER BEE;NFKC_CF=1043A;SB=UP;scf=1043A;slc=1043A;Upper\r
-cp;10413;cf=1043B;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER TEE;NFKC_CF=1043B;SB=UP;scf=1043B;slc=1043B;Upper\r
-cp;10414;cf=1043C;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER DEE;NFKC_CF=1043C;SB=UP;scf=1043C;slc=1043C;Upper\r
-cp;10415;cf=1043D;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER CHEE;NFKC_CF=1043D;SB=UP;scf=1043D;slc=1043D;Upper\r
-cp;10416;cf=1043E;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER JEE;NFKC_CF=1043E;SB=UP;scf=1043E;slc=1043E;Upper\r
-cp;10417;cf=1043F;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER KAY;NFKC_CF=1043F;SB=UP;scf=1043F;slc=1043F;Upper\r
-cp;10418;cf=10440;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER GAY;NFKC_CF=10440;SB=UP;scf=10440;slc=10440;Upper\r
-cp;10419;cf=10441;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EF;NFKC_CF=10441;SB=UP;scf=10441;slc=10441;Upper\r
-cp;1041A;cf=10442;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER VEE;NFKC_CF=10442;SB=UP;scf=10442;slc=10442;Upper\r
-cp;1041B;cf=10443;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ETH;NFKC_CF=10443;SB=UP;scf=10443;slc=10443;Upper\r
-cp;1041C;cf=10444;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER THEE;NFKC_CF=10444;SB=UP;scf=10444;slc=10444;Upper\r
-cp;1041D;cf=10445;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ES;NFKC_CF=10445;SB=UP;scf=10445;slc=10445;Upper\r
-cp;1041E;cf=10446;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ZEE;NFKC_CF=10446;SB=UP;scf=10446;slc=10446;Upper\r
-cp;1041F;cf=10447;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ESH;NFKC_CF=10447;SB=UP;scf=10447;slc=10447;Upper\r
-cp;10420;cf=10448;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ZHEE;NFKC_CF=10448;SB=UP;scf=10448;slc=10448;Upper\r
-cp;10421;cf=10449;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ER;NFKC_CF=10449;SB=UP;scf=10449;slc=10449;Upper\r
-cp;10422;cf=1044A;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EL;NFKC_CF=1044A;SB=UP;scf=1044A;slc=1044A;Upper\r
-cp;10423;cf=1044B;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EM;NFKC_CF=1044B;SB=UP;scf=1044B;slc=1044B;Upper\r
-cp;10424;cf=1044C;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EN;NFKC_CF=1044C;SB=UP;scf=1044C;slc=1044C;Upper\r
-cp;10425;cf=1044D;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ENG;NFKC_CF=1044D;SB=UP;scf=1044D;slc=1044D;Upper\r
-cp;10426;age=4.0;cf=1044E;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER OI;NFKC_CF=1044E;SB=UP;scf=1044E;slc=1044E;Upper\r
-cp;10427;age=4.0;cf=1044F;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EW;NFKC_CF=1044F;SB=UP;scf=1044F;slc=1044F;Upper\r
+cp;10400;cf=10428;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER LONG I;NFKC_CF=10428;scf=10428;slc=10428;Upper\r
+cp;10401;cf=10429;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER LONG E;NFKC_CF=10429;scf=10429;slc=10429;Upper\r
+cp;10402;cf=1042A;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER LONG A;NFKC_CF=1042A;scf=1042A;slc=1042A;Upper\r
+cp;10403;cf=1042B;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER LONG AH;NFKC_CF=1042B;scf=1042B;slc=1042B;Upper\r
+cp;10404;cf=1042C;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER LONG O;NFKC_CF=1042C;scf=1042C;slc=1042C;Upper\r
+cp;10405;cf=1042D;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER LONG OO;NFKC_CF=1042D;scf=1042D;slc=1042D;Upper\r
+cp;10406;cf=1042E;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER SHORT I;NFKC_CF=1042E;scf=1042E;slc=1042E;Upper\r
+cp;10407;cf=1042F;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER SHORT E;NFKC_CF=1042F;scf=1042F;slc=1042F;Upper\r
+cp;10408;cf=10430;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER SHORT A;NFKC_CF=10430;scf=10430;slc=10430;Upper\r
+cp;10409;cf=10431;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER SHORT AH;NFKC_CF=10431;scf=10431;slc=10431;Upper\r
+cp;1040A;cf=10432;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER SHORT O;NFKC_CF=10432;scf=10432;slc=10432;Upper\r
+cp;1040B;cf=10433;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER SHORT OO;NFKC_CF=10433;scf=10433;slc=10433;Upper\r
+cp;1040C;cf=10434;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER AY;NFKC_CF=10434;scf=10434;slc=10434;Upper\r
+cp;1040D;cf=10435;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER OW;NFKC_CF=10435;scf=10435;slc=10435;Upper\r
+cp;1040E;cf=10436;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER WU;NFKC_CF=10436;scf=10436;slc=10436;Upper\r
+cp;1040F;cf=10437;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER YEE;NFKC_CF=10437;scf=10437;slc=10437;Upper\r
+cp;10410;cf=10438;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER H;NFKC_CF=10438;scf=10438;slc=10438;Upper\r
+cp;10411;cf=10439;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER PEE;NFKC_CF=10439;scf=10439;slc=10439;Upper\r
+cp;10412;cf=1043A;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER BEE;NFKC_CF=1043A;scf=1043A;slc=1043A;Upper\r
+cp;10413;cf=1043B;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER TEE;NFKC_CF=1043B;scf=1043B;slc=1043B;Upper\r
+cp;10414;cf=1043C;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER DEE;NFKC_CF=1043C;scf=1043C;slc=1043C;Upper\r
+cp;10415;cf=1043D;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER CHEE;NFKC_CF=1043D;scf=1043D;slc=1043D;Upper\r
+cp;10416;cf=1043E;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER JEE;NFKC_CF=1043E;scf=1043E;slc=1043E;Upper\r
+cp;10417;cf=1043F;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER KAY;NFKC_CF=1043F;scf=1043F;slc=1043F;Upper\r
+cp;10418;cf=10440;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER GAY;NFKC_CF=10440;scf=10440;slc=10440;Upper\r
+cp;10419;cf=10441;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER EF;NFKC_CF=10441;scf=10441;slc=10441;Upper\r
+cp;1041A;cf=10442;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER VEE;NFKC_CF=10442;scf=10442;slc=10442;Upper\r
+cp;1041B;cf=10443;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER ETH;NFKC_CF=10443;scf=10443;slc=10443;Upper\r
+cp;1041C;cf=10444;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER THEE;NFKC_CF=10444;scf=10444;slc=10444;Upper\r
+cp;1041D;cf=10445;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER ES;NFKC_CF=10445;scf=10445;slc=10445;Upper\r
+cp;1041E;cf=10446;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER ZEE;NFKC_CF=10446;scf=10446;slc=10446;Upper\r
+cp;1041F;cf=10447;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER ESH;NFKC_CF=10447;scf=10447;slc=10447;Upper\r
+cp;10420;cf=10448;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER ZHEE;NFKC_CF=10448;scf=10448;slc=10448;Upper\r
+cp;10421;cf=10449;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER ER;NFKC_CF=10449;scf=10449;slc=10449;Upper\r
+cp;10422;cf=1044A;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER EL;NFKC_CF=1044A;scf=1044A;slc=1044A;Upper\r
+cp;10423;cf=1044B;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER EM;NFKC_CF=1044B;scf=1044B;slc=1044B;Upper\r
+cp;10424;cf=1044C;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER EN;NFKC_CF=1044C;scf=1044C;slc=1044C;Upper\r
+cp;10425;cf=1044D;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER ENG;NFKC_CF=1044D;scf=1044D;slc=1044D;Upper\r
+cp;10426;age=4.0;cf=1044E;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER OI;NFKC_CF=1044E;scf=1044E;slc=1044E;Upper\r
+cp;10427;age=4.0;cf=1044F;CWCF;CWKCF;CWL;na=DESERET CAPITAL LETTER EW;NFKC_CF=1044F;scf=1044F;slc=1044F;Upper\r
 # Lowercase letters\r
-cp;10428;CWT;CWU;Lower;na=DESERET SMALL LETTER LONG I;stc=10400;suc=10400\r
-cp;10429;CWT;CWU;Lower;na=DESERET SMALL LETTER LONG E;stc=10401;suc=10401\r
-cp;1042A;CWT;CWU;Lower;na=DESERET SMALL LETTER LONG A;stc=10402;suc=10402\r
-cp;1042B;CWT;CWU;Lower;na=DESERET SMALL LETTER LONG AH;stc=10403;suc=10403\r
-cp;1042C;CWT;CWU;Lower;na=DESERET SMALL LETTER LONG O;stc=10404;suc=10404\r
-cp;1042D;CWT;CWU;Lower;na=DESERET SMALL LETTER LONG OO;stc=10405;suc=10405\r
-cp;1042E;CWT;CWU;Lower;na=DESERET SMALL LETTER SHORT I;stc=10406;suc=10406\r
-cp;1042F;CWT;CWU;Lower;na=DESERET SMALL LETTER SHORT E;stc=10407;suc=10407\r
-cp;10430;CWT;CWU;Lower;na=DESERET SMALL LETTER SHORT A;stc=10408;suc=10408\r
-cp;10431;CWT;CWU;Lower;na=DESERET SMALL LETTER SHORT AH;stc=10409;suc=10409\r
-cp;10432;CWT;CWU;Lower;na=DESERET SMALL LETTER SHORT O;stc=1040A;suc=1040A\r
-cp;10433;CWT;CWU;Lower;na=DESERET SMALL LETTER SHORT OO;stc=1040B;suc=1040B\r
-cp;10434;CWT;CWU;Lower;na=DESERET SMALL LETTER AY;stc=1040C;suc=1040C\r
-cp;10435;CWT;CWU;Lower;na=DESERET SMALL LETTER OW;stc=1040D;suc=1040D\r
-cp;10436;CWT;CWU;Lower;na=DESERET SMALL LETTER WU;stc=1040E;suc=1040E\r
-cp;10437;CWT;CWU;Lower;na=DESERET SMALL LETTER YEE;stc=1040F;suc=1040F\r
-cp;10438;CWT;CWU;Lower;na=DESERET SMALL LETTER H;stc=10410;suc=10410\r
-cp;10439;CWT;CWU;Lower;na=DESERET SMALL LETTER PEE;stc=10411;suc=10411\r
-cp;1043A;CWT;CWU;Lower;na=DESERET SMALL LETTER BEE;stc=10412;suc=10412\r
-cp;1043B;CWT;CWU;Lower;na=DESERET SMALL LETTER TEE;stc=10413;suc=10413\r
-cp;1043C;CWT;CWU;Lower;na=DESERET SMALL LETTER DEE;stc=10414;suc=10414\r
-cp;1043D;CWT;CWU;Lower;na=DESERET SMALL LETTER CHEE;stc=10415;suc=10415\r
-cp;1043E;CWT;CWU;Lower;na=DESERET SMALL LETTER JEE;stc=10416;suc=10416\r
-cp;1043F;CWT;CWU;Lower;na=DESERET SMALL LETTER KAY;stc=10417;suc=10417\r
-cp;10440;CWT;CWU;Lower;na=DESERET SMALL LETTER GAY;stc=10418;suc=10418\r
-cp;10441;CWT;CWU;Lower;na=DESERET SMALL LETTER EF;stc=10419;suc=10419\r
-cp;10442;CWT;CWU;Lower;na=DESERET SMALL LETTER VEE;stc=1041A;suc=1041A\r
-cp;10443;CWT;CWU;Lower;na=DESERET SMALL LETTER ETH;stc=1041B;suc=1041B\r
-cp;10444;CWT;CWU;Lower;na=DESERET SMALL LETTER THEE;stc=1041C;suc=1041C\r
-cp;10445;CWT;CWU;Lower;na=DESERET SMALL LETTER ES;stc=1041D;suc=1041D\r
-cp;10446;CWT;CWU;Lower;na=DESERET SMALL LETTER ZEE;stc=1041E;suc=1041E\r
-cp;10447;CWT;CWU;Lower;na=DESERET SMALL LETTER ESH;stc=1041F;suc=1041F\r
-cp;10448;CWT;CWU;Lower;na=DESERET SMALL LETTER ZHEE;stc=10420;suc=10420\r
-cp;10449;CWT;CWU;Lower;na=DESERET SMALL LETTER ER;stc=10421;suc=10421\r
-cp;1044A;CWT;CWU;Lower;na=DESERET SMALL LETTER EL;stc=10422;suc=10422\r
-cp;1044B;CWT;CWU;Lower;na=DESERET SMALL LETTER EM;stc=10423;suc=10423\r
-cp;1044C;CWT;CWU;Lower;na=DESERET SMALL LETTER EN;stc=10424;suc=10424\r
-cp;1044D;CWT;CWU;Lower;na=DESERET SMALL LETTER ENG;stc=10425;suc=10425\r
-cp;1044E;age=4.0;CWT;CWU;Lower;na=DESERET SMALL LETTER OI;stc=10426;suc=10426\r
-cp;1044F;age=4.0;CWT;CWU;Lower;na=DESERET SMALL LETTER EW;stc=10427;suc=10427\r
+cp;10428;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER LONG I;SB=LO;stc=10400;suc=10400\r
+cp;10429;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER LONG E;SB=LO;stc=10401;suc=10401\r
+cp;1042A;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER LONG A;SB=LO;stc=10402;suc=10402\r
+cp;1042B;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER LONG AH;SB=LO;stc=10403;suc=10403\r
+cp;1042C;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER LONG O;SB=LO;stc=10404;suc=10404\r
+cp;1042D;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER LONG OO;SB=LO;stc=10405;suc=10405\r
+cp;1042E;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER SHORT I;SB=LO;stc=10406;suc=10406\r
+cp;1042F;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER SHORT E;SB=LO;stc=10407;suc=10407\r
+cp;10430;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER SHORT A;SB=LO;stc=10408;suc=10408\r
+cp;10431;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER SHORT AH;SB=LO;stc=10409;suc=10409\r
+cp;10432;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER SHORT O;SB=LO;stc=1040A;suc=1040A\r
+cp;10433;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER SHORT OO;SB=LO;stc=1040B;suc=1040B\r
+cp;10434;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER AY;SB=LO;stc=1040C;suc=1040C\r
+cp;10435;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER OW;SB=LO;stc=1040D;suc=1040D\r
+cp;10436;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER WU;SB=LO;stc=1040E;suc=1040E\r
+cp;10437;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER YEE;SB=LO;stc=1040F;suc=1040F\r
+cp;10438;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER H;SB=LO;stc=10410;suc=10410\r
+cp;10439;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER PEE;SB=LO;stc=10411;suc=10411\r
+cp;1043A;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER BEE;SB=LO;stc=10412;suc=10412\r
+cp;1043B;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER TEE;SB=LO;stc=10413;suc=10413\r
+cp;1043C;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER DEE;SB=LO;stc=10414;suc=10414\r
+cp;1043D;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER CHEE;SB=LO;stc=10415;suc=10415\r
+cp;1043E;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER JEE;SB=LO;stc=10416;suc=10416\r
+cp;1043F;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER KAY;SB=LO;stc=10417;suc=10417\r
+cp;10440;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER GAY;SB=LO;stc=10418;suc=10418\r
+cp;10441;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER EF;SB=LO;stc=10419;suc=10419\r
+cp;10442;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER VEE;SB=LO;stc=1041A;suc=1041A\r
+cp;10443;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER ETH;SB=LO;stc=1041B;suc=1041B\r
+cp;10444;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER THEE;SB=LO;stc=1041C;suc=1041C\r
+cp;10445;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER ES;SB=LO;stc=1041D;suc=1041D\r
+cp;10446;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER ZEE;SB=LO;stc=1041E;suc=1041E\r
+cp;10447;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER ESH;SB=LO;stc=1041F;suc=1041F\r
+cp;10448;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER ZHEE;SB=LO;stc=10420;suc=10420\r
+cp;10449;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER ER;SB=LO;stc=10421;suc=10421\r
+cp;1044A;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER EL;SB=LO;stc=10422;suc=10422\r
+cp;1044B;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER EM;SB=LO;stc=10423;suc=10423\r
+cp;1044C;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER EN;SB=LO;stc=10424;suc=10424\r
+cp;1044D;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER ENG;SB=LO;stc=10425;suc=10425\r
+cp;1044E;age=4.0;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER OI;SB=LO;stc=10426;suc=10426\r
+cp;1044F;age=4.0;CWT;CWU;gc=Ll;Lower;na=DESERET SMALL LETTER EW;SB=LO;stc=10427;suc=10427\r
 \r
 block;10450..1047F;age=4.0;Alpha;blk=Shavian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Shaw;WB=LE;XIDC;XIDS\r
 # 10450..1047F Shavian\r
@@ -22059,83 +22059,83 @@ cp;104A8;-Alpha;gc=Nd;-IDS;lb=NU;na=OSMANYA DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-
 cp;104A9;-Alpha;gc=Nd;-IDS;lb=NU;na=OSMANYA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS\r
 unassigned;104AA..104AF\r
 \r
-block;104B0..104FF;age=9.0;Alpha;blk=Osage;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Osge;WB=LE;XIDC;XIDS\r
+block;104B0..104FF;age=9.0;Alpha;blk=Osage;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Osge;WB=LE;XIDC;XIDS\r
 # 104B0..104FF Osage\r
 # Uppercase letters\r
-cp;104B0;cf=104D8;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER A;NFKC_CF=104D8;SB=UP;scf=104D8;slc=104D8;Upper\r
-cp;104B1;cf=104D9;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER AI;NFKC_CF=104D9;SB=UP;scf=104D9;slc=104D9;Upper\r
-cp;104B2;cf=104DA;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER AIN;NFKC_CF=104DA;SB=UP;scf=104DA;slc=104DA;Upper\r
-cp;104B3;cf=104DB;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER AH;NFKC_CF=104DB;SB=UP;scf=104DB;slc=104DB;Upper\r
-cp;104B4;cf=104DC;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER BRA;NFKC_CF=104DC;SB=UP;scf=104DC;slc=104DC;Upper\r
-cp;104B5;cf=104DD;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER CHA;NFKC_CF=104DD;SB=UP;scf=104DD;slc=104DD;Upper\r
-cp;104B6;cf=104DE;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHCHA;NFKC_CF=104DE;SB=UP;scf=104DE;slc=104DE;Upper\r
-cp;104B7;cf=104DF;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER E;NFKC_CF=104DF;SB=UP;scf=104DF;slc=104DF;Upper\r
-cp;104B8;cf=104E0;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EIN;NFKC_CF=104E0;SB=UP;scf=104E0;slc=104E0;Upper\r
-cp;104B9;cf=104E1;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER HA;NFKC_CF=104E1;SB=UP;scf=104E1;slc=104E1;Upper\r
-cp;104BA;cf=104E2;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER HYA;NFKC_CF=104E2;SB=UP;scf=104E2;slc=104E2;Upper\r
-cp;104BB;cf=104E3;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER I;NFKC_CF=104E3;SB=UP;scf=104E3;slc=104E3;Upper\r
-cp;104BC;cf=104E4;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER KA;NFKC_CF=104E4;SB=UP;scf=104E4;slc=104E4;Upper\r
-cp;104BD;cf=104E5;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHKA;NFKC_CF=104E5;SB=UP;scf=104E5;slc=104E5;Upper\r
-cp;104BE;cf=104E6;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER KYA;NFKC_CF=104E6;SB=UP;scf=104E6;slc=104E6;Upper\r
-cp;104BF;cf=104E7;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER LA;NFKC_CF=104E7;SB=UP;scf=104E7;slc=104E7;Upper\r
-cp;104C0;cf=104E8;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER MA;NFKC_CF=104E8;SB=UP;scf=104E8;slc=104E8;Upper\r
-cp;104C1;cf=104E9;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER NA;NFKC_CF=104E9;SB=UP;scf=104E9;slc=104E9;Upper\r
-cp;104C2;cf=104EA;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER O;NFKC_CF=104EA;SB=UP;scf=104EA;slc=104EA;Upper\r
-cp;104C3;cf=104EB;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER OIN;NFKC_CF=104EB;SB=UP;scf=104EB;slc=104EB;Upper\r
-cp;104C4;cf=104EC;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER PA;NFKC_CF=104EC;SB=UP;scf=104EC;slc=104EC;Upper\r
-cp;104C5;cf=104ED;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHPA;NFKC_CF=104ED;SB=UP;scf=104ED;slc=104ED;Upper\r
-cp;104C6;cf=104EE;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER SA;NFKC_CF=104EE;SB=UP;scf=104EE;slc=104EE;Upper\r
-cp;104C7;cf=104EF;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER SHA;NFKC_CF=104EF;SB=UP;scf=104EF;slc=104EF;Upper\r
-cp;104C8;cf=104F0;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER TA;NFKC_CF=104F0;SB=UP;scf=104F0;slc=104F0;Upper\r
-cp;104C9;cf=104F1;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHTA;NFKC_CF=104F1;SB=UP;scf=104F1;slc=104F1;Upper\r
-cp;104CA;cf=104F2;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER TSA;NFKC_CF=104F2;SB=UP;scf=104F2;slc=104F2;Upper\r
-cp;104CB;cf=104F3;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHTSA;NFKC_CF=104F3;SB=UP;scf=104F3;slc=104F3;Upper\r
-cp;104CC;cf=104F4;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER TSHA;NFKC_CF=104F4;SB=UP;scf=104F4;slc=104F4;Upper\r
-cp;104CD;cf=104F5;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER DHA;NFKC_CF=104F5;SB=UP;scf=104F5;slc=104F5;Upper\r
-cp;104CE;cf=104F6;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER U;NFKC_CF=104F6;SB=UP;scf=104F6;slc=104F6;Upper\r
-cp;104CF;cf=104F7;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER WA;NFKC_CF=104F7;SB=UP;scf=104F7;slc=104F7;Upper\r
-cp;104D0;cf=104F8;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER KHA;NFKC_CF=104F8;SB=UP;scf=104F8;slc=104F8;Upper\r
-cp;104D1;cf=104F9;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER GHA;NFKC_CF=104F9;SB=UP;scf=104F9;slc=104F9;Upper\r
-cp;104D2;cf=104FA;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER ZA;NFKC_CF=104FA;SB=UP;scf=104FA;slc=104FA;Upper\r
-cp;104D3;cf=104FB;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER ZHA;NFKC_CF=104FB;SB=UP;scf=104FB;slc=104FB;Upper\r
+cp;104B0;cf=104D8;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER A;NFKC_CF=104D8;scf=104D8;slc=104D8;Upper\r
+cp;104B1;cf=104D9;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER AI;NFKC_CF=104D9;scf=104D9;slc=104D9;Upper\r
+cp;104B2;cf=104DA;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER AIN;NFKC_CF=104DA;scf=104DA;slc=104DA;Upper\r
+cp;104B3;cf=104DB;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER AH;NFKC_CF=104DB;scf=104DB;slc=104DB;Upper\r
+cp;104B4;cf=104DC;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER BRA;NFKC_CF=104DC;scf=104DC;slc=104DC;Upper\r
+cp;104B5;cf=104DD;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER CHA;NFKC_CF=104DD;scf=104DD;slc=104DD;Upper\r
+cp;104B6;cf=104DE;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER EHCHA;NFKC_CF=104DE;scf=104DE;slc=104DE;Upper\r
+cp;104B7;cf=104DF;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER E;NFKC_CF=104DF;scf=104DF;slc=104DF;Upper\r
+cp;104B8;cf=104E0;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER EIN;NFKC_CF=104E0;scf=104E0;slc=104E0;Upper\r
+cp;104B9;cf=104E1;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER HA;NFKC_CF=104E1;scf=104E1;slc=104E1;Upper\r
+cp;104BA;cf=104E2;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER HYA;NFKC_CF=104E2;scf=104E2;slc=104E2;Upper\r
+cp;104BB;cf=104E3;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER I;NFKC_CF=104E3;scf=104E3;slc=104E3;Upper\r
+cp;104BC;cf=104E4;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER KA;NFKC_CF=104E4;scf=104E4;slc=104E4;Upper\r
+cp;104BD;cf=104E5;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER EHKA;NFKC_CF=104E5;scf=104E5;slc=104E5;Upper\r
+cp;104BE;cf=104E6;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER KYA;NFKC_CF=104E6;scf=104E6;slc=104E6;Upper\r
+cp;104BF;cf=104E7;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER LA;NFKC_CF=104E7;scf=104E7;slc=104E7;Upper\r
+cp;104C0;cf=104E8;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER MA;NFKC_CF=104E8;scf=104E8;slc=104E8;Upper\r
+cp;104C1;cf=104E9;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER NA;NFKC_CF=104E9;scf=104E9;slc=104E9;Upper\r
+cp;104C2;cf=104EA;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER O;NFKC_CF=104EA;scf=104EA;slc=104EA;Upper\r
+cp;104C3;cf=104EB;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER OIN;NFKC_CF=104EB;scf=104EB;slc=104EB;Upper\r
+cp;104C4;cf=104EC;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER PA;NFKC_CF=104EC;scf=104EC;slc=104EC;Upper\r
+cp;104C5;cf=104ED;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER EHPA;NFKC_CF=104ED;scf=104ED;slc=104ED;Upper\r
+cp;104C6;cf=104EE;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER SA;NFKC_CF=104EE;scf=104EE;slc=104EE;Upper\r
+cp;104C7;cf=104EF;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER SHA;NFKC_CF=104EF;scf=104EF;slc=104EF;Upper\r
+cp;104C8;cf=104F0;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER TA;NFKC_CF=104F0;scf=104F0;slc=104F0;Upper\r
+cp;104C9;cf=104F1;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER EHTA;NFKC_CF=104F1;scf=104F1;slc=104F1;Upper\r
+cp;104CA;cf=104F2;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER TSA;NFKC_CF=104F2;scf=104F2;slc=104F2;Upper\r
+cp;104CB;cf=104F3;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER EHTSA;NFKC_CF=104F3;scf=104F3;slc=104F3;Upper\r
+cp;104CC;cf=104F4;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER TSHA;NFKC_CF=104F4;scf=104F4;slc=104F4;Upper\r
+cp;104CD;cf=104F5;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER DHA;NFKC_CF=104F5;scf=104F5;slc=104F5;Upper\r
+cp;104CE;cf=104F6;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER U;NFKC_CF=104F6;scf=104F6;slc=104F6;Upper\r
+cp;104CF;cf=104F7;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER WA;NFKC_CF=104F7;scf=104F7;slc=104F7;Upper\r
+cp;104D0;cf=104F8;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER KHA;NFKC_CF=104F8;scf=104F8;slc=104F8;Upper\r
+cp;104D1;cf=104F9;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER GHA;NFKC_CF=104F9;scf=104F9;slc=104F9;Upper\r
+cp;104D2;cf=104FA;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER ZA;NFKC_CF=104FA;scf=104FA;slc=104FA;Upper\r
+cp;104D3;cf=104FB;CWCF;CWKCF;CWL;na=OSAGE CAPITAL LETTER ZHA;NFKC_CF=104FB;scf=104FB;slc=104FB;Upper\r
 unassigned;104D4..104D7\r
 # Lowercase letters\r
-cp;104D8;CWT;CWU;Lower;na=OSAGE SMALL LETTER A;stc=104B0;suc=104B0\r
-cp;104D9;CWT;CWU;Lower;na=OSAGE SMALL LETTER AI;stc=104B1;suc=104B1\r
-cp;104DA;CWT;CWU;Lower;na=OSAGE SMALL LETTER AIN;stc=104B2;suc=104B2\r
-cp;104DB;CWT;CWU;Lower;na=OSAGE SMALL LETTER AH;stc=104B3;suc=104B3\r
-cp;104DC;CWT;CWU;Lower;na=OSAGE SMALL LETTER BRA;stc=104B4;suc=104B4\r
-cp;104DD;CWT;CWU;Lower;na=OSAGE SMALL LETTER CHA;stc=104B5;suc=104B5\r
-cp;104DE;CWT;CWU;Lower;na=OSAGE SMALL LETTER EHCHA;stc=104B6;suc=104B6\r
-cp;104DF;CWT;CWU;Lower;na=OSAGE SMALL LETTER E;stc=104B7;suc=104B7\r
-cp;104E0;CWT;CWU;Lower;na=OSAGE SMALL LETTER EIN;stc=104B8;suc=104B8\r
-cp;104E1;CWT;CWU;Lower;na=OSAGE SMALL LETTER HA;stc=104B9;suc=104B9\r
-cp;104E2;CWT;CWU;Lower;na=OSAGE SMALL LETTER HYA;stc=104BA;suc=104BA\r
-cp;104E3;CWT;CWU;Lower;na=OSAGE SMALL LETTER I;stc=104BB;suc=104BB\r
-cp;104E4;CWT;CWU;Lower;na=OSAGE SMALL LETTER KA;stc=104BC;suc=104BC\r
-cp;104E5;CWT;CWU;Lower;na=OSAGE SMALL LETTER EHKA;stc=104BD;suc=104BD\r
-cp;104E6;CWT;CWU;Lower;na=OSAGE SMALL LETTER KYA;stc=104BE;suc=104BE\r
-cp;104E7;CWT;CWU;Lower;na=OSAGE SMALL LETTER LA;stc=104BF;suc=104BF\r
-cp;104E8;CWT;CWU;Lower;na=OSAGE SMALL LETTER MA;stc=104C0;suc=104C0\r
-cp;104E9;CWT;CWU;Lower;na=OSAGE SMALL LETTER NA;stc=104C1;suc=104C1\r
-cp;104EA;CWT;CWU;Lower;na=OSAGE SMALL LETTER O;stc=104C2;suc=104C2\r
-cp;104EB;CWT;CWU;Lower;na=OSAGE SMALL LETTER OIN;stc=104C3;suc=104C3\r
-cp;104EC;CWT;CWU;Lower;na=OSAGE SMALL LETTER PA;stc=104C4;suc=104C4\r
-cp;104ED;CWT;CWU;Lower;na=OSAGE SMALL LETTER EHPA;stc=104C5;suc=104C5\r
-cp;104EE;CWT;CWU;Lower;na=OSAGE SMALL LETTER SA;stc=104C6;suc=104C6\r
-cp;104EF;CWT;CWU;Lower;na=OSAGE SMALL LETTER SHA;stc=104C7;suc=104C7\r
-cp;104F0;CWT;CWU;Lower;na=OSAGE SMALL LETTER TA;stc=104C8;suc=104C8\r
-cp;104F1;CWT;CWU;Lower;na=OSAGE SMALL LETTER EHTA;stc=104C9;suc=104C9\r
-cp;104F2;CWT;CWU;Lower;na=OSAGE SMALL LETTER TSA;stc=104CA;suc=104CA\r
-cp;104F3;CWT;CWU;Lower;na=OSAGE SMALL LETTER EHTSA;stc=104CB;suc=104CB\r
-cp;104F4;CWT;CWU;Lower;na=OSAGE SMALL LETTER TSHA;stc=104CC;suc=104CC\r
-cp;104F5;CWT;CWU;Lower;na=OSAGE SMALL LETTER DHA;stc=104CD;suc=104CD\r
-cp;104F6;CWT;CWU;Lower;na=OSAGE SMALL LETTER U;stc=104CE;suc=104CE\r
-cp;104F7;CWT;CWU;Lower;na=OSAGE SMALL LETTER WA;stc=104CF;suc=104CF\r
-cp;104F8;CWT;CWU;Lower;na=OSAGE SMALL LETTER KHA;stc=104D0;suc=104D0\r
-cp;104F9;CWT;CWU;Lower;na=OSAGE SMALL LETTER GHA;stc=104D1;suc=104D1\r
-cp;104FA;CWT;CWU;Lower;na=OSAGE SMALL LETTER ZA;stc=104D2;suc=104D2\r
-cp;104FB;CWT;CWU;Lower;na=OSAGE SMALL LETTER ZHA;stc=104D3;suc=104D3\r
+cp;104D8;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER A;SB=LO;stc=104B0;suc=104B0\r
+cp;104D9;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER AI;SB=LO;stc=104B1;suc=104B1\r
+cp;104DA;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER AIN;SB=LO;stc=104B2;suc=104B2\r
+cp;104DB;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER AH;SB=LO;stc=104B3;suc=104B3\r
+cp;104DC;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER BRA;SB=LO;stc=104B4;suc=104B4\r
+cp;104DD;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER CHA;SB=LO;stc=104B5;suc=104B5\r
+cp;104DE;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER EHCHA;SB=LO;stc=104B6;suc=104B6\r
+cp;104DF;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER E;SB=LO;stc=104B7;suc=104B7\r
+cp;104E0;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER EIN;SB=LO;stc=104B8;suc=104B8\r
+cp;104E1;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER HA;SB=LO;stc=104B9;suc=104B9\r
+cp;104E2;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER HYA;SB=LO;stc=104BA;suc=104BA\r
+cp;104E3;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER I;SB=LO;stc=104BB;suc=104BB\r
+cp;104E4;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER KA;SB=LO;stc=104BC;suc=104BC\r
+cp;104E5;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER EHKA;SB=LO;stc=104BD;suc=104BD\r
+cp;104E6;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER KYA;SB=LO;stc=104BE;suc=104BE\r
+cp;104E7;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER LA;SB=LO;stc=104BF;suc=104BF\r
+cp;104E8;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER MA;SB=LO;stc=104C0;suc=104C0\r
+cp;104E9;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER NA;SB=LO;stc=104C1;suc=104C1\r
+cp;104EA;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER O;SB=LO;stc=104C2;suc=104C2\r
+cp;104EB;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER OIN;SB=LO;stc=104C3;suc=104C3\r
+cp;104EC;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER PA;SB=LO;stc=104C4;suc=104C4\r
+cp;104ED;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER EHPA;SB=LO;stc=104C5;suc=104C5\r
+cp;104EE;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER SA;SB=LO;stc=104C6;suc=104C6\r
+cp;104EF;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER SHA;SB=LO;stc=104C7;suc=104C7\r
+cp;104F0;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER TA;SB=LO;stc=104C8;suc=104C8\r
+cp;104F1;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER EHTA;SB=LO;stc=104C9;suc=104C9\r
+cp;104F2;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER TSA;SB=LO;stc=104CA;suc=104CA\r
+cp;104F3;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER EHTSA;SB=LO;stc=104CB;suc=104CB\r
+cp;104F4;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER TSHA;SB=LO;stc=104CC;suc=104CC\r
+cp;104F5;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER DHA;SB=LO;stc=104CD;suc=104CD\r
+cp;104F6;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER U;SB=LO;stc=104CE;suc=104CE\r
+cp;104F7;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER WA;SB=LO;stc=104CF;suc=104CF\r
+cp;104F8;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER KHA;SB=LO;stc=104D0;suc=104D0\r
+cp;104F9;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER GHA;SB=LO;stc=104D1;suc=104D1\r
+cp;104FA;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER ZA;SB=LO;stc=104D2;suc=104D2\r
+cp;104FB;CWT;CWU;gc=Ll;Lower;na=OSAGE SMALL LETTER ZHA;SB=LO;stc=104D3;suc=104D3\r
 unassigned;104FC..104FF\r
 \r
 block;10500..1052F;age=7.0;Alpha;blk=Elbasan;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Elba;WB=LE;XIDC;XIDS\r
@@ -23519,113 +23519,113 @@ unassigned;10C49..10C4F;bc=R
 # No block\r
 unassigned;10C50..10C7F;bc=R\r
 \r
-block;10C80..10CFF;age=8.0;Alpha;bc=R;blk=Old_Hungarian;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Hung;WB=LE;XIDC;XIDS\r
+block;10C80..10CFF;age=8.0;Alpha;bc=R;blk=Old_Hungarian;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Hung;WB=LE;XIDC;XIDS\r
 # 10C80..10CFF Old Hungarian\r
 # Uppercase letters\r
-cp;10C80;cf=10CC0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER A;NFKC_CF=10CC0;SB=UP;scf=10CC0;slc=10CC0;Upper\r
-cp;10C81;cf=10CC1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AA;NFKC_CF=10CC1;SB=UP;scf=10CC1;slc=10CC1;Upper\r
-cp;10C82;cf=10CC2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EB;NFKC_CF=10CC2;SB=UP;scf=10CC2;slc=10CC2;Upper\r
-cp;10C83;cf=10CC3;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AMB;NFKC_CF=10CC3;SB=UP;scf=10CC3;slc=10CC3;Upper\r
-cp;10C84;cf=10CC4;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EC;NFKC_CF=10CC4;SB=UP;scf=10CC4;slc=10CC4;Upper\r
-cp;10C85;cf=10CC5;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENC;NFKC_CF=10CC5;SB=UP;scf=10CC5;slc=10CC5;Upper\r
-cp;10C86;cf=10CC6;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ECS;NFKC_CF=10CC6;SB=UP;scf=10CC6;slc=10CC6;Upper\r
-cp;10C87;cf=10CC7;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ED;NFKC_CF=10CC7;SB=UP;scf=10CC7;slc=10CC7;Upper\r
-cp;10C88;cf=10CC8;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AND;NFKC_CF=10CC8;SB=UP;scf=10CC8;slc=10CC8;Upper\r
-cp;10C89;cf=10CC9;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER E;NFKC_CF=10CC9;SB=UP;scf=10CC9;slc=10CC9;Upper\r
-cp;10C8A;cf=10CCA;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER CLOSE E;NFKC_CF=10CCA;SB=UP;scf=10CCA;slc=10CCA;Upper\r
-cp;10C8B;cf=10CCB;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EE;NFKC_CF=10CCB;SB=UP;scf=10CCB;slc=10CCB;Upper\r
-cp;10C8C;cf=10CCC;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EF;NFKC_CF=10CCC;SB=UP;scf=10CCC;slc=10CCC;Upper\r
-cp;10C8D;cf=10CCD;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EG;NFKC_CF=10CCD;SB=UP;scf=10CCD;slc=10CCD;Upper\r
-cp;10C8E;cf=10CCE;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EGY;NFKC_CF=10CCE;SB=UP;scf=10CCE;slc=10CCE;Upper\r
-cp;10C8F;cf=10CCF;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EH;NFKC_CF=10CCF;SB=UP;scf=10CCF;slc=10CCF;Upper\r
-cp;10C90;cf=10CD0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER I;NFKC_CF=10CD0;SB=UP;scf=10CD0;slc=10CD0;Upper\r
-cp;10C91;cf=10CD1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER II;NFKC_CF=10CD1;SB=UP;scf=10CD1;slc=10CD1;Upper\r
-cp;10C92;cf=10CD2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EJ;NFKC_CF=10CD2;SB=UP;scf=10CD2;slc=10CD2;Upper\r
-cp;10C93;cf=10CD3;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EK;NFKC_CF=10CD3;SB=UP;scf=10CD3;slc=10CD3;Upper\r
-cp;10C94;cf=10CD4;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AK;NFKC_CF=10CD4;SB=UP;scf=10CD4;slc=10CD4;Upper\r
-cp;10C95;cf=10CD5;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER UNK;NFKC_CF=10CD5;SB=UP;scf=10CD5;slc=10CD5;Upper\r
-cp;10C96;cf=10CD6;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EL;NFKC_CF=10CD6;SB=UP;scf=10CD6;slc=10CD6;Upper\r
-cp;10C97;cf=10CD7;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ELY;NFKC_CF=10CD7;SB=UP;scf=10CD7;slc=10CD7;Upper\r
-cp;10C98;cf=10CD8;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EM;NFKC_CF=10CD8;SB=UP;scf=10CD8;slc=10CD8;Upper\r
-cp;10C99;cf=10CD9;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EN;NFKC_CF=10CD9;SB=UP;scf=10CD9;slc=10CD9;Upper\r
-cp;10C9A;cf=10CDA;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENY;NFKC_CF=10CDA;SB=UP;scf=10CDA;slc=10CDA;Upper\r
-cp;10C9B;cf=10CDB;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER O;NFKC_CF=10CDB;SB=UP;scf=10CDB;slc=10CDB;Upper\r
-cp;10C9C;cf=10CDC;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER OO;NFKC_CF=10CDC;SB=UP;scf=10CDC;slc=10CDC;Upper\r
-cp;10C9D;cf=10CDD;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE;NFKC_CF=10CDD;SB=UP;scf=10CDD;slc=10CDD;Upper\r
-cp;10C9E;cf=10CDE;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE;NFKC_CF=10CDE;SB=UP;scf=10CDE;slc=10CDE;Upper\r
-cp;10C9F;cf=10CDF;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER OEE;NFKC_CF=10CDF;SB=UP;scf=10CDF;slc=10CDF;Upper\r
-cp;10CA0;cf=10CE0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EP;NFKC_CF=10CE0;SB=UP;scf=10CE0;slc=10CE0;Upper\r
-cp;10CA1;cf=10CE1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EMP;NFKC_CF=10CE1;SB=UP;scf=10CE1;slc=10CE1;Upper\r
-cp;10CA2;cf=10CE2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ER;NFKC_CF=10CE2;SB=UP;scf=10CE2;slc=10CE2;Upper\r
-cp;10CA3;cf=10CE3;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER SHORT ER;NFKC_CF=10CE3;SB=UP;scf=10CE3;slc=10CE3;Upper\r
-cp;10CA4;cf=10CE4;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ES;NFKC_CF=10CE4;SB=UP;scf=10CE4;slc=10CE4;Upper\r
-cp;10CA5;cf=10CE5;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ESZ;NFKC_CF=10CE5;SB=UP;scf=10CE5;slc=10CE5;Upper\r
-cp;10CA6;cf=10CE6;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ET;NFKC_CF=10CE6;SB=UP;scf=10CE6;slc=10CE6;Upper\r
-cp;10CA7;cf=10CE7;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENT;NFKC_CF=10CE7;SB=UP;scf=10CE7;slc=10CE7;Upper\r
-cp;10CA8;cf=10CE8;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ETY;NFKC_CF=10CE8;SB=UP;scf=10CE8;slc=10CE8;Upper\r
-cp;10CA9;cf=10CE9;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ECH;NFKC_CF=10CE9;SB=UP;scf=10CE9;slc=10CE9;Upper\r
-cp;10CAA;cf=10CEA;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER U;NFKC_CF=10CEA;SB=UP;scf=10CEA;slc=10CEA;Upper\r
-cp;10CAB;cf=10CEB;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER UU;NFKC_CF=10CEB;SB=UP;scf=10CEB;slc=10CEB;Upper\r
-cp;10CAC;cf=10CEC;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE;NFKC_CF=10CEC;SB=UP;scf=10CEC;slc=10CEC;Upper\r
-cp;10CAD;cf=10CED;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE;NFKC_CF=10CED;SB=UP;scf=10CED;slc=10CED;Upper\r
-cp;10CAE;cf=10CEE;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EV;NFKC_CF=10CEE;SB=UP;scf=10CEE;slc=10CEE;Upper\r
-cp;10CAF;cf=10CEF;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EZ;NFKC_CF=10CEF;SB=UP;scf=10CEF;slc=10CEF;Upper\r
-cp;10CB0;cf=10CF0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EZS;NFKC_CF=10CF0;SB=UP;scf=10CF0;slc=10CF0;Upper\r
-cp;10CB1;cf=10CF1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN;NFKC_CF=10CF1;SB=UP;scf=10CF1;slc=10CF1;Upper\r
-cp;10CB2;cf=10CF2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER US;NFKC_CF=10CF2;SB=UP;scf=10CF2;slc=10CF2;Upper\r
+cp;10C80;cf=10CC0;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER A;NFKC_CF=10CC0;scf=10CC0;slc=10CC0;Upper\r
+cp;10C81;cf=10CC1;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER AA;NFKC_CF=10CC1;scf=10CC1;slc=10CC1;Upper\r
+cp;10C82;cf=10CC2;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EB;NFKC_CF=10CC2;scf=10CC2;slc=10CC2;Upper\r
+cp;10C83;cf=10CC3;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER AMB;NFKC_CF=10CC3;scf=10CC3;slc=10CC3;Upper\r
+cp;10C84;cf=10CC4;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EC;NFKC_CF=10CC4;scf=10CC4;slc=10CC4;Upper\r
+cp;10C85;cf=10CC5;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ENC;NFKC_CF=10CC5;scf=10CC5;slc=10CC5;Upper\r
+cp;10C86;cf=10CC6;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ECS;NFKC_CF=10CC6;scf=10CC6;slc=10CC6;Upper\r
+cp;10C87;cf=10CC7;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ED;NFKC_CF=10CC7;scf=10CC7;slc=10CC7;Upper\r
+cp;10C88;cf=10CC8;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER AND;NFKC_CF=10CC8;scf=10CC8;slc=10CC8;Upper\r
+cp;10C89;cf=10CC9;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER E;NFKC_CF=10CC9;scf=10CC9;slc=10CC9;Upper\r
+cp;10C8A;cf=10CCA;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER CLOSE E;NFKC_CF=10CCA;scf=10CCA;slc=10CCA;Upper\r
+cp;10C8B;cf=10CCB;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EE;NFKC_CF=10CCB;scf=10CCB;slc=10CCB;Upper\r
+cp;10C8C;cf=10CCC;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EF;NFKC_CF=10CCC;scf=10CCC;slc=10CCC;Upper\r
+cp;10C8D;cf=10CCD;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EG;NFKC_CF=10CCD;scf=10CCD;slc=10CCD;Upper\r
+cp;10C8E;cf=10CCE;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EGY;NFKC_CF=10CCE;scf=10CCE;slc=10CCE;Upper\r
+cp;10C8F;cf=10CCF;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EH;NFKC_CF=10CCF;scf=10CCF;slc=10CCF;Upper\r
+cp;10C90;cf=10CD0;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER I;NFKC_CF=10CD0;scf=10CD0;slc=10CD0;Upper\r
+cp;10C91;cf=10CD1;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER II;NFKC_CF=10CD1;scf=10CD1;slc=10CD1;Upper\r
+cp;10C92;cf=10CD2;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EJ;NFKC_CF=10CD2;scf=10CD2;slc=10CD2;Upper\r
+cp;10C93;cf=10CD3;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EK;NFKC_CF=10CD3;scf=10CD3;slc=10CD3;Upper\r
+cp;10C94;cf=10CD4;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER AK;NFKC_CF=10CD4;scf=10CD4;slc=10CD4;Upper\r
+cp;10C95;cf=10CD5;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER UNK;NFKC_CF=10CD5;scf=10CD5;slc=10CD5;Upper\r
+cp;10C96;cf=10CD6;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EL;NFKC_CF=10CD6;scf=10CD6;slc=10CD6;Upper\r
+cp;10C97;cf=10CD7;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ELY;NFKC_CF=10CD7;scf=10CD7;slc=10CD7;Upper\r
+cp;10C98;cf=10CD8;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EM;NFKC_CF=10CD8;scf=10CD8;slc=10CD8;Upper\r
+cp;10C99;cf=10CD9;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EN;NFKC_CF=10CD9;scf=10CD9;slc=10CD9;Upper\r
+cp;10C9A;cf=10CDA;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ENY;NFKC_CF=10CDA;scf=10CDA;slc=10CDA;Upper\r
+cp;10C9B;cf=10CDB;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER O;NFKC_CF=10CDB;scf=10CDB;slc=10CDB;Upper\r
+cp;10C9C;cf=10CDC;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER OO;NFKC_CF=10CDC;scf=10CDC;slc=10CDC;Upper\r
+cp;10C9D;cf=10CDD;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE;NFKC_CF=10CDD;scf=10CDD;slc=10CDD;Upper\r
+cp;10C9E;cf=10CDE;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE;NFKC_CF=10CDE;scf=10CDE;slc=10CDE;Upper\r
+cp;10C9F;cf=10CDF;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER OEE;NFKC_CF=10CDF;scf=10CDF;slc=10CDF;Upper\r
+cp;10CA0;cf=10CE0;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EP;NFKC_CF=10CE0;scf=10CE0;slc=10CE0;Upper\r
+cp;10CA1;cf=10CE1;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EMP;NFKC_CF=10CE1;scf=10CE1;slc=10CE1;Upper\r
+cp;10CA2;cf=10CE2;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ER;NFKC_CF=10CE2;scf=10CE2;slc=10CE2;Upper\r
+cp;10CA3;cf=10CE3;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER SHORT ER;NFKC_CF=10CE3;scf=10CE3;slc=10CE3;Upper\r
+cp;10CA4;cf=10CE4;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ES;NFKC_CF=10CE4;scf=10CE4;slc=10CE4;Upper\r
+cp;10CA5;cf=10CE5;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ESZ;NFKC_CF=10CE5;scf=10CE5;slc=10CE5;Upper\r
+cp;10CA6;cf=10CE6;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ET;NFKC_CF=10CE6;scf=10CE6;slc=10CE6;Upper\r
+cp;10CA7;cf=10CE7;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ENT;NFKC_CF=10CE7;scf=10CE7;slc=10CE7;Upper\r
+cp;10CA8;cf=10CE8;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ETY;NFKC_CF=10CE8;scf=10CE8;slc=10CE8;Upper\r
+cp;10CA9;cf=10CE9;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ECH;NFKC_CF=10CE9;scf=10CE9;slc=10CE9;Upper\r
+cp;10CAA;cf=10CEA;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER U;NFKC_CF=10CEA;scf=10CEA;slc=10CEA;Upper\r
+cp;10CAB;cf=10CEB;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER UU;NFKC_CF=10CEB;scf=10CEB;slc=10CEB;Upper\r
+cp;10CAC;cf=10CEC;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE;NFKC_CF=10CEC;scf=10CEC;slc=10CEC;Upper\r
+cp;10CAD;cf=10CED;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE;NFKC_CF=10CED;scf=10CED;slc=10CED;Upper\r
+cp;10CAE;cf=10CEE;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EV;NFKC_CF=10CEE;scf=10CEE;slc=10CEE;Upper\r
+cp;10CAF;cf=10CEF;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EZ;NFKC_CF=10CEF;scf=10CEF;slc=10CEF;Upper\r
+cp;10CB0;cf=10CF0;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER EZS;NFKC_CF=10CF0;scf=10CF0;slc=10CF0;Upper\r
+cp;10CB1;cf=10CF1;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN;NFKC_CF=10CF1;scf=10CF1;slc=10CF1;Upper\r
+cp;10CB2;cf=10CF2;CWCF;CWKCF;CWL;na=OLD HUNGARIAN CAPITAL LETTER US;NFKC_CF=10CF2;scf=10CF2;slc=10CF2;Upper\r
 unassigned;10CB3..10CBF;bc=R\r
 # Lowercase letters\r
-cp;10CC0;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER A;stc=10C80;suc=10C80\r
-cp;10CC1;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER AA;stc=10C81;suc=10C81\r
-cp;10CC2;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EB;stc=10C82;suc=10C82\r
-cp;10CC3;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER AMB;stc=10C83;suc=10C83\r
-cp;10CC4;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EC;stc=10C84;suc=10C84\r
-cp;10CC5;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ENC;stc=10C85;suc=10C85\r
-cp;10CC6;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ECS;stc=10C86;suc=10C86\r
-cp;10CC7;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ED;stc=10C87;suc=10C87\r
-cp;10CC8;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER AND;stc=10C88;suc=10C88\r
-cp;10CC9;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER E;stc=10C89;suc=10C89\r
-cp;10CCA;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER CLOSE E;stc=10C8A;suc=10C8A\r
-cp;10CCB;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EE;stc=10C8B;suc=10C8B\r
-cp;10CCC;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EF;stc=10C8C;suc=10C8C\r
-cp;10CCD;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EG;stc=10C8D;suc=10C8D\r
-cp;10CCE;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EGY;stc=10C8E;suc=10C8E\r
-cp;10CCF;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EH;stc=10C8F;suc=10C8F\r
-cp;10CD0;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER I;stc=10C90;suc=10C90\r
-cp;10CD1;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER II;stc=10C91;suc=10C91\r
-cp;10CD2;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EJ;stc=10C92;suc=10C92\r
-cp;10CD3;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EK;stc=10C93;suc=10C93\r
-cp;10CD4;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER AK;stc=10C94;suc=10C94\r
-cp;10CD5;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER UNK;stc=10C95;suc=10C95\r
-cp;10CD6;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EL;stc=10C96;suc=10C96\r
-cp;10CD7;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ELY;stc=10C97;suc=10C97\r
-cp;10CD8;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EM;stc=10C98;suc=10C98\r
-cp;10CD9;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EN;stc=10C99;suc=10C99\r
-cp;10CDA;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ENY;stc=10C9A;suc=10C9A\r
-cp;10CDB;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER O;stc=10C9B;suc=10C9B\r
-cp;10CDC;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER OO;stc=10C9C;suc=10C9C\r
-cp;10CDD;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER NIKOLSBURG OE;stc=10C9D;suc=10C9D\r
-cp;10CDE;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER RUDIMENTA OE;stc=10C9E;suc=10C9E\r
-cp;10CDF;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER OEE;stc=10C9F;suc=10C9F\r
-cp;10CE0;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EP;stc=10CA0;suc=10CA0\r
-cp;10CE1;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EMP;stc=10CA1;suc=10CA1\r
-cp;10CE2;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ER;stc=10CA2;suc=10CA2\r
-cp;10CE3;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER SHORT ER;stc=10CA3;suc=10CA3\r
-cp;10CE4;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ES;stc=10CA4;suc=10CA4\r
-cp;10CE5;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ESZ;stc=10CA5;suc=10CA5\r
-cp;10CE6;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ET;stc=10CA6;suc=10CA6\r
-cp;10CE7;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ENT;stc=10CA7;suc=10CA7\r
-cp;10CE8;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ETY;stc=10CA8;suc=10CA8\r
-cp;10CE9;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ECH;stc=10CA9;suc=10CA9\r
-cp;10CEA;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER U;stc=10CAA;suc=10CAA\r
-cp;10CEB;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER UU;stc=10CAB;suc=10CAB\r
-cp;10CEC;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER NIKOLSBURG UE;stc=10CAC;suc=10CAC\r
-cp;10CED;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER RUDIMENTA UE;stc=10CAD;suc=10CAD\r
-cp;10CEE;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EV;stc=10CAE;suc=10CAE\r
-cp;10CEF;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EZ;stc=10CAF;suc=10CAF\r
-cp;10CF0;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER EZS;stc=10CB0;suc=10CB0\r
-cp;10CF1;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER ENT-SHAPED SIGN;stc=10CB1;suc=10CB1\r
-cp;10CF2;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER US;stc=10CB2;suc=10CB2\r
+cp;10CC0;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER A;SB=LO;stc=10C80;suc=10C80\r
+cp;10CC1;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER AA;SB=LO;stc=10C81;suc=10C81\r
+cp;10CC2;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EB;SB=LO;stc=10C82;suc=10C82\r
+cp;10CC3;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER AMB;SB=LO;stc=10C83;suc=10C83\r
+cp;10CC4;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EC;SB=LO;stc=10C84;suc=10C84\r
+cp;10CC5;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ENC;SB=LO;stc=10C85;suc=10C85\r
+cp;10CC6;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ECS;SB=LO;stc=10C86;suc=10C86\r
+cp;10CC7;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ED;SB=LO;stc=10C87;suc=10C87\r
+cp;10CC8;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER AND;SB=LO;stc=10C88;suc=10C88\r
+cp;10CC9;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER E;SB=LO;stc=10C89;suc=10C89\r
+cp;10CCA;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER CLOSE E;SB=LO;stc=10C8A;suc=10C8A\r
+cp;10CCB;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EE;SB=LO;stc=10C8B;suc=10C8B\r
+cp;10CCC;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EF;SB=LO;stc=10C8C;suc=10C8C\r
+cp;10CCD;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EG;SB=LO;stc=10C8D;suc=10C8D\r
+cp;10CCE;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EGY;SB=LO;stc=10C8E;suc=10C8E\r
+cp;10CCF;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EH;SB=LO;stc=10C8F;suc=10C8F\r
+cp;10CD0;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER I;SB=LO;stc=10C90;suc=10C90\r
+cp;10CD1;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER II;SB=LO;stc=10C91;suc=10C91\r
+cp;10CD2;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EJ;SB=LO;stc=10C92;suc=10C92\r
+cp;10CD3;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EK;SB=LO;stc=10C93;suc=10C93\r
+cp;10CD4;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER AK;SB=LO;stc=10C94;suc=10C94\r
+cp;10CD5;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER UNK;SB=LO;stc=10C95;suc=10C95\r
+cp;10CD6;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EL;SB=LO;stc=10C96;suc=10C96\r
+cp;10CD7;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ELY;SB=LO;stc=10C97;suc=10C97\r
+cp;10CD8;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EM;SB=LO;stc=10C98;suc=10C98\r
+cp;10CD9;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EN;SB=LO;stc=10C99;suc=10C99\r
+cp;10CDA;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ENY;SB=LO;stc=10C9A;suc=10C9A\r
+cp;10CDB;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER O;SB=LO;stc=10C9B;suc=10C9B\r
+cp;10CDC;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER OO;SB=LO;stc=10C9C;suc=10C9C\r
+cp;10CDD;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER NIKOLSBURG OE;SB=LO;stc=10C9D;suc=10C9D\r
+cp;10CDE;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER RUDIMENTA OE;SB=LO;stc=10C9E;suc=10C9E\r
+cp;10CDF;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER OEE;SB=LO;stc=10C9F;suc=10C9F\r
+cp;10CE0;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EP;SB=LO;stc=10CA0;suc=10CA0\r
+cp;10CE1;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EMP;SB=LO;stc=10CA1;suc=10CA1\r
+cp;10CE2;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ER;SB=LO;stc=10CA2;suc=10CA2\r
+cp;10CE3;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER SHORT ER;SB=LO;stc=10CA3;suc=10CA3\r
+cp;10CE4;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ES;SB=LO;stc=10CA4;suc=10CA4\r
+cp;10CE5;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ESZ;SB=LO;stc=10CA5;suc=10CA5\r
+cp;10CE6;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ET;SB=LO;stc=10CA6;suc=10CA6\r
+cp;10CE7;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ENT;SB=LO;stc=10CA7;suc=10CA7\r
+cp;10CE8;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ETY;SB=LO;stc=10CA8;suc=10CA8\r
+cp;10CE9;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ECH;SB=LO;stc=10CA9;suc=10CA9\r
+cp;10CEA;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER U;SB=LO;stc=10CAA;suc=10CAA\r
+cp;10CEB;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER UU;SB=LO;stc=10CAB;suc=10CAB\r
+cp;10CEC;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER NIKOLSBURG UE;SB=LO;stc=10CAC;suc=10CAC\r
+cp;10CED;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER RUDIMENTA UE;SB=LO;stc=10CAD;suc=10CAD\r
+cp;10CEE;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EV;SB=LO;stc=10CAE;suc=10CAE\r
+cp;10CEF;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EZ;SB=LO;stc=10CAF;suc=10CAF\r
+cp;10CF0;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER EZS;SB=LO;stc=10CB0;suc=10CB0\r
+cp;10CF1;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER ENT-SHAPED SIGN;SB=LO;stc=10CB1;suc=10CB1\r
+cp;10CF2;CWT;CWU;gc=Ll;Lower;na=OLD HUNGARIAN SMALL LETTER US;SB=LO;stc=10CB2;suc=10CB2\r
 unassigned;10CF3..10CF9;bc=R\r
 # Numbers\r
 cp;10CFA;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=OLD HUNGARIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS\r
@@ -25444,76 +25444,76 @@ cp;1183A;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Botto
 cp;1183B;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=DOGRA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS\r
 unassigned;1183C..1184F\r
 \r
-block;118A0..118FF;age=7.0;Alpha;blk=Warang_Citi;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Wara;WB=LE;XIDC;XIDS\r
+block;118A0..118FF;age=7.0;Alpha;blk=Warang_Citi;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Wara;WB=LE;XIDC;XIDS\r
 # 118A0..118FF Warang Citi\r
 # Uppercase vowels\r
-cp;118A0;cf=118C0;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER NGAA;NFKC_CF=118C0;SB=UP;scf=118C0;slc=118C0;Upper\r
-cp;118A1;cf=118C1;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER A;NFKC_CF=118C1;SB=UP;scf=118C1;slc=118C1;Upper\r
-cp;118A2;cf=118C2;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER WI;NFKC_CF=118C2;SB=UP;scf=118C2;slc=118C2;Upper\r
-cp;118A3;cf=118C3;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YU;NFKC_CF=118C3;SB=UP;scf=118C3;slc=118C3;Upper\r
-cp;118A4;cf=118C4;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YA;NFKC_CF=118C4;SB=UP;scf=118C4;slc=118C4;Upper\r
-cp;118A5;cf=118C5;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YO;NFKC_CF=118C5;SB=UP;scf=118C5;slc=118C5;Upper\r
-cp;118A6;cf=118C6;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER II;NFKC_CF=118C6;SB=UP;scf=118C6;slc=118C6;Upper\r
-cp;118A7;cf=118C7;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER UU;NFKC_CF=118C7;SB=UP;scf=118C7;slc=118C7;Upper\r
-cp;118A8;cf=118C8;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER E;NFKC_CF=118C8;SB=UP;scf=118C8;slc=118C8;Upper\r
-cp;118A9;cf=118C9;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER O;NFKC_CF=118C9;SB=UP;scf=118C9;slc=118C9;Upper\r
+cp;118A0;cf=118C0;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER NGAA;NFKC_CF=118C0;scf=118C0;slc=118C0;Upper\r
+cp;118A1;cf=118C1;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER A;NFKC_CF=118C1;scf=118C1;slc=118C1;Upper\r
+cp;118A2;cf=118C2;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER WI;NFKC_CF=118C2;scf=118C2;slc=118C2;Upper\r
+cp;118A3;cf=118C3;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER YU;NFKC_CF=118C3;scf=118C3;slc=118C3;Upper\r
+cp;118A4;cf=118C4;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER YA;NFKC_CF=118C4;scf=118C4;slc=118C4;Upper\r
+cp;118A5;cf=118C5;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER YO;NFKC_CF=118C5;scf=118C5;slc=118C5;Upper\r
+cp;118A6;cf=118C6;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER II;NFKC_CF=118C6;scf=118C6;slc=118C6;Upper\r
+cp;118A7;cf=118C7;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER UU;NFKC_CF=118C7;scf=118C7;slc=118C7;Upper\r
+cp;118A8;cf=118C8;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER E;NFKC_CF=118C8;scf=118C8;slc=118C8;Upper\r
+cp;118A9;cf=118C9;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER O;NFKC_CF=118C9;scf=118C9;slc=118C9;Upper\r
 # Uppercase consonants\r
-cp;118AA;cf=118CA;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ANG;NFKC_CF=118CA;SB=UP;scf=118CA;slc=118CA;Upper\r
-cp;118AB;cf=118CB;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER GA;NFKC_CF=118CB;SB=UP;scf=118CB;slc=118CB;Upper\r
-cp;118AC;cf=118CC;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER KO;NFKC_CF=118CC;SB=UP;scf=118CC;slc=118CC;Upper\r
-cp;118AD;cf=118CD;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ENY;NFKC_CF=118CD;SB=UP;scf=118CD;slc=118CD;Upper\r
-cp;118AE;cf=118CE;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YUJ;NFKC_CF=118CE;SB=UP;scf=118CE;slc=118CE;Upper\r
-cp;118AF;cf=118CF;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER UC;NFKC_CF=118CF;SB=UP;scf=118CF;slc=118CF;Upper\r
-cp;118B0;cf=118D0;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ENN;NFKC_CF=118D0;SB=UP;scf=118D0;slc=118D0;Upper\r
-cp;118B1;cf=118D1;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ODD;NFKC_CF=118D1;SB=UP;scf=118D1;slc=118D1;Upper\r
-cp;118B2;cf=118D2;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER TTE;NFKC_CF=118D2;SB=UP;scf=118D2;slc=118D2;Upper\r
-cp;118B3;cf=118D3;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER NUNG;NFKC_CF=118D3;SB=UP;scf=118D3;slc=118D3;Upper\r
-cp;118B4;cf=118D4;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER DA;NFKC_CF=118D4;SB=UP;scf=118D4;slc=118D4;Upper\r
-cp;118B5;cf=118D5;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER AT;NFKC_CF=118D5;SB=UP;scf=118D5;slc=118D5;Upper\r
-cp;118B6;cf=118D6;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER AM;NFKC_CF=118D6;SB=UP;scf=118D6;slc=118D6;Upper\r
-cp;118B7;cf=118D7;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER BU;NFKC_CF=118D7;SB=UP;scf=118D7;slc=118D7;Upper\r
-cp;118B8;cf=118D8;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER PU;NFKC_CF=118D8;SB=UP;scf=118D8;slc=118D8;Upper\r
-cp;118B9;cf=118D9;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HIYO;NFKC_CF=118D9;SB=UP;scf=118D9;slc=118D9;Upper\r
-cp;118BA;cf=118DA;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HOLO;NFKC_CF=118DA;SB=UP;scf=118DA;slc=118DA;Upper\r
-cp;118BB;cf=118DB;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HORR;NFKC_CF=118DB;SB=UP;scf=118DB;slc=118DB;Upper\r
-cp;118BC;cf=118DC;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HAR;NFKC_CF=118DC;SB=UP;scf=118DC;slc=118DC;Upper\r
-cp;118BD;cf=118DD;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER SSUU;NFKC_CF=118DD;SB=UP;scf=118DD;slc=118DD;Upper\r
-cp;118BE;cf=118DE;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER SII;NFKC_CF=118DE;SB=UP;scf=118DE;slc=118DE;Upper\r
-cp;118BF;cf=118DF;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER VIYO;NFKC_CF=118DF;SB=UP;scf=118DF;slc=118DF;Upper\r
+cp;118AA;cf=118CA;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER ANG;NFKC_CF=118CA;scf=118CA;slc=118CA;Upper\r
+cp;118AB;cf=118CB;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER GA;NFKC_CF=118CB;scf=118CB;slc=118CB;Upper\r
+cp;118AC;cf=118CC;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER KO;NFKC_CF=118CC;scf=118CC;slc=118CC;Upper\r
+cp;118AD;cf=118CD;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER ENY;NFKC_CF=118CD;scf=118CD;slc=118CD;Upper\r
+cp;118AE;cf=118CE;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER YUJ;NFKC_CF=118CE;scf=118CE;slc=118CE;Upper\r
+cp;118AF;cf=118CF;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER UC;NFKC_CF=118CF;scf=118CF;slc=118CF;Upper\r
+cp;118B0;cf=118D0;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER ENN;NFKC_CF=118D0;scf=118D0;slc=118D0;Upper\r
+cp;118B1;cf=118D1;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER ODD;NFKC_CF=118D1;scf=118D1;slc=118D1;Upper\r
+cp;118B2;cf=118D2;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER TTE;NFKC_CF=118D2;scf=118D2;slc=118D2;Upper\r
+cp;118B3;cf=118D3;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER NUNG;NFKC_CF=118D3;scf=118D3;slc=118D3;Upper\r
+cp;118B4;cf=118D4;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER DA;NFKC_CF=118D4;scf=118D4;slc=118D4;Upper\r
+cp;118B5;cf=118D5;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER AT;NFKC_CF=118D5;scf=118D5;slc=118D5;Upper\r
+cp;118B6;cf=118D6;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER AM;NFKC_CF=118D6;scf=118D6;slc=118D6;Upper\r
+cp;118B7;cf=118D7;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER BU;NFKC_CF=118D7;scf=118D7;slc=118D7;Upper\r
+cp;118B8;cf=118D8;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER PU;NFKC_CF=118D8;scf=118D8;slc=118D8;Upper\r
+cp;118B9;cf=118D9;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER HIYO;NFKC_CF=118D9;scf=118D9;slc=118D9;Upper\r
+cp;118BA;cf=118DA;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER HOLO;NFKC_CF=118DA;scf=118DA;slc=118DA;Upper\r
+cp;118BB;cf=118DB;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER HORR;NFKC_CF=118DB;scf=118DB;slc=118DB;Upper\r
+cp;118BC;cf=118DC;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER HAR;NFKC_CF=118DC;scf=118DC;slc=118DC;Upper\r
+cp;118BD;cf=118DD;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER SSUU;NFKC_CF=118DD;scf=118DD;slc=118DD;Upper\r
+cp;118BE;cf=118DE;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER SII;NFKC_CF=118DE;scf=118DE;slc=118DE;Upper\r
+cp;118BF;cf=118DF;CWCF;CWKCF;CWL;na=WARANG CITI CAPITAL LETTER VIYO;NFKC_CF=118DF;scf=118DF;slc=118DF;Upper\r
 # Lowercase vowels\r
-cp;118C0;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER NGAA;stc=118A0;suc=118A0\r
-cp;118C1;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER A;stc=118A1;suc=118A1\r
-cp;118C2;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER WI;stc=118A2;suc=118A2\r
-cp;118C3;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER YU;stc=118A3;suc=118A3\r
-cp;118C4;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER YA;stc=118A4;suc=118A4\r
-cp;118C5;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER YO;stc=118A5;suc=118A5\r
-cp;118C6;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER II;stc=118A6;suc=118A6\r
-cp;118C7;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER UU;stc=118A7;suc=118A7\r
-cp;118C8;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER E;stc=118A8;suc=118A8\r
-cp;118C9;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER O;stc=118A9;suc=118A9\r
+cp;118C0;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER NGAA;SB=LO;stc=118A0;suc=118A0\r
+cp;118C1;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER A;SB=LO;stc=118A1;suc=118A1\r
+cp;118C2;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER WI;SB=LO;stc=118A2;suc=118A2\r
+cp;118C3;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER YU;SB=LO;stc=118A3;suc=118A3\r
+cp;118C4;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER YA;SB=LO;stc=118A4;suc=118A4\r
+cp;118C5;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER YO;SB=LO;stc=118A5;suc=118A5\r
+cp;118C6;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER II;SB=LO;stc=118A6;suc=118A6\r
+cp;118C7;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER UU;SB=LO;stc=118A7;suc=118A7\r
+cp;118C8;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER E;SB=LO;stc=118A8;suc=118A8\r
+cp;118C9;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER O;SB=LO;stc=118A9;suc=118A9\r
 # Lowercase consonants\r
-cp;118CA;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER ANG;stc=118AA;suc=118AA\r
-cp;118CB;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER GA;stc=118AB;suc=118AB\r
-cp;118CC;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER KO;stc=118AC;suc=118AC\r
-cp;118CD;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER ENY;stc=118AD;suc=118AD\r
-cp;118CE;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER YUJ;stc=118AE;suc=118AE\r
-cp;118CF;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER UC;stc=118AF;suc=118AF\r
-cp;118D0;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER ENN;stc=118B0;suc=118B0\r
-cp;118D1;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER ODD;stc=118B1;suc=118B1\r
-cp;118D2;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER TTE;stc=118B2;suc=118B2\r
-cp;118D3;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER NUNG;stc=118B3;suc=118B3\r
-cp;118D4;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER DA;stc=118B4;suc=118B4\r
-cp;118D5;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER AT;stc=118B5;suc=118B5\r
-cp;118D6;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER AM;stc=118B6;suc=118B6\r
-cp;118D7;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER BU;stc=118B7;suc=118B7\r
-cp;118D8;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER PU;stc=118B8;suc=118B8\r
-cp;118D9;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER HIYO;stc=118B9;suc=118B9\r
-cp;118DA;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER HOLO;stc=118BA;suc=118BA\r
-cp;118DB;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER HORR;stc=118BB;suc=118BB\r
-cp;118DC;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER HAR;stc=118BC;suc=118BC\r
-cp;118DD;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER SSUU;stc=118BD;suc=118BD\r
-cp;118DE;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER SII;stc=118BE;suc=118BE\r
-cp;118DF;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER VIYO;stc=118BF;suc=118BF\r
+cp;118CA;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER ANG;SB=LO;stc=118AA;suc=118AA\r
+cp;118CB;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER GA;SB=LO;stc=118AB;suc=118AB\r
+cp;118CC;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER KO;SB=LO;stc=118AC;suc=118AC\r
+cp;118CD;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER ENY;SB=LO;stc=118AD;suc=118AD\r
+cp;118CE;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER YUJ;SB=LO;stc=118AE;suc=118AE\r
+cp;118CF;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER UC;SB=LO;stc=118AF;suc=118AF\r
+cp;118D0;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER ENN;SB=LO;stc=118B0;suc=118B0\r
+cp;118D1;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER ODD;SB=LO;stc=118B1;suc=118B1\r
+cp;118D2;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER TTE;SB=LO;stc=118B2;suc=118B2\r
+cp;118D3;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER NUNG;SB=LO;stc=118B3;suc=118B3\r
+cp;118D4;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER DA;SB=LO;stc=118B4;suc=118B4\r
+cp;118D5;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER AT;SB=LO;stc=118B5;suc=118B5\r
+cp;118D6;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER AM;SB=LO;stc=118B6;suc=118B6\r
+cp;118D7;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER BU;SB=LO;stc=118B7;suc=118B7\r
+cp;118D8;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER PU;SB=LO;stc=118B8;suc=118B8\r
+cp;118D9;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER HIYO;SB=LO;stc=118B9;suc=118B9\r
+cp;118DA;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER HOLO;SB=LO;stc=118BA;suc=118BA\r
+cp;118DB;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER HORR;SB=LO;stc=118BB;suc=118BB\r
+cp;118DC;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER HAR;SB=LO;stc=118BC;suc=118BC\r
+cp;118DD;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER SSUU;SB=LO;stc=118BD;suc=118BD\r
+cp;118DE;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER SII;SB=LO;stc=118BE;suc=118BE\r
+cp;118DF;CWT;CWU;gc=Ll;Lower;na=WARANG CITI SMALL LETTER VIYO;SB=LO;stc=118BF;suc=118BF\r
 # Digits\r
 cp;118E0;-Alpha;-Cased;-CWCM;gc=Nd;-IDS;lb=NU;na=WARANG CITI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS\r
 cp;118E1;-Alpha;-Cased;-CWCM;gc=Nd;-IDS;lb=NU;na=WARANG CITI DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS\r
@@ -30223,74 +30223,74 @@ cp;16B8D;na=PAHAWH HMONG CLAN SIGN TSWB
 cp;16B8E;na=PAHAWH HMONG CLAN SIGN KWM\r
 cp;16B8F;na=PAHAWH HMONG CLAN SIGN VWJ\r
 \r
-block;16E40..16E9F;age=11.0;Alpha;blk=Medefaidrin;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Medf;WB=LE;XIDC;XIDS\r
+block;16E40..16E9F;age=11.0;Alpha;blk=Medefaidrin;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Medf;WB=LE;XIDC;XIDS\r
 # 16E40..16E9F Medefaidrin\r
 # Uppercase letters\r
-cp;16E40;cf=16E60;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER M;NFKC_CF=16E60;SB=UP;scf=16E60;slc=16E60;Upper\r
-cp;16E41;cf=16E61;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER S;NFKC_CF=16E61;SB=UP;scf=16E61;slc=16E61;Upper\r
-cp;16E42;cf=16E62;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER V;NFKC_CF=16E62;SB=UP;scf=16E62;slc=16E62;Upper\r
-cp;16E43;cf=16E63;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER W;NFKC_CF=16E63;SB=UP;scf=16E63;slc=16E63;Upper\r
-cp;16E44;cf=16E64;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER ATIU;NFKC_CF=16E64;SB=UP;scf=16E64;slc=16E64;Upper\r
-cp;16E45;cf=16E65;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER Z;NFKC_CF=16E65;SB=UP;scf=16E65;slc=16E65;Upper\r
-cp;16E46;cf=16E66;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER KP;NFKC_CF=16E66;SB=UP;scf=16E66;slc=16E66;Upper\r
-cp;16E47;cf=16E67;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER P;NFKC_CF=16E67;SB=UP;scf=16E67;slc=16E67;Upper\r
-cp;16E48;cf=16E68;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER T;NFKC_CF=16E68;SB=UP;scf=16E68;slc=16E68;Upper\r
-cp;16E49;cf=16E69;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER G;NFKC_CF=16E69;SB=UP;scf=16E69;slc=16E69;Upper\r
-cp;16E4A;cf=16E6A;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER F;NFKC_CF=16E6A;SB=UP;scf=16E6A;slc=16E6A;Upper\r
-cp;16E4B;cf=16E6B;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER I;NFKC_CF=16E6B;SB=UP;scf=16E6B;slc=16E6B;Upper\r
-cp;16E4C;cf=16E6C;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER K;NFKC_CF=16E6C;SB=UP;scf=16E6C;slc=16E6C;Upper\r
-cp;16E4D;cf=16E6D;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER A;NFKC_CF=16E6D;SB=UP;scf=16E6D;slc=16E6D;Upper\r
-cp;16E4E;cf=16E6E;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER J;NFKC_CF=16E6E;SB=UP;scf=16E6E;slc=16E6E;Upper\r
-cp;16E4F;cf=16E6F;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER E;NFKC_CF=16E6F;SB=UP;scf=16E6F;slc=16E6F;Upper\r
-cp;16E50;cf=16E70;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER B;NFKC_CF=16E70;SB=UP;scf=16E70;slc=16E70;Upper\r
-cp;16E51;cf=16E71;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER C;NFKC_CF=16E71;SB=UP;scf=16E71;slc=16E71;Upper\r
-cp;16E52;cf=16E72;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER U;NFKC_CF=16E72;SB=UP;scf=16E72;slc=16E72;Upper\r
-cp;16E53;cf=16E73;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER YU;NFKC_CF=16E73;SB=UP;scf=16E73;slc=16E73;Upper\r
-cp;16E54;cf=16E74;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER L;NFKC_CF=16E74;SB=UP;scf=16E74;slc=16E74;Upper\r
-cp;16E55;cf=16E75;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER Q;NFKC_CF=16E75;SB=UP;scf=16E75;slc=16E75;Upper\r
-cp;16E56;cf=16E76;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER HP;Name_Alias=correction=MEDEFAIDRIN CAPITAL LETTER H;NFKC_CF=16E76;SB=UP;scf=16E76;slc=16E76;Upper\r
-cp;16E57;cf=16E77;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER NY;Name_Alias=correction=MEDEFAIDRIN CAPITAL LETTER NG;NFKC_CF=16E77;SB=UP;scf=16E77;slc=16E77;Upper\r
-cp;16E58;cf=16E78;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER X;NFKC_CF=16E78;SB=UP;scf=16E78;slc=16E78;Upper\r
-cp;16E59;cf=16E79;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER D;NFKC_CF=16E79;SB=UP;scf=16E79;slc=16E79;Upper\r
-cp;16E5A;cf=16E7A;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER OE;NFKC_CF=16E7A;SB=UP;scf=16E7A;slc=16E7A;Upper\r
-cp;16E5B;cf=16E7B;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER N;NFKC_CF=16E7B;SB=UP;scf=16E7B;slc=16E7B;Upper\r
-cp;16E5C;cf=16E7C;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER R;NFKC_CF=16E7C;SB=UP;scf=16E7C;slc=16E7C;Upper\r
-cp;16E5D;cf=16E7D;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER O;NFKC_CF=16E7D;SB=UP;scf=16E7D;slc=16E7D;Upper\r
-cp;16E5E;cf=16E7E;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER AI;NFKC_CF=16E7E;SB=UP;scf=16E7E;slc=16E7E;Upper\r
-cp;16E5F;cf=16E7F;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER Y;NFKC_CF=16E7F;SB=UP;scf=16E7F;slc=16E7F;Upper\r
+cp;16E40;cf=16E60;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER M;NFKC_CF=16E60;scf=16E60;slc=16E60;Upper\r
+cp;16E41;cf=16E61;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER S;NFKC_CF=16E61;scf=16E61;slc=16E61;Upper\r
+cp;16E42;cf=16E62;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER V;NFKC_CF=16E62;scf=16E62;slc=16E62;Upper\r
+cp;16E43;cf=16E63;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER W;NFKC_CF=16E63;scf=16E63;slc=16E63;Upper\r
+cp;16E44;cf=16E64;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER ATIU;NFKC_CF=16E64;scf=16E64;slc=16E64;Upper\r
+cp;16E45;cf=16E65;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER Z;NFKC_CF=16E65;scf=16E65;slc=16E65;Upper\r
+cp;16E46;cf=16E66;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER KP;NFKC_CF=16E66;scf=16E66;slc=16E66;Upper\r
+cp;16E47;cf=16E67;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER P;NFKC_CF=16E67;scf=16E67;slc=16E67;Upper\r
+cp;16E48;cf=16E68;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER T;NFKC_CF=16E68;scf=16E68;slc=16E68;Upper\r
+cp;16E49;cf=16E69;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER G;NFKC_CF=16E69;scf=16E69;slc=16E69;Upper\r
+cp;16E4A;cf=16E6A;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER F;NFKC_CF=16E6A;scf=16E6A;slc=16E6A;Upper\r
+cp;16E4B;cf=16E6B;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER I;NFKC_CF=16E6B;scf=16E6B;slc=16E6B;Upper\r
+cp;16E4C;cf=16E6C;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER K;NFKC_CF=16E6C;scf=16E6C;slc=16E6C;Upper\r
+cp;16E4D;cf=16E6D;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER A;NFKC_CF=16E6D;scf=16E6D;slc=16E6D;Upper\r
+cp;16E4E;cf=16E6E;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER J;NFKC_CF=16E6E;scf=16E6E;slc=16E6E;Upper\r
+cp;16E4F;cf=16E6F;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER E;NFKC_CF=16E6F;scf=16E6F;slc=16E6F;Upper\r
+cp;16E50;cf=16E70;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER B;NFKC_CF=16E70;scf=16E70;slc=16E70;Upper\r
+cp;16E51;cf=16E71;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER C;NFKC_CF=16E71;scf=16E71;slc=16E71;Upper\r
+cp;16E52;cf=16E72;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER U;NFKC_CF=16E72;scf=16E72;slc=16E72;Upper\r
+cp;16E53;cf=16E73;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER YU;NFKC_CF=16E73;scf=16E73;slc=16E73;Upper\r
+cp;16E54;cf=16E74;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER L;NFKC_CF=16E74;scf=16E74;slc=16E74;Upper\r
+cp;16E55;cf=16E75;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER Q;NFKC_CF=16E75;scf=16E75;slc=16E75;Upper\r
+cp;16E56;cf=16E76;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER HP;Name_Alias=correction=MEDEFAIDRIN CAPITAL LETTER H;NFKC_CF=16E76;scf=16E76;slc=16E76;Upper\r
+cp;16E57;cf=16E77;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER NY;Name_Alias=correction=MEDEFAIDRIN CAPITAL LETTER NG;NFKC_CF=16E77;scf=16E77;slc=16E77;Upper\r
+cp;16E58;cf=16E78;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER X;NFKC_CF=16E78;scf=16E78;slc=16E78;Upper\r
+cp;16E59;cf=16E79;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER D;NFKC_CF=16E79;scf=16E79;slc=16E79;Upper\r
+cp;16E5A;cf=16E7A;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER OE;NFKC_CF=16E7A;scf=16E7A;slc=16E7A;Upper\r
+cp;16E5B;cf=16E7B;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER N;NFKC_CF=16E7B;scf=16E7B;slc=16E7B;Upper\r
+cp;16E5C;cf=16E7C;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER R;NFKC_CF=16E7C;scf=16E7C;slc=16E7C;Upper\r
+cp;16E5D;cf=16E7D;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER O;NFKC_CF=16E7D;scf=16E7D;slc=16E7D;Upper\r
+cp;16E5E;cf=16E7E;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER AI;NFKC_CF=16E7E;scf=16E7E;slc=16E7E;Upper\r
+cp;16E5F;cf=16E7F;CWCF;CWKCF;CWL;na=MEDEFAIDRIN CAPITAL LETTER Y;NFKC_CF=16E7F;scf=16E7F;slc=16E7F;Upper\r
 # Lowercase letters\r
-cp;16E60;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER M;stc=16E40;suc=16E40\r
-cp;16E61;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER S;stc=16E41;suc=16E41\r
-cp;16E62;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER V;stc=16E42;suc=16E42\r
-cp;16E63;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER W;stc=16E43;suc=16E43\r
-cp;16E64;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER ATIU;stc=16E44;suc=16E44\r
-cp;16E65;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER Z;stc=16E45;suc=16E45\r
-cp;16E66;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER KP;stc=16E46;suc=16E46\r
-cp;16E67;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER P;stc=16E47;suc=16E47\r
-cp;16E68;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER T;stc=16E48;suc=16E48\r
-cp;16E69;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER G;stc=16E49;suc=16E49\r
-cp;16E6A;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER F;stc=16E4A;suc=16E4A\r
-cp;16E6B;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER I;stc=16E4B;suc=16E4B\r
-cp;16E6C;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER K;stc=16E4C;suc=16E4C\r
-cp;16E6D;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER A;stc=16E4D;suc=16E4D\r
-cp;16E6E;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER J;stc=16E4E;suc=16E4E\r
-cp;16E6F;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER E;stc=16E4F;suc=16E4F\r
-cp;16E70;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER B;stc=16E50;suc=16E50\r
-cp;16E71;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER C;stc=16E51;suc=16E51\r
-cp;16E72;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER U;stc=16E52;suc=16E52\r
-cp;16E73;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER YU;stc=16E53;suc=16E53\r
-cp;16E74;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER L;stc=16E54;suc=16E54\r
-cp;16E75;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER Q;stc=16E55;suc=16E55\r
-cp;16E76;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER HP;Name_Alias=correction=MEDEFAIDRIN SMALL LETTER H;stc=16E56;suc=16E56\r
-cp;16E77;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER NY;Name_Alias=correction=MEDEFAIDRIN SMALL LETTER NG;stc=16E57;suc=16E57\r
-cp;16E78;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER X;stc=16E58;suc=16E58\r
-cp;16E79;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER D;stc=16E59;suc=16E59\r
-cp;16E7A;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER OE;stc=16E5A;suc=16E5A\r
-cp;16E7B;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER N;stc=16E5B;suc=16E5B\r
-cp;16E7C;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER R;stc=16E5C;suc=16E5C\r
-cp;16E7D;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER O;stc=16E5D;suc=16E5D\r
-cp;16E7E;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER AI;stc=16E5E;suc=16E5E\r
-cp;16E7F;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER Y;stc=16E5F;suc=16E5F\r
+cp;16E60;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER M;SB=LO;stc=16E40;suc=16E40\r
+cp;16E61;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER S;SB=LO;stc=16E41;suc=16E41\r
+cp;16E62;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER V;SB=LO;stc=16E42;suc=16E42\r
+cp;16E63;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER W;SB=LO;stc=16E43;suc=16E43\r
+cp;16E64;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER ATIU;SB=LO;stc=16E44;suc=16E44\r
+cp;16E65;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER Z;SB=LO;stc=16E45;suc=16E45\r
+cp;16E66;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER KP;SB=LO;stc=16E46;suc=16E46\r
+cp;16E67;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER P;SB=LO;stc=16E47;suc=16E47\r
+cp;16E68;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER T;SB=LO;stc=16E48;suc=16E48\r
+cp;16E69;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER G;SB=LO;stc=16E49;suc=16E49\r
+cp;16E6A;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER F;SB=LO;stc=16E4A;suc=16E4A\r
+cp;16E6B;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER I;SB=LO;stc=16E4B;suc=16E4B\r
+cp;16E6C;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER K;SB=LO;stc=16E4C;suc=16E4C\r
+cp;16E6D;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER A;SB=LO;stc=16E4D;suc=16E4D\r
+cp;16E6E;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER J;SB=LO;stc=16E4E;suc=16E4E\r
+cp;16E6F;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER E;SB=LO;stc=16E4F;suc=16E4F\r
+cp;16E70;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER B;SB=LO;stc=16E50;suc=16E50\r
+cp;16E71;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER C;SB=LO;stc=16E51;suc=16E51\r
+cp;16E72;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER U;SB=LO;stc=16E52;suc=16E52\r
+cp;16E73;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER YU;SB=LO;stc=16E53;suc=16E53\r
+cp;16E74;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER L;SB=LO;stc=16E54;suc=16E54\r
+cp;16E75;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER Q;SB=LO;stc=16E55;suc=16E55\r
+cp;16E76;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER HP;Name_Alias=correction=MEDEFAIDRIN SMALL LETTER H;SB=LO;stc=16E56;suc=16E56\r
+cp;16E77;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER NY;Name_Alias=correction=MEDEFAIDRIN SMALL LETTER NG;SB=LO;stc=16E57;suc=16E57\r
+cp;16E78;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER X;SB=LO;stc=16E58;suc=16E58\r
+cp;16E79;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER D;SB=LO;stc=16E59;suc=16E59\r
+cp;16E7A;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER OE;SB=LO;stc=16E5A;suc=16E5A\r
+cp;16E7B;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER N;SB=LO;stc=16E5B;suc=16E5B\r
+cp;16E7C;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER R;SB=LO;stc=16E5C;suc=16E5C\r
+cp;16E7D;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER O;SB=LO;stc=16E5D;suc=16E5D\r
+cp;16E7E;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER AI;SB=LO;stc=16E5E;suc=16E5E\r
+cp;16E7F;CWT;CWU;gc=Ll;Lower;na=MEDEFAIDRIN SMALL LETTER Y;SB=LO;stc=16E5F;suc=16E5F\r
 # Digits\r
 cp;16E80;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT ZERO;nt=Nu;nv=0;SB=XX;WB=XX;-XIDC;-XIDS\r
 cp;16E81;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=MEDEFAIDRIN DIGIT ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS\r
@@ -30485,21 +30485,21 @@ cp;16F9D;CI;Dia;gc=Lm;na=MIAO LETTER REFORMED TONE-5;WB=LE
 cp;16F9E;CI;Dia;gc=Lm;na=MIAO LETTER REFORMED TONE-6;WB=LE\r
 cp;16F9F;CI;Dia;gc=Lm;na=MIAO LETTER REFORMED TONE-8;WB=LE\r
 \r
-block;16FE0..16FFF;age=13.0;Alpha;blk=Ideographic_Symbols;ea=W;gc=Lm;Gr_Base;IDC;lb=NS;SB=LE;sc=Hani;vo=U;WB=Extend;XIDC\r
+block;16FE0..16FFF;age=13.0;Alpha;blk=Ideographic_Symbols;ea=W;gc=Lm;Gr_Base;IDC;lb=NS;SB=LE;sc=Zyyy;vo=U;WB=Extend;XIDC\r
 # 16FE0..16FFF Ideographic Symbols and Punctuation\r
 # Tangut mark\r
 cp;16FE0;age=9.0;CI;Ext;IDS;na=TANGUT ITERATION MARK;sc=Tang;WB=LE;XIDS\r
 # Nushu mark\r
 cp;16FE1;age=10.0;CI;Ext;IDS;na=NUSHU ITERATION MARK;sc=Nshu;WB=LE;XIDS\r
 # Marks used in ancient Chinese texts\r
-cp;16FE2;age=12.0;-Alpha;bc=ON;gc=Po;-IDC;na=OLD CHINESE HOOK MARK;SB=XX;sc=Zyyy;WB=XX;-XIDC\r
-cp;16FE3;age=12.0;CI;Ext;IDS;na=OLD CHINESE ITERATION MARK;sc=Zyyy;WB=LE;XIDS\r
+cp;16FE2;age=12.0;-Alpha;bc=ON;gc=Po;-IDC;na=OLD CHINESE HOOK MARK;SB=XX;WB=XX;-XIDC\r
+cp;16FE3;age=12.0;CI;Ext;IDS;na=OLD CHINESE ITERATION MARK;WB=LE;XIDS\r
 # Small Khitan format character\r
 cp;16FE4;-Alpha;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Ideo;jt=T;lb=GL;na=KHITAN SMALL SCRIPT FILLER;SB=EX;sc=Kits\r
 unassigned;16FE5..16FEF;vo=U\r
 # Combining diacritics for CJK ideographs\r
-cp;16FF0;ccc=6;Dia;gc=Mc;GCB=SM;lb=CM;na=VIETNAMESE ALTERNATE READING MARK CA;SB=EX\r
-cp;16FF1;ccc=6;Dia;gc=Mc;GCB=SM;lb=CM;na=VIETNAMESE ALTERNATE READING MARK NHAY;SB=EX\r
+cp;16FF0;ccc=6;Dia;gc=Mc;GCB=SM;lb=CM;na=VIETNAMESE ALTERNATE READING MARK CA;SB=EX;sc=Hani\r
+cp;16FF1;ccc=6;Dia;gc=Mc;GCB=SM;lb=CM;na=VIETNAMESE ALTERNATE READING MARK NHAY;SB=EX;sc=Hani\r
 unassigned;16FF2..16FFF;vo=U\r
 \r
 block;17000..187FF;Alpha;blk=Tangut;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Tang;vo=U;XIDC;XIDS\r
@@ -35667,80 +35667,80 @@ unassigned;1E8D7..1E8DF;bc=R
 # No block\r
 unassigned;1E8E0..1E8FF;bc=R\r
 \r
-block;1E900..1E95F;age=9.0;Alpha;bc=R;blk=Adlam;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LO;sc=Adlm;WB=LE;XIDC;XIDS\r
+block;1E900..1E95F;age=9.0;Alpha;bc=R;blk=Adlam;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=UP;sc=Adlm;WB=LE;XIDC;XIDS\r
 # 1E900..1E95F Adlam\r
 # Capital letters\r
-cp;1E900;cf=1E922;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER ALIF;NFKC_CF=1E922;SB=UP;scf=1E922;slc=1E922;Upper\r
-cp;1E901;cf=1E923;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER DAALI;NFKC_CF=1E923;SB=UP;scf=1E923;slc=1E923;Upper\r
-cp;1E902;cf=1E924;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER LAAM;NFKC_CF=1E924;SB=UP;scf=1E924;slc=1E924;Upper\r
-cp;1E903;cf=1E925;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER MIIM;NFKC_CF=1E925;SB=UP;scf=1E925;slc=1E925;Upper\r
-cp;1E904;cf=1E926;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER BA;NFKC_CF=1E926;SB=UP;scf=1E926;slc=1E926;Upper\r
-cp;1E905;cf=1E927;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER SINNYIIYHE;NFKC_CF=1E927;SB=UP;scf=1E927;slc=1E927;Upper\r
-cp;1E906;cf=1E928;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER PE;NFKC_CF=1E928;SB=UP;scf=1E928;slc=1E928;Upper\r
-cp;1E907;cf=1E929;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER BHE;NFKC_CF=1E929;SB=UP;scf=1E929;slc=1E929;Upper\r
-cp;1E908;cf=1E92A;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER RA;NFKC_CF=1E92A;SB=UP;scf=1E92A;slc=1E92A;Upper\r
-cp;1E909;cf=1E92B;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER E;NFKC_CF=1E92B;SB=UP;scf=1E92B;slc=1E92B;Upper\r
-cp;1E90A;cf=1E92C;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER FA;NFKC_CF=1E92C;SB=UP;scf=1E92C;slc=1E92C;Upper\r
-cp;1E90B;cf=1E92D;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER I;NFKC_CF=1E92D;SB=UP;scf=1E92D;slc=1E92D;Upper\r
-cp;1E90C;cf=1E92E;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER O;NFKC_CF=1E92E;SB=UP;scf=1E92E;slc=1E92E;Upper\r
-cp;1E90D;cf=1E92F;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER DHA;NFKC_CF=1E92F;SB=UP;scf=1E92F;slc=1E92F;Upper\r
-cp;1E90E;cf=1E930;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER YHE;NFKC_CF=1E930;SB=UP;scf=1E930;slc=1E930;Upper\r
-cp;1E90F;cf=1E931;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER WAW;NFKC_CF=1E931;SB=UP;scf=1E931;slc=1E931;Upper\r
-cp;1E910;cf=1E932;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER NUN;NFKC_CF=1E932;SB=UP;scf=1E932;slc=1E932;Upper\r
-cp;1E911;cf=1E933;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER KAF;NFKC_CF=1E933;SB=UP;scf=1E933;slc=1E933;Upper\r
-cp;1E912;cf=1E934;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER YA;NFKC_CF=1E934;SB=UP;scf=1E934;slc=1E934;Upper\r
-cp;1E913;cf=1E935;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER U;NFKC_CF=1E935;SB=UP;scf=1E935;slc=1E935;Upper\r
-cp;1E914;cf=1E936;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER JIIM;NFKC_CF=1E936;SB=UP;scf=1E936;slc=1E936;Upper\r
-cp;1E915;cf=1E937;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER CHI;NFKC_CF=1E937;SB=UP;scf=1E937;slc=1E937;Upper\r
-cp;1E916;cf=1E938;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER HA;NFKC_CF=1E938;SB=UP;scf=1E938;slc=1E938;Upper\r
-cp;1E917;cf=1E939;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER QAAF;NFKC_CF=1E939;SB=UP;scf=1E939;slc=1E939;Upper\r
-cp;1E918;cf=1E93A;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER GA;NFKC_CF=1E93A;SB=UP;scf=1E93A;slc=1E93A;Upper\r
-cp;1E919;cf=1E93B;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER NYA;NFKC_CF=1E93B;SB=UP;scf=1E93B;slc=1E93B;Upper\r
-cp;1E91A;cf=1E93C;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER TU;NFKC_CF=1E93C;SB=UP;scf=1E93C;slc=1E93C;Upper\r
-cp;1E91B;cf=1E93D;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER NHA;NFKC_CF=1E93D;SB=UP;scf=1E93D;slc=1E93D;Upper\r
+cp;1E900;cf=1E922;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER ALIF;NFKC_CF=1E922;scf=1E922;slc=1E922;Upper\r
+cp;1E901;cf=1E923;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER DAALI;NFKC_CF=1E923;scf=1E923;slc=1E923;Upper\r
+cp;1E902;cf=1E924;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER LAAM;NFKC_CF=1E924;scf=1E924;slc=1E924;Upper\r
+cp;1E903;cf=1E925;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER MIIM;NFKC_CF=1E925;scf=1E925;slc=1E925;Upper\r
+cp;1E904;cf=1E926;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER BA;NFKC_CF=1E926;scf=1E926;slc=1E926;Upper\r
+cp;1E905;cf=1E927;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER SINNYIIYHE;NFKC_CF=1E927;scf=1E927;slc=1E927;Upper\r
+cp;1E906;cf=1E928;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER PE;NFKC_CF=1E928;scf=1E928;slc=1E928;Upper\r
+cp;1E907;cf=1E929;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER BHE;NFKC_CF=1E929;scf=1E929;slc=1E929;Upper\r
+cp;1E908;cf=1E92A;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER RA;NFKC_CF=1E92A;scf=1E92A;slc=1E92A;Upper\r
+cp;1E909;cf=1E92B;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER E;NFKC_CF=1E92B;scf=1E92B;slc=1E92B;Upper\r
+cp;1E90A;cf=1E92C;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER FA;NFKC_CF=1E92C;scf=1E92C;slc=1E92C;Upper\r
+cp;1E90B;cf=1E92D;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER I;NFKC_CF=1E92D;scf=1E92D;slc=1E92D;Upper\r
+cp;1E90C;cf=1E92E;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER O;NFKC_CF=1E92E;scf=1E92E;slc=1E92E;Upper\r
+cp;1E90D;cf=1E92F;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER DHA;NFKC_CF=1E92F;scf=1E92F;slc=1E92F;Upper\r
+cp;1E90E;cf=1E930;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER YHE;NFKC_CF=1E930;scf=1E930;slc=1E930;Upper\r
+cp;1E90F;cf=1E931;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER WAW;NFKC_CF=1E931;scf=1E931;slc=1E931;Upper\r
+cp;1E910;cf=1E932;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER NUN;NFKC_CF=1E932;scf=1E932;slc=1E932;Upper\r
+cp;1E911;cf=1E933;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER KAF;NFKC_CF=1E933;scf=1E933;slc=1E933;Upper\r
+cp;1E912;cf=1E934;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER YA;NFKC_CF=1E934;scf=1E934;slc=1E934;Upper\r
+cp;1E913;cf=1E935;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER U;NFKC_CF=1E935;scf=1E935;slc=1E935;Upper\r
+cp;1E914;cf=1E936;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER JIIM;NFKC_CF=1E936;scf=1E936;slc=1E936;Upper\r
+cp;1E915;cf=1E937;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER CHI;NFKC_CF=1E937;scf=1E937;slc=1E937;Upper\r
+cp;1E916;cf=1E938;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER HA;NFKC_CF=1E938;scf=1E938;slc=1E938;Upper\r
+cp;1E917;cf=1E939;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER QAAF;NFKC_CF=1E939;scf=1E939;slc=1E939;Upper\r
+cp;1E918;cf=1E93A;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER GA;NFKC_CF=1E93A;scf=1E93A;slc=1E93A;Upper\r
+cp;1E919;cf=1E93B;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER NYA;NFKC_CF=1E93B;scf=1E93B;slc=1E93B;Upper\r
+cp;1E91A;cf=1E93C;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER TU;NFKC_CF=1E93C;scf=1E93C;slc=1E93C;Upper\r
+cp;1E91B;cf=1E93D;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER NHA;NFKC_CF=1E93D;scf=1E93D;slc=1E93D;Upper\r
 # Supplementary capital letters\r
-cp;1E91C;cf=1E93E;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER VA;NFKC_CF=1E93E;SB=UP;scf=1E93E;slc=1E93E;Upper\r
-cp;1E91D;cf=1E93F;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER KHA;NFKC_CF=1E93F;SB=UP;scf=1E93F;slc=1E93F;Upper\r
-cp;1E91E;cf=1E940;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER GBE;NFKC_CF=1E940;SB=UP;scf=1E940;slc=1E940;Upper\r
-cp;1E91F;cf=1E941;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER ZAL;NFKC_CF=1E941;SB=UP;scf=1E941;slc=1E941;Upper\r
-cp;1E920;cf=1E942;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER KPO;NFKC_CF=1E942;SB=UP;scf=1E942;slc=1E942;Upper\r
-cp;1E921;cf=1E943;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER SHA;NFKC_CF=1E943;SB=UP;scf=1E943;slc=1E943;Upper\r
+cp;1E91C;cf=1E93E;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER VA;NFKC_CF=1E93E;scf=1E93E;slc=1E93E;Upper\r
+cp;1E91D;cf=1E93F;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER KHA;NFKC_CF=1E93F;scf=1E93F;slc=1E93F;Upper\r
+cp;1E91E;cf=1E940;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER GBE;NFKC_CF=1E940;scf=1E940;slc=1E940;Upper\r
+cp;1E91F;cf=1E941;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER ZAL;NFKC_CF=1E941;scf=1E941;slc=1E941;Upper\r
+cp;1E920;cf=1E942;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER KPO;NFKC_CF=1E942;scf=1E942;slc=1E942;Upper\r
+cp;1E921;cf=1E943;CWCF;CWKCF;CWL;na=ADLAM CAPITAL LETTER SHA;NFKC_CF=1E943;scf=1E943;slc=1E943;Upper\r
 # Small letters\r
-cp;1E922;CWT;CWU;Lower;na=ADLAM SMALL LETTER ALIF;stc=1E900;suc=1E900\r
-cp;1E923;CWT;CWU;Lower;na=ADLAM SMALL LETTER DAALI;stc=1E901;suc=1E901\r
-cp;1E924;CWT;CWU;Lower;na=ADLAM SMALL LETTER LAAM;stc=1E902;suc=1E902\r
-cp;1E925;CWT;CWU;Lower;na=ADLAM SMALL LETTER MIIM;stc=1E903;suc=1E903\r
-cp;1E926;CWT;CWU;Lower;na=ADLAM SMALL LETTER BA;stc=1E904;suc=1E904\r
-cp;1E927;CWT;CWU;Lower;na=ADLAM SMALL LETTER SINNYIIYHE;stc=1E905;suc=1E905\r
-cp;1E928;CWT;CWU;Lower;na=ADLAM SMALL LETTER PE;stc=1E906;suc=1E906\r
-cp;1E929;CWT;CWU;Lower;na=ADLAM SMALL LETTER BHE;stc=1E907;suc=1E907\r
-cp;1E92A;CWT;CWU;Lower;na=ADLAM SMALL LETTER RA;stc=1E908;suc=1E908\r
-cp;1E92B;CWT;CWU;Lower;na=ADLAM SMALL LETTER E;stc=1E909;suc=1E909\r
-cp;1E92C;CWT;CWU;Lower;na=ADLAM SMALL LETTER FA;stc=1E90A;suc=1E90A\r
-cp;1E92D;CWT;CWU;Lower;na=ADLAM SMALL LETTER I;stc=1E90B;suc=1E90B\r
-cp;1E92E;CWT;CWU;Lower;na=ADLAM SMALL LETTER O;stc=1E90C;suc=1E90C\r
-cp;1E92F;CWT;CWU;Lower;na=ADLAM SMALL LETTER DHA;stc=1E90D;suc=1E90D\r
-cp;1E930;CWT;CWU;Lower;na=ADLAM SMALL LETTER YHE;stc=1E90E;suc=1E90E\r
-cp;1E931;CWT;CWU;Lower;na=ADLAM SMALL LETTER WAW;stc=1E90F;suc=1E90F\r
-cp;1E932;CWT;CWU;Lower;na=ADLAM SMALL LETTER NUN;stc=1E910;suc=1E910\r
-cp;1E933;CWT;CWU;Lower;na=ADLAM SMALL LETTER KAF;stc=1E911;suc=1E911\r
-cp;1E934;CWT;CWU;Lower;na=ADLAM SMALL LETTER YA;stc=1E912;suc=1E912\r
-cp;1E935;CWT;CWU;Lower;na=ADLAM SMALL LETTER U;stc=1E913;suc=1E913\r
-cp;1E936;CWT;CWU;Lower;na=ADLAM SMALL LETTER JIIM;stc=1E914;suc=1E914\r
-cp;1E937;CWT;CWU;Lower;na=ADLAM SMALL LETTER CHI;stc=1E915;suc=1E915\r
-cp;1E938;CWT;CWU;Lower;na=ADLAM SMALL LETTER HA;stc=1E916;suc=1E916\r
-cp;1E939;CWT;CWU;Lower;na=ADLAM SMALL LETTER QAAF;stc=1E917;suc=1E917\r
-cp;1E93A;CWT;CWU;Lower;na=ADLAM SMALL LETTER GA;stc=1E918;suc=1E918\r
-cp;1E93B;CWT;CWU;Lower;na=ADLAM SMALL LETTER NYA;stc=1E919;suc=1E919\r
-cp;1E93C;CWT;CWU;Lower;na=ADLAM SMALL LETTER TU;stc=1E91A;suc=1E91A\r
-cp;1E93D;CWT;CWU;Lower;na=ADLAM SMALL LETTER NHA;stc=1E91B;suc=1E91B\r
+cp;1E922;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER ALIF;SB=LO;stc=1E900;suc=1E900\r
+cp;1E923;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER DAALI;SB=LO;stc=1E901;suc=1E901\r
+cp;1E924;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER LAAM;SB=LO;stc=1E902;suc=1E902\r
+cp;1E925;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER MIIM;SB=LO;stc=1E903;suc=1E903\r
+cp;1E926;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER BA;SB=LO;stc=1E904;suc=1E904\r
+cp;1E927;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER SINNYIIYHE;SB=LO;stc=1E905;suc=1E905\r
+cp;1E928;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER PE;SB=LO;stc=1E906;suc=1E906\r
+cp;1E929;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER BHE;SB=LO;stc=1E907;suc=1E907\r
+cp;1E92A;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER RA;SB=LO;stc=1E908;suc=1E908\r
+cp;1E92B;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER E;SB=LO;stc=1E909;suc=1E909\r
+cp;1E92C;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER FA;SB=LO;stc=1E90A;suc=1E90A\r
+cp;1E92D;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER I;SB=LO;stc=1E90B;suc=1E90B\r
+cp;1E92E;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER O;SB=LO;stc=1E90C;suc=1E90C\r
+cp;1E92F;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER DHA;SB=LO;stc=1E90D;suc=1E90D\r
+cp;1E930;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER YHE;SB=LO;stc=1E90E;suc=1E90E\r
+cp;1E931;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER WAW;SB=LO;stc=1E90F;suc=1E90F\r
+cp;1E932;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER NUN;SB=LO;stc=1E910;suc=1E910\r
+cp;1E933;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER KAF;SB=LO;stc=1E911;suc=1E911\r
+cp;1E934;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER YA;SB=LO;stc=1E912;suc=1E912\r
+cp;1E935;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER U;SB=LO;stc=1E913;suc=1E913\r
+cp;1E936;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER JIIM;SB=LO;stc=1E914;suc=1E914\r
+cp;1E937;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER CHI;SB=LO;stc=1E915;suc=1E915\r
+cp;1E938;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER HA;SB=LO;stc=1E916;suc=1E916\r
+cp;1E939;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER QAAF;SB=LO;stc=1E917;suc=1E917\r
+cp;1E93A;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER GA;SB=LO;stc=1E918;suc=1E918\r
+cp;1E93B;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER NYA;SB=LO;stc=1E919;suc=1E919\r
+cp;1E93C;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER TU;SB=LO;stc=1E91A;suc=1E91A\r
+cp;1E93D;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER NHA;SB=LO;stc=1E91B;suc=1E91B\r
 # Supplementary small letters\r
-cp;1E93E;CWT;CWU;Lower;na=ADLAM SMALL LETTER VA;stc=1E91C;suc=1E91C\r
-cp;1E93F;CWT;CWU;Lower;na=ADLAM SMALL LETTER KHA;stc=1E91D;suc=1E91D\r
-cp;1E940;CWT;CWU;Lower;na=ADLAM SMALL LETTER GBE;stc=1E91E;suc=1E91E\r
-cp;1E941;CWT;CWU;Lower;na=ADLAM SMALL LETTER ZAL;stc=1E91F;suc=1E91F\r
-cp;1E942;CWT;CWU;Lower;na=ADLAM SMALL LETTER KPO;stc=1E920;suc=1E920\r
-cp;1E943;CWT;CWU;Lower;na=ADLAM SMALL LETTER SHA;stc=1E921;suc=1E921\r
+cp;1E93E;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER VA;SB=LO;stc=1E91C;suc=1E91C\r
+cp;1E93F;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER KHA;SB=LO;stc=1E91D;suc=1E91D\r
+cp;1E940;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER GBE;SB=LO;stc=1E91E;suc=1E91E\r
+cp;1E941;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER ZAL;SB=LO;stc=1E91F;suc=1E91F\r
+cp;1E942;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER KPO;SB=LO;stc=1E920;suc=1E920\r
+cp;1E943;CWT;CWU;gc=Ll;Lower;na=ADLAM SMALL LETTER SHA;SB=LO;stc=1E921;suc=1E921\r
 # Diacritical marks\r
 cp;1E944;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ADLAM ALIF LENGTHENER;SB=EX;WB=Extend;-XIDS\r
 cp;1E945;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ADLAM VOWEL LENGTHENER;SB=EX;WB=Extend;-XIDS\r
index 05851c8..edb72ea 100644 (file)
@@ -3,7 +3,7 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 \r
 {\r
-    "cldrVersion": "38.1",\r
+    "cldrVersion": "39",\r
     "aliases": {\r
         "ars": "ar_SA",\r
         "az_AZ": "az_Latn_AZ",\r
@@ -21,8 +21,7 @@
         "ks_IN": "ks_Arab_IN",\r
         "mni_IN": "mni_Beng_IN",\r
         "mo": "ro",\r
-        "no": "nb",\r
-        "no_NO": "nb_NO",\r
+        "no_NO": "no",\r
         "no_NO_NY": "nn_NO",\r
         "pa_IN": "pa_Guru_IN",\r
         "pa_PK": "pa_Arab_PK",\r
         "es_UY": "es_419",\r
         "es_VE": "es_419",\r
         "ff_Adlm": "root",\r
+        "nb": "no",\r
+        "nn": "no",\r
         "pa_Arab": "root",\r
         "pt_AO": "pt_PT",\r
         "pt_CH": "pt_PT",\r
index 54ef150..4cae84f 100644 (file)
@@ -105,7 +105,51 @@ af{
             }\r
         }\r
         compound{\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} per {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"vierkante {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"vierkante {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kubieke {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubieke {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +157,7 @@ af{
                 one{"{0} karaat"}\r
                 other{"{0} karaat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligram per desiliter"}\r
                 one{"{0} milligram per desiliter"}\r
                 other{"{0} milligram per desiliter"}\r
@@ -1324,7 +1368,7 @@ af{
                 one{"{0} kar."}\r
                 other{"{0} kar."}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dℓ"}\r
                 one{"{0} mg/dℓ"}\r
                 other{"{0} mg/dℓ"}\r
@@ -1717,9 +1761,9 @@ af{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"myl"}\r
@@ -1823,9 +1867,9 @@ af{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 5e97d95..ea0ff3d 100644 (file)
@@ -105,7 +105,52 @@ am{
             }\r
         }\r
         compound{\r
+            1024p1{"{0} ኪቢ"}\r
+            1024p2{"{0} ሜቢ"}\r
+            1024p3{"{0} ጊቢ"}\r
+            1024p4{"{0} ቴቢ"}\r
+            1024p5{"{0} ፔቢ"}\r
+            1024p7{"{0} ዜቢ"}\r
+            10p-1{"ደሲ{0}"}\r
+            10p-12{"ፒኮ{0}"}\r
+            10p-15{"ፌምቶ{0}"}\r
+            10p-18{"አቶ{0}"}\r
+            10p-2{"ሴንቲ{0}"}\r
+            10p-21{"ዜብቶ{0}"}\r
+            10p-24{"ዮክቶ{0}"}\r
+            10p-3{"ሚሊ{0}"}\r
+            10p-6{"ማይክሮ{0}"}\r
+            10p-9{"ናኖ{0}"}\r
+            10p1{"ዴካ{0}"}\r
+            10p2{"ሄክቶ{0}"}\r
+            10p3{"ኪሎ{0}"}\r
+            10p6{"ሜጋ{0}"}\r
+            10p9{"ጊጋ{0}"}\r
             per{"{0} በ{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"ስኩየር {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ስኩየር {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"ኪዩቢክ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ኪዩቢክ {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +158,7 @@ am{
                 one{"{0} ካራት"}\r
                 other{"{0} ካራት"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ሚሊ ግራም በ ዴሲ ሊትር"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -590,9 +635,9 @@ am{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -993,6 +1038,26 @@ am{
             }\r
         }\r
         compound{\r
+            1024p1{"{0} ኪቢ"}\r
+            1024p2{"{0} ሜቢ"}\r
+            1024p3{"{0} ጊቢ"}\r
+            1024p4{"{0} ቴቢ"}\r
+            1024p5{"{0} ፔቢ"}\r
+            1024p7{"{0} ዜቢ"}\r
+            10p-1{"ደ{0}"}\r
+            10p-12{"ፒ{0}"}\r
+            10p-15{"ፌ{0}"}\r
+            10p-18{"አ{0}"}\r
+            10p-2{"ሴ{0}"}\r
+            10p-21{"ዜ{0}"}\r
+            10p-24{"ዮ{0}"}\r
+            10p-3{"ሚ{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"ና{0}"}\r
+            10p1{"ዴ{0}"}\r
+            10p2{"ሄ{0}"}\r
+            10p3{"ኪ{0}"}\r
+            10p6{"ሜ{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1297,6 +1362,26 @@ am{
             }\r
         }\r
         compound{\r
+            1024p1{"{0} ኪቢ"}\r
+            1024p2{"{0} ሜቢ"}\r
+            1024p3{"{0} ጊቢ"}\r
+            1024p4{"{0} ቴቢ"}\r
+            1024p5{"{0} ፔቢ"}\r
+            1024p7{"{0} ዜቢ"}\r
+            10p-1{"ደ{0}"}\r
+            10p-12{"ፒ{0}"}\r
+            10p-15{"ፌ{0}"}\r
+            10p-18{"አ{0}"}\r
+            10p-2{"ሴ{0}"}\r
+            10p-21{"ዜ{0}"}\r
+            10p-24{"ዮ{0}"}\r
+            10p-3{"ሚ{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"ና{0}"}\r
+            10p1{"ዴ{0}"}\r
+            10p2{"ሄ{0}"}\r
+            10p3{"ኪ{0}"}\r
+            10p6{"ሜ{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1305,7 +1390,7 @@ am{
                 one{"{0} ካራት"}\r
                 other{"{0} ካራት"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1773,9 +1858,9 @@ am{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index a4f3a62..69b6291 100644 (file)
@@ -173,7 +173,99 @@ ar{
             }\r
         }\r
         compound{\r
+            1024p1{"كيبي{0}"}\r
+            1024p2{"ميبي{0}"}\r
+            1024p3{"غيبي{0}"}\r
+            1024p4{"تيبي{0}"}\r
+            1024p5{"بيبي{0}"}\r
+            1024p6{"إكسبي{0}"}\r
+            1024p7{"زيبي{0}"}\r
+            1024p8{"يوبي{0}"}\r
+            10p-1{"ديسي{0}"}\r
+            10p-12{"بيكو{0}"}\r
+            10p-15{"فيمتو{0}"}\r
+            10p-18{"أتو{0}"}\r
+            10p-2{"سنتي{0}"}\r
+            10p-21{"زيبتو{0}"}\r
+            10p-24{"يوكتو{0}"}\r
+            10p-3{"ملّي{0}"}\r
+            10p-6{"ميكرو{0}"}\r
+            10p-9{"نانو{0}"}\r
+            10p1{"ديكا{0}"}\r
+            10p12{"تيرا{0}"}\r
+            10p15{"بيتا{0}"}\r
+            10p18{"إكسا{0}"}\r
+            10p2{"هكتو{0}"}\r
+            10p21{"زيتا{0}"}\r
+            10p24{"يوتا{0}"}\r
+            10p3{"كيلو{0}"}\r
+            10p6{"ميغا{0}"}\r
+            10p9{"غيغا{0}"}\r
             per{"{0} لكل {1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0} مربّعة"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} مربّعًا"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} مربّع"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} مربّع"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} مربّعان"}\r
+                    }\r
+                }\r
+                zero{\r
+                    _{\r
+                        _{"{0} مربّع"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0} مكعّبة"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} مكعبًا"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} مكعّب"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} مكعّب"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} مكعّبان"}\r
+                    }\r
+                }\r
+                zero{\r
+                    _{\r
+                        _{"{0} مكعّب"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -185,7 +277,7 @@ ar{
                 two{"قيراطان"}\r
                 zero{"{0} قيراط"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"مغم/ديسيبل"}\r
                 few{"{0} مغم/ديسيبل"}\r
                 many{"{0} مغم/ديسيبل"}\r
@@ -1786,6 +1878,34 @@ ar{
             }\r
         }\r
         compound{\r
+            1024p1{"كيبي{0}"}\r
+            1024p2{"ميبي{0}"}\r
+            1024p3{"غيبي{0}"}\r
+            1024p4{"تيبي{0}"}\r
+            1024p5{"بيبي{0}"}\r
+            1024p6{"إكسبي{0}"}\r
+            1024p7{"زيبي{0}"}\r
+            1024p8{"يوبي{0}"}\r
+            10p-1{"د{0}"}\r
+            10p-12{"ب{0}"}\r
+            10p-15{"ف{0}"}\r
+            10p-18{"أ{0}"}\r
+            10p-2{"س{0}"}\r
+            10p-21{"زيب{0}"}\r
+            10p-24{"يك{0}"}\r
+            10p-3{"م{0}"}\r
+            10p-6{"مك{0}"}\r
+            10p-9{"ن{0}"}\r
+            10p1{"دا{0}"}\r
+            10p12{"ت{0}"}\r
+            10p15{"بتا{0}"}\r
+            10p18{"إ.{0}"}\r
+            10p2{"ه{0}"}\r
+            10p21{"زت{0}"}\r
+            10p24{"يو{0}"}\r
+            10p3{"ك{0}"}\r
+            10p6{"مغ{0}"}\r
+            10p9{"غ{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -2307,6 +2427,34 @@ ar{
             }\r
         }\r
         compound{\r
+            1024p1{"كيبي{0}"}\r
+            1024p2{"ميبي{0}"}\r
+            1024p3{"غيبي{0}"}\r
+            1024p4{"تيبي{0}"}\r
+            1024p5{"بيبي{0}"}\r
+            1024p6{"إكسبي{0}"}\r
+            1024p7{"زيبي{0}"}\r
+            1024p8{"يوبي{0}"}\r
+            10p-1{"د{0}"}\r
+            10p-12{"ب{0}"}\r
+            10p-15{"ف{0}"}\r
+            10p-18{"أ{0}"}\r
+            10p-2{"س{0}"}\r
+            10p-21{"زيب{0}"}\r
+            10p-24{"يك{0}"}\r
+            10p-3{"م{0}"}\r
+            10p-6{"مك{0}"}\r
+            10p-9{"ن{0}"}\r
+            10p1{"دا{0}"}\r
+            10p12{"ت{0}"}\r
+            10p15{"بتا{0}"}\r
+            10p18{"إ.{0}"}\r
+            10p2{"ه{0}"}\r
+            10p21{"زت{0}"}\r
+            10p24{"يو{0}"}\r
+            10p3{"ك{0}"}\r
+            10p6{"مغ{0}"}\r
+            10p9{"غ{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -2320,7 +2468,7 @@ ar{
                 two{"{0} قيراط"}\r
                 zero{"{0} قيراط"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"مغم/ديسبل"}\r
                 few{"{0} مغم/ديسبل"}\r
                 many{"{0} مغم/ديسبل"}\r
@@ -2449,13 +2597,13 @@ ar{
                 zero{"{0} غيغابت"}\r
             }\r
             gigabyte{\r
-                dnam{"غيغابايت"}\r
-                few{"{0} غيغابايت"}\r
-                many{"{0} غيغابايت"}\r
-                one{"{0} غيغابايت"}\r
-                other{"{0} غيغابايت"}\r
-                two{"{0} غيغابايت"}\r
-                zero{"{0} غيغابايت"}\r
+                dnam{"GB"}\r
+                few{"{0} GB"}\r
+                many{"{0} GB"}\r
+                one{"{0} GB"}\r
+                other{"{0} GB"}\r
+                two{"{0} GB"}\r
+                zero{"{0} GB"}\r
             }\r
             kilobit{\r
                 dnam{"كيلوبت"}\r
@@ -2486,12 +2634,12 @@ ar{
             }\r
             megabyte{\r
                 dnam{"ميغابايت"}\r
-                few{"{0} ميغابايت"}\r
-                many{"{0} ميغابايت"}\r
-                one{"{0} ميغابايت"}\r
-                other{"{0} ميغابايت"}\r
-                two{"{0} ميغابايت"}\r
-                zero{"{0} ميغابايت"}\r
+                few{"{0} MB"}\r
+                many{"{0} MB"}\r
+                one{"{0} MB"}\r
+                other{"{0} MB"}\r
+                two{"{0} MB"}\r
+                zero{"{0} MB"}\r
             }\r
             petabyte{\r
                 dnam{"بيتابايت"}\r
@@ -2833,7 +2981,7 @@ ar{
                 many{"{0} نقطة/سم"}\r
                 one{"{0} نقطة/سم"}\r
                 other{"{0} نقطة/سم"}\r
-                two{"{0} نقطة/سم"}\r
+                two{"{0} بكسل/سم"}\r
                 zero{"{0} نقطة/سم"}\r
             }\r
             dot-per-inch{\r
@@ -2842,7 +2990,7 @@ ar{
                 many{"{0} نقطة/بوصة"}\r
                 one{"{0} نقطة/بوصة"}\r
                 other{"{0} نقطة/بوصة"}\r
-                two{"{0} نقطة/بوصة"}\r
+                two{"{0} بكسل/بوصة"}\r
                 zero{"{0} نقطة/بوصة"}\r
             }\r
             em{\r
index c2494b1..3504a53 100644 (file)
@@ -105,7 +105,59 @@ as{
             }\r
         }\r
         compound{\r
+            1024p1{"কিবি{0}"}\r
+            1024p2{"মেবি{0}"}\r
+            1024p3{"গিবি{0}"}\r
+            1024p4{"টেবি{0}"}\r
+            1024p5{"পেবি{0}"}\r
+            1024p6{"এক্সবি{0}"}\r
+            1024p7{"জেবি{0}"}\r
+            1024p8{"য়োবে{0}"}\r
+            10p-1{"ডেচি{0}"}\r
+            10p-12{"পিকো{0}"}\r
+            10p-15{"ফেমটো{0}"}\r
+            10p-18{"অটো{0}"}\r
+            10p-2{"চেণ্টি{0}"}\r
+            10p-21{"জেপ্টো{0}"}\r
+            10p-24{"য়ক্টো{0}"}\r
+            10p-3{"মিলি{0}"}\r
+            10p-6{"মাইক্ৰ’{0}"}\r
+            10p-9{"নেনো{0}"}\r
+            10p1{"ডেকা{0}"}\r
+            10p12{"টেৰা{0}"}\r
+            10p15{"পেটা{0}"}\r
+            10p18{"এক্সা{0}"}\r
+            10p2{"হেক্টো{0}"}\r
+            10p21{"জেতা{0}"}\r
+            10p24{"য়োটা{0}"}\r
+            10p3{"কিলো{0}"}\r
+            10p6{"মেগা{0}"}\r
+            10p9{"গিগা{0}"}\r
             per{"প্ৰতি {1}ত {0}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"বৰ্গ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"বৰ্গ {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"ঘন {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ঘন {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ as{
                 one{"{0} কেৰেট"}\r
                 other{"{0} কেৰেট"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"প্ৰতি ডেচিলিটাৰত মিলিগ্ৰাম"}\r
                 one{"প্ৰতি ডেচিলিটাৰত {0} মিলিগ্ৰাম"}\r
                 other{"প্ৰতি ডেচিলিটাৰত {0} মিলিগ্ৰাম"}\r
@@ -937,6 +989,34 @@ as{
     }\r
     unitsNarrow{\r
         compound{\r
+            1024p1{"কি{0}"}\r
+            1024p2{"মি{0}"}\r
+            1024p3{"গি{0}"}\r
+            1024p4{"টে{0}"}\r
+            1024p5{"পে{0}"}\r
+            1024p6{"এক্স{0}"}\r
+            1024p7{"জে{0}"}\r
+            1024p8{"য়ো{0}"}\r
+            10p-1{"ডেচি{0}"}\r
+            10p-12{"পিকো{0}"}\r
+            10p-15{"ফেমটো{0}"}\r
+            10p-18{"অটো{0}"}\r
+            10p-2{"চেণ্টি{0}"}\r
+            10p-21{"জেপ্টো{0}"}\r
+            10p-24{"য়ক্টো{0}"}\r
+            10p-3{"মিলি{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"নেনো{0}"}\r
+            10p1{"ডেকা{0}"}\r
+            10p12{"টেৰা{0}"}\r
+            10p15{"পেটা{0}"}\r
+            10p18{"এক্সা{0}"}\r
+            10p2{"হেক্টো{0}"}\r
+            10p21{"জেতা{0}"}\r
+            10p24{"য়োটা{0}"}\r
+            10p3{"কিলো{0}"}\r
+            10p6{"মেগা{0}"}\r
+            10p9{"গিগা{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1156,6 +1236,33 @@ as{
             }\r
         }\r
         compound{\r
+            1024p1{"কি{0}"}\r
+            1024p2{"মি{0}"}\r
+            1024p3{"গিঃ{0}"}\r
+            1024p4{"টেঃ{0}"}\r
+            1024p5{"পেঃ{0}"}\r
+            1024p6{"এক্স{0}"}\r
+            1024p7{"জেঃ{0}"}\r
+            1024p8{"য়োঃ{0}"}\r
+            10p-1{"ডেঃ{0}"}\r
+            10p-12{"পি.{0}"}\r
+            10p-15{"ফেম.{0}"}\r
+            10p-18{"অ.{0}"}\r
+            10p-2{"চেঃ{0}"}\r
+            10p-21{"জে.{0}"}\r
+            10p-24{"য়.{0}"}\r
+            10p-3{"মিঃ{0}"}\r
+            10p-9{"নে.{0}"}\r
+            10p1{"ডে.{0}"}\r
+            10p12{"টে.{0}"}\r
+            10p15{"পে.{0}"}\r
+            10p18{"এ.{0}"}\r
+            10p2{"হে.{0}"}\r
+            10p21{"জ.{0}"}\r
+            10p24{"য়ো.{0}"}\r
+            10p3{"কিঃ{0}"}\r
+            10p6{"মে.{0}"}\r
+            10p9{"গি.{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1164,7 +1271,7 @@ as{
                 one{"{0} কেৰেট"}\r
                 other{"{0} কেৰেট"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"মিঃ গ্ৰাঃ/ডেঃ লিঃ"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
index 7842491..6310b17 100644 (file)
@@ -108,7 +108,7 @@ ast{
                 one{"{0} quilate"}\r
                 other{"{0} quilates"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramos per decillitru"}\r
                 one{"{0} miligramu per decillitru"}\r
                 other{"{0} miligramos per decillitru"}\r
@@ -856,7 +856,7 @@ ast{
                 one{"{0}kt"}\r
                 other{"{0}kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0}mg/dL"}\r
                 other{"{0}mg/dL"}\r
@@ -1149,9 +1149,9 @@ ast{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
+                dnam{"μm"}\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1225,9 +1225,9 @@ ast{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0}µg"}\r
-                other{"{0}µg"}\r
+                dnam{"μg"}\r
+                one{"{0}μg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -1599,7 +1599,7 @@ ast{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1892,9 +1892,9 @@ ast{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmetros"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmetros"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"milles"}\r
@@ -1973,9 +1973,9 @@ ast{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 5b707c1..da8b468 100644 (file)
@@ -105,7 +105,59 @@ az{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"santi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"meqa{0}"}\r
+            10p9{"giqa{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"kvadrat {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kvadrat {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kub {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kub {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ az{
                 one{"{0} karat"}\r
                 other{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milliqram/desilitr"}\r
                 one{"{0} milliqram/desilitr"}\r
                 other{"{0} milliqram/desilitr"}\r
@@ -502,9 +554,9 @@ az{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mil"}\r
@@ -1014,6 +1066,17 @@ az{
             }\r
         }\r
         compound{\r
+            1024p1{"ki{0}"}\r
+            1024p2{"mi{0}"}\r
+            1024p3{"gi{0}"}\r
+            1024p4{"ti{0}"}\r
+            1024p5{"pi{0}"}\r
+            1024p6{"ei{0}"}\r
+            1024p7{"zi{0}"}\r
+            1024p8{"yi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-2{"s{0}"}\r
+            10p-3{"m{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1316,6 +1379,17 @@ az{
             }\r
         }\r
         compound{\r
+            1024p1{"ki{0}"}\r
+            1024p2{"mi{0}"}\r
+            1024p3{"gi{0}"}\r
+            1024p4{"ti{0}"}\r
+            1024p5{"pi{0}"}\r
+            1024p6{"ei{0}"}\r
+            1024p7{"zi{0}"}\r
+            1024p8{"yi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-2{"s{0}"}\r
+            10p-3{"m{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1325,7 +1399,7 @@ az{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mq/dl"}\r
                 one{"{0} mq/dl"}\r
                 other{"{0} mq/dl"}\r
@@ -1705,9 +1779,9 @@ az{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mil"}\r
@@ -1813,9 +1887,9 @@ az{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µq"}\r
-                one{"{0} µq"}\r
-                other{"{0} µq"}\r
+                dnam{"μq"}\r
+                one{"{0} μq"}\r
+                other{"{0} μq"}\r
             }\r
             milligram{\r
                 dnam{"mq"}\r
index be853c2..d9c8c04 100644 (file)
@@ -139,7 +139,79 @@ be{
             }\r
         }\r
         compound{\r
+            1024p1{"кібі{0}"}\r
+            1024p2{"мебі{0}"}\r
+            1024p3{"гібі{0}"}\r
+            1024p4{"тэбі{0}"}\r
+            1024p5{"пебі{0}"}\r
+            1024p6{"эксбі{0}"}\r
+            1024p7{"зэбі{0}"}\r
+            1024p8{"ёбі{0}"}\r
+            10p-1{"дэцы{0}"}\r
+            10p-12{"піка{0}"}\r
+            10p-15{"фемта{0}"}\r
+            10p-18{"ата{0}"}\r
+            10p-2{"санты{0}"}\r
+            10p-21{"зэпта{0}"}\r
+            10p-24{"ёкта{0}"}\r
+            10p-3{"мілі{0}"}\r
+            10p-6{"мікра{0}"}\r
+            10p-9{"нана{0}"}\r
+            10p1{"дэка{0}"}\r
+            10p12{"тэра{0}"}\r
+            10p15{"пета{0}"}\r
+            10p18{"экса{0}"}\r
+            10p2{"гекта{0}"}\r
+            10p21{"зэта{0}"}\r
+            10p24{"ёта{0}"}\r
+            10p3{"кіла{0}"}\r
+            10p6{"мега{0}"}\r
+            10p9{"гіга{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"квадратныя {0}"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"квадратных {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"квадратны {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"кв. {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"куб. {0}"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"куб. {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"куб. {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"куб. {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -149,7 +221,7 @@ be{
                 one{"{0} карат"}\r
                 other{"{0} карата"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"міліграм на дэцылітр"}\r
                 few{"{0} міліграмы на дэцылітр"}\r
                 many{"{0} міліграм на дэцылітр"}\r
@@ -1349,7 +1421,79 @@ be{
     }\r
     unitsNarrow{\r
         compound{\r
+            1024p1{"Кі{0}"}\r
+            1024p2{"Мі{0}"}\r
+            1024p3{"Гі{0}"}\r
+            1024p4{"Ті{0}"}\r
+            1024p5{"Пі{0}"}\r
+            1024p6{"Эі{0}"}\r
+            1024p7{"Зі{0}"}\r
+            1024p8{"Ёі{0}"}\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"а{0}"}\r
+            10p-2{"с{0}"}\r
+            10p-21{"з{0}"}\r
+            10p-24{"ё{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-6{"мк{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"да{0}"}\r
+            10p12{"Т{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"Э{0}"}\r
+            10p2{"г{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"Ё{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"М{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1636,7 +1780,79 @@ be{
             }\r
         }\r
         compound{\r
+            1024p1{"Кі{0}"}\r
+            1024p2{"Мі{0}"}\r
+            1024p3{"Гі{0}"}\r
+            1024p4{"Ті{0}"}\r
+            1024p5{"Пі{0}"}\r
+            1024p6{"Эі{0}"}\r
+            1024p7{"Зі{0}"}\r
+            1024p8{"Ёі{0}"}\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"а{0}"}\r
+            10p-2{"с{0}"}\r
+            10p-21{"з{0}"}\r
+            10p-24{"ё{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-6{"мк{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"да{0}"}\r
+            10p12{"Т{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"Э{0}"}\r
+            10p2{"г{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"Ё{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"М{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1647,7 +1863,7 @@ be{
                 one{"{0} кар"}\r
                 other{"{0} кар"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"мг/дл"}\r
                 few{"{0} мг/дл"}\r
                 many{"{0} мг/дл"}\r
index 36b6159..6806ec0 100644 (file)
@@ -105,7 +105,59 @@ bg{
             }\r
         }\r
         compound{\r
+            1024p1{"киби{0}"}\r
+            1024p2{"меби{0}"}\r
+            1024p3{"гиби{0}"}\r
+            1024p4{"теби{0}"}\r
+            1024p5{"пеби{0}"}\r
+            1024p6{"ексби{0}"}\r
+            1024p7{"зеби{0}"}\r
+            1024p8{"йоби{0}"}\r
+            10p-1{"деци{0}"}\r
+            10p-12{"пико{0}"}\r
+            10p-15{"фемто{0}"}\r
+            10p-18{"ато{0}"}\r
+            10p-2{"санти{0}"}\r
+            10p-21{"зепто{0}"}\r
+            10p-24{"йокто{0}"}\r
+            10p-3{"мили{0}"}\r
+            10p-6{"микро{0}"}\r
+            10p-9{"нано{0}"}\r
+            10p1{"дека{0}"}\r
+            10p12{"тера{0}"}\r
+            10p15{"пета{0}"}\r
+            10p18{"екса{0}"}\r
+            10p2{"хекто{0}"}\r
+            10p21{"зета{0}"}\r
+            10p24{"йота{0}"}\r
+            10p3{"кило{0}"}\r
+            10p6{"мега{0}"}\r
+            10p9{"гига{0}"}\r
             per{"{0} на {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"квадратен {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"квадратни {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"кубичен {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"кубични {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ bg{
                 one{"{0} карат"}\r
                 other{"{0} карата"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"милиграми на децилитър"}\r
                 one{"{0} милиграм на децилитър"}\r
                 other{"{0} милиграма на децилитър"}\r
@@ -1028,6 +1080,34 @@ bg{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"а{0}"}\r
+            10p-2{"с{0}"}\r
+            10p-21{"з{0}"}\r
+            10p-24{"й{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"дк{0}"}\r
+            10p12{"Т{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"Е{0}"}\r
+            10p2{"х{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"Й{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"М{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1323,14 +1403,54 @@ bg{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"а{0}"}\r
+            10p-2{"с{0}"}\r
+            10p-21{"з{0}"}\r
+            10p-24{"й{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"дк{0}"}\r
+            10p12{"Т{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"Е{0}"}\r
+            10p2{"х{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"Й{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"М{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1686,9 +1806,9 @@ bg{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 one{"{0} mi"}\r
@@ -1795,9 +1915,9 @@ bg{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 985f8ba..0cc641c 100644 (file)
@@ -105,7 +105,52 @@ bn{
             }\r
         }\r
         compound{\r
+            1024p1{"{0}কিবি"}\r
+            10p-1{"ডেসি{0}"}\r
+            10p-12{"পিকো{0}"}\r
+            10p-15{"ফেমটো{0}"}\r
+            10p-18{"এট্টো{0}"}\r
+            10p-2{"সেন্টি{0}"}\r
+            10p-21{"জেপ্টো{0}"}\r
+            10p-24{"ইয়োক্টো{0}"}\r
+            10p-3{"মিলি{0}"}\r
+            10p-6{"মাইক্রো{0}"}\r
+            10p-9{"ন্যানো{0}"}\r
+            10p1{"ডেকা{0}"}\r
+            10p12{"টেরা{0}"}\r
+            10p15{"পেটা{0}"}\r
+            10p18{"এক্সা{0}"}\r
+            10p2{"হেক্টো{0}"}\r
+            10p21{"জেট্টা{0}"}\r
+            10p24{"ইয়োট্টা{0}"}\r
+            10p3{"কিলো{0}"}\r
+            10p6{"মেগা{0}"}\r
+            10p9{"গিগা{0}"}\r
             per{"{1} প্রতি {0}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"বর্গ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"বর্গ{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"ঘন {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ঘন {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +158,7 @@ bn{
                 one{"{0} ক্যারেট"}\r
                 other{"{0} ক্যারেট"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"মিলিগ্রাম, প্রতি ডেসিলিটারে"}\r
                 one{"{0} মিলিগ্রাম, প্রতি ডেসিলিটারে"}\r
                 other{"{0} মিলিগ্রাম, প্রতি ডেসিলিটারে"}\r
@@ -958,7 +1003,53 @@ bn{
             }\r
         }\r
         compound{\r
+            1024p1{"{0}কি"}\r
+            1024p3{"Gi{0}"}\r
+            10p-1{"ডে{0}"}\r
+            10p-12{"পি{0}"}\r
+            10p-15{"ফে{0}"}\r
+            10p-18{"এ{0}"}\r
+            10p-2{"সে{0}"}\r
+            10p-21{"জে{0}"}\r
+            10p-24{"ইয়ো{0}"}\r
+            10p-3{"মি{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"ন্যা{0}"}\r
+            10p1{"ডে{0}"}\r
+            10p12{"টে{0}"}\r
+            10p15{"পে{0}"}\r
+            10p18{"এ{0}"}\r
+            10p2{"হে {0}"}\r
+            10p21{"জে{0}"}\r
+            10p24{"ই{0}"}\r
+            10p3{"কি{0}"}\r
+            10p6{"মে {0}"}\r
+            10p9{"গি{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1102,8 +1193,8 @@ bn{
                 per{"{0}/মি"}\r
             }\r
             micrometer{\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"মাইল"}\r
@@ -1175,9 +1266,9 @@ bn{
                 other{"{0} টন"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"মিগ্রা:"}\r
@@ -1411,7 +1502,52 @@ bn{
             }\r
         }\r
         compound{\r
+            1024p1{"{0}কি"}\r
+            10p-1{"ডে {0}"}\r
+            10p-12{"পি {0}"}\r
+            10p-15{"ফে {0}"}\r
+            10p-18{"এ {0}"}\r
+            10p-2{"সে {0}"}\r
+            10p-21{"জে {0}"}\r
+            10p-24{"ইয়ো {0}"}\r
+            10p-3{"মি {0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"ন্যা {0}"}\r
+            10p1{"ডা {0}"}\r
+            10p12{"টে {0}"}\r
+            10p15{"পে {0}"}\r
+            10p18{"এঃ{0}"}\r
+            10p2{"হে{0}"}\r
+            10p21{"জেঃ{0}"}\r
+            10p24{"ইঃ{0}"}\r
+            10p3{"কি{0}"}\r
+            10p6{"মে{0}"}\r
+            10p9{"গি {0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1419,7 +1555,7 @@ bn{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1757,9 +1893,9 @@ bn{
                 per{"{0} প্রতি মি"}\r
             }\r
             micrometer{\r
-                dnam{"µmeters"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmeters"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"মাইল"}\r
@@ -1844,9 +1980,9 @@ bn{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index fb1c4eb..5ddc2f4 100644 (file)
@@ -140,7 +140,89 @@ br{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"deki{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"kenti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zeta{0}"}\r
+            10p24{"yota{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} dre {1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0} karrez"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} karrez"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} karrez"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} karrez"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} karrez"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0} diñs"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} diñs"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} diñs"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} diñs"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} diñs"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         concentr{\r
@@ -152,7 +234,7 @@ br{
                 other{"{0} karat"}\r
                 two{"{0} garat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligramm dre zekilitr"}\r
                 few{"{0} milligramm dre zekilitr"}\r
                 many{"{0} a villigrammoù dre zekilitr"}\r
@@ -1638,7 +1720,7 @@ br{
                 other{"{0}kt"}\r
                 two{"{0}kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 few{"{0}mg/dl"}\r
                 many{"{0}mg/dl"}\r
@@ -2219,12 +2301,12 @@ br{
                 two{"{0}m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0}µm"}\r
-                many{"{0}µm"}\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
-                two{"{0}µm"}\r
+                dnam{"μm"}\r
+                few{"{0}μm"}\r
+                many{"{0}μm"}\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
+                two{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -2394,12 +2476,12 @@ br{
                 two{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0}µg"}\r
-                many{"{0}µg"}\r
-                one{"{0}µg"}\r
-                other{"{0}µg"}\r
-                two{"{0}µg"}\r
+                dnam{"μg"}\r
+                few{"{0}μg"}\r
+                many{"{0}μg"}\r
+                one{"{0}μg"}\r
+                other{"{0}μg"}\r
+                two{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -3086,7 +3168,7 @@ br{
                 other{"{0} kt"}\r
                 two{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 few{"{0} mg/dl"}\r
                 many{"{0} mg/dl"}\r
@@ -3617,12 +3699,12 @@ br{
                 two{"{0} m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                many{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
-                two{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                many{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
+                two{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -3743,12 +3825,12 @@ br{
                 two{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                many{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
-                two{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                many{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
+                two{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 9ff0620..82ac161 100644 (file)
@@ -122,7 +122,49 @@ bs{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"kvadratna {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"kvadratni {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kvadratnih {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"kubna {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"kubni {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubnih {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -131,7 +173,7 @@ bs{
                 one{"{0} karat"}\r
                 other{"{0} karata"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligrami po decilitru"}\r
                 few{"{0} miligrama po decilitru"}\r
                 one{"{0} miligram po decilitru"}\r
@@ -1520,7 +1562,7 @@ bs{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 few{"{0} mg/dL"}\r
                 one{"{0} mg/dL"}\r
@@ -1870,14 +1912,14 @@ bs{
         graphics{\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                few{"{0} dpcm"}\r
-                one{"{0} dpcm"}\r
+                few{"{0} ppcm"}\r
+                one{"{0} ppcm"}\r
                 other{"{0} dpcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                few{"{0} dpi"}\r
-                one{"{0} dpi"}\r
+                few{"{0} ppi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
             }\r
             em{\r
@@ -1978,10 +2020,10 @@ bs{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"milje"}\r
@@ -2098,10 +2140,10 @@ bs{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index ddcd20d..5a7ecb6 100644 (file)
@@ -105,7 +105,59 @@ ca{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"decí{0}"}\r
+            10p-12{"picò{0}"}\r
+            10p-15{"femtò{0}"}\r
+            10p-18{"attò{0}"}\r
+            10p-2{"centí{0}"}\r
+            10p-21{"zeptò{0}"}\r
+            10p-24{"yoctò{0}"}\r
+            10p-3{"mil·lí{0}"}\r
+            10p-6{"micrò{0}"}\r
+            10p-9{"nanò{0}"}\r
+            10p1{"decà{0}"}\r
+            10p12{"terà{0}"}\r
+            10p15{"petà{0}"}\r
+            10p18{"exà{0}"}\r
+            10p2{"hectò{0}"}\r
+            10p21{"zetà{0}"}\r
+            10p24{"yotà{0}"}\r
+            10p3{"quilò{0}"}\r
+            10p6{"megà{0}"}\r
+            10p9{"gigà{0}"}\r
             per{"{0} per {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} quadrat"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} quadrats"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} cúbic"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} cúbics"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ ca{
                 one{"{0} quirat"}\r
                 other{"{0} quirats"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mil·ligrams per decilitre"}\r
                 one{"{0} mil·ligram per decilitre"}\r
                 other{"{0} mil·ligrams per decilitre"}\r
@@ -1024,6 +1076,12 @@ ca{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1343,6 +1401,12 @@ ca{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1352,7 +1416,7 @@ ca{
                 one{"{0} ct"}\r
                 other{"{0} ct"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1721,9 +1785,9 @@ ca{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"milles"}\r
@@ -1822,9 +1886,9 @@ ca{
                 other{"{0} t mètr."}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index ce31f26..5008e3c 100644 (file)
@@ -108,7 +108,7 @@ ccp{
                 one{"{0} 𑄇𑄳𑄠𑄢𑄬𑄖𑄴"}\r
                 other{"{0} 𑄇𑄳𑄠𑄢𑄬𑄖𑄴"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"𑄟𑄨𑄣𑄨𑄉𑄳𑄢𑄟𑄴, 𑄛𑄳𑄢𑄧𑄖𑄨 𑄓𑄬𑄥𑄨𑄣𑄨𑄑𑄢𑄬"}\r
                 one{"{0} 𑄟𑄨𑄣𑄨𑄉𑄳𑄢𑄟𑄴, 𑄛𑄳𑄢𑄧𑄖𑄨 𑄓𑄬𑄥𑄨𑄣𑄨𑄑𑄢𑄬"}\r
                 other{"{0} 𑄟𑄨𑄣𑄨𑄉𑄳𑄢𑄟𑄴, 𑄛𑄳𑄢𑄧𑄖𑄨 𑄓𑄬𑄥𑄨𑄣𑄨𑄑𑄢𑄬"}\r
@@ -1072,7 +1072,7 @@ ccp{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1355,9 +1355,9 @@ ccp{
                 per{"{0} 𑄛𑄳𑄢𑄧𑄖𑄨 𑄟𑄨"}\r
             }\r
             micrometer{\r
-                dnam{"µmeters"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmeters"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"𑄟𑄬𑄣𑄴"}\r
@@ -1431,9 +1431,9 @@ ccp{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index a2bf8e9..d4a6205 100644 (file)
@@ -104,7 +104,59 @@ ceb{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} kada {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"square {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"square {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"cubic {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"cubic {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -112,7 +164,7 @@ ceb{
                 one{"{0} ka karat"}\r
                 other{"{0} ka mga karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mga milligram kada deciliter"}\r
                 one{"{0} ka milligram kada deciliter"}\r
                 other{"{0} ka mga milligram kada deciliter"}\r
@@ -409,7 +461,7 @@ ceb{
         graphics{\r
             dot{\r
                 one{"{0} dot"}\r
-                other{"{0} dot"}\r
+                other{"{0} px"}\r
             }\r
             dot-per-centimeter{\r
                 dnam{"mga dot kada sentimetro"}\r
@@ -1128,7 +1180,7 @@ ceb{
             karat{\r
                 dnam{"mga karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
             }\r
@@ -1348,7 +1400,7 @@ ceb{
                 dnam{"m"}\r
             }\r
             micrometer{\r
-                dnam{"mga µmeter"}\r
+                dnam{"mga μmeter"}\r
             }\r
             mile{\r
                 dnam{"mga milya"}\r
index 58ba2be..b4871e2 100644 (file)
@@ -105,7 +105,51 @@ chr{
             }\r
         }\r
         compound{\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} ᎾᎿ {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"ᏅᎩ ᏧᏅᏏᏱ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ᏅᎩ ᏧᏅᏏᏱ {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"ᏣᏁᎳ ᏧᏅᏏᏱ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ᏣᏁᎳ ᏧᏅᏏᏱ {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +157,7 @@ chr{
                 one{"{0} ᎧᏇᏓ"}\r
                 other{"{0} ᏗᎧᏇᏓ"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ᏌᏉ ᎢᏯᎦᎨᎵᏁᎢ ᎤᏍᏗ ᏂᏚᏓᎨᏒ ᏌᏉ ᎢᏳᎾᏓᎢ ᏍᎪᎯ ᎵᏔᎢ ᎢᏳᏓᎵ"}\r
                 one{"{0} ᏌᏉ ᎢᏯᎦᎨᎵᏁᎢ ᎤᏍᏗ ᎤᏓᎨᏒ ᏌᏉ ᎢᏳᎾᏓᎢ ᏍᎪᎯ ᎵᏔᎢ ᎢᏳᏓᎵ"}\r
                 other{"{0} ᏌᏉ ᎢᏯᎦᎨᎵᏁᎢ ᎤᏍᏗ ᏂᏚᏓᎨᏒ ᏌᏉ ᎢᏳᎾᏓᎢ ᏍᎪᎯ ᎵᏔᎢ ᎢᏳᏓᎵ"}\r
@@ -1138,7 +1182,7 @@ chr{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1487,9 +1531,9 @@ chr{
                 per{"{0}/ᎠᏟ"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"ᎢᏳᏟᎶᏓ"}\r
@@ -1588,9 +1632,9 @@ chr{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index d7e025a..ee93507 100644 (file)
@@ -139,7 +139,79 @@ cs{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0} čtver."}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} čtver."}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} čtver."}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} čtver."}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0} krychl."}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} krychl."}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} krychl."}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} krychl."}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}{1}"}\r
         }\r
         concentr{\r
@@ -150,7 +222,7 @@ cs{
                 one{"{0} karát"}\r
                 other{"{0} karátů"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramy na decilitr"}\r
                 few{"{0} miligramy na decilitr"}\r
                 many{"{0} miligramu na decilitr"}\r
@@ -1473,7 +1545,79 @@ cs{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}{1}"}\r
         }\r
         concentr{\r
@@ -1484,7 +1628,7 @@ cs{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 few{"{0} mg/dl"}\r
                 many{"{0} mg/dl"}\r
@@ -1881,11 +2025,11 @@ cs{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                many{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                many{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1992,11 +2136,11 @@ cs{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                many{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                many{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -2497,7 +2641,79 @@ cs{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}{1}"}\r
         }\r
         concentr{\r
@@ -2508,7 +2724,7 @@ cs{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 few{"{0} mg/dl"}\r
                 many{"{0} mg/dl"}\r
@@ -3050,11 +3266,11 @@ cs{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                many{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                many{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -3210,11 +3426,11 @@ cs{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                many{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                many{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index e434f2d..c34a6b5 100644 (file)
@@ -173,7 +173,99 @@ cy{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"ffemto{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deca{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"cilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0} sgwâr"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} sgwâr"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} sgwâr"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} sgwâr"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} sgwâr"}\r
+                    }\r
+                }\r
+                zero{\r
+                    _{\r
+                        _{"{0} sgwâr"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0} ciwbig"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} ciwbig"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} ciwbig"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} ciwbig"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} ciwbig"}\r
+                    }\r
+                }\r
+                zero{\r
+                    _{\r
+                        _{"{0} ciwbig"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -185,7 +277,7 @@ cy{
                 two{"{0} kt"}\r
                 zero{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramau y declilitr"}\r
                 few{"{0} mg/dL"}\r
                 many{"{0} mg/dL"}\r
@@ -580,11 +672,11 @@ cy{
             }\r
             foodcalorie{\r
                 dnam{"Calorïau"}\r
-                few{"{0} Cal"}\r
-                many{"{0} Cal"}\r
+                few{"{0} kcal"}\r
+                many{"{0} kcal"}\r
                 one{"{0} Calori"}\r
                 other{"{0} Calori"}\r
-                two{"{0} Cal"}\r
+                two{"{0} kcal"}\r
                 zero{"{0} Cal"}\r
             }\r
             joule{\r
@@ -684,30 +776,30 @@ cy{
         }\r
         graphics{\r
             dot{\r
-                few{"{0} dot"}\r
-                many{"{0} dot"}\r
-                one{"{0} dot"}\r
-                other{"{0} dot"}\r
+                few{"{0} px"}\r
+                many{"{0} px"}\r
+                one{"{0} px"}\r
+                other{"{0} px"}\r
                 two{"{0} ddot"}\r
-                zero{"{0} dot"}\r
+                zero{"{0} px"}\r
             }\r
             dot-per-centimeter{\r
                 dnam{"dotiau mewn centimedr"}\r
-                few{"{0} dpcm"}\r
-                many{"{0} dpcm"}\r
+                few{"{0} ppcm"}\r
+                many{"{0} ppcm"}\r
                 one{"{0} dot mewn centimedr"}\r
                 other{"{0} mewn centimedr"}\r
-                two{"{0} dpcm"}\r
-                zero{"{0} dpcm"}\r
+                two{"{0} ppcm"}\r
+                zero{"{0} ppcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dotiau mewn modfedd"}\r
-                few{"{0} dpi"}\r
-                many{"{0} dpi"}\r
+                few{"{0} ppi"}\r
+                many{"{0} ppi"}\r
                 one{"{0} dot mewn modfedd"}\r
                 other{"{0} dot mewn modfedd"}\r
-                two{"{0} dpi"}\r
-                zero{"{0} dpi"}\r
+                two{"{0} ppi"}\r
+                zero{"{0} ppi"}\r
             }\r
             em{\r
                 dnam{"em argraffyddol"}\r
@@ -856,12 +948,12 @@ cy{
             }\r
             micrometer{\r
                 dnam{"micrometrau"}\r
-                few{"{0} µm"}\r
-                many{"{0} µm"}\r
+                few{"{0} μm"}\r
+                many{"{0} μm"}\r
                 one{"{0} micrometr"}\r
                 other{"{0} micrometr"}\r
-                two{"{0} µm"}\r
-                zero{"{0} µm"}\r
+                two{"{0} μm"}\r
+                zero{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"milltiroedd"}\r
@@ -1048,12 +1140,12 @@ cy{
             }\r
             microgram{\r
                 dnam{"microgramau"}\r
-                few{"{0} µg"}\r
-                many{"{0} µg"}\r
+                few{"{0} μg"}\r
+                many{"{0} μg"}\r
                 one{"{0} microgram"}\r
                 other{"{0} microgram"}\r
-                two{"{0} µg"}\r
-                zero{"{0} µg"}\r
+                two{"{0} μg"}\r
+                zero{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"miligramau"}\r
@@ -1784,6 +1876,7 @@ cy{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -2190,13 +2283,13 @@ cy{
                 zero{"{0}m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0}µm"}\r
-                many{"{0}µm"}\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
-                two{"{0}µm"}\r
-                zero{"{0}µm"}\r
+                dnam{"μm"}\r
+                few{"{0}μm"}\r
+                many{"{0}μm"}\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
+                two{"{0}μm"}\r
+                zero{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -2307,13 +2400,13 @@ cy{
                 zero{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0}µg"}\r
-                many{"{0}µg"}\r
-                one{"{0}µg"}\r
-                other{"{0}µg"}\r
-                two{"{0}µg"}\r
-                zero{"{0}µg"}\r
+                dnam{"μg"}\r
+                few{"{0}μg"}\r
+                many{"{0}μg"}\r
+                one{"{0}μg"}\r
+                other{"{0}μg"}\r
+                two{"{0}μg"}\r
+                zero{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -2818,7 +2911,7 @@ cy{
                 two{"{0} kt"}\r
                 zero{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 few{"{0} mg/dL"}\r
                 many{"{0} mg/dL"}\r
                 one{"{0} mg/dL"}\r
@@ -3167,11 +3260,11 @@ cy{
             }\r
             foodcalorie{\r
                 dnam{"Cal"}\r
-                few{"{0} Cal"}\r
-                many{"{0} Cal"}\r
+                few{"{0} kcal"}\r
+                many{"{0} kcal"}\r
                 one{"{0} Cal"}\r
-                other{"{0} Cal"}\r
-                two{"{0} Cal"}\r
+                other{"{0} kcal"}\r
+                two{"{0} kcal"}\r
                 zero{"{0} Cal"}\r
             }\r
             joule{\r
@@ -3244,12 +3337,12 @@ cy{
         }\r
         graphics{\r
             dot{\r
-                few{"{0} dot"}\r
-                many{"{0} dot"}\r
-                one{"{0} dot"}\r
-                other{"{0} dot"}\r
+                few{"{0} px"}\r
+                many{"{0} px"}\r
+                one{"{0} px"}\r
+                other{"{0} px"}\r
                 two{"{0} ddot"}\r
-                zero{"{0} dot"}\r
+                zero{"{0} px"}\r
             }\r
             megapixel{\r
                 dnam{"megapicseli"}\r
@@ -3355,13 +3448,13 @@ cy{
                 zero{"{0} m"}\r
             }\r
             micrometer{\r
-                dnam{"µmetrau"}\r
-                few{"{0} µm"}\r
-                many{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
-                two{"{0} µm"}\r
-                zero{"{0} µm"}\r
+                dnam{"μmetrau"}\r
+                few{"{0} μm"}\r
+                many{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
+                two{"{0} μm"}\r
+                zero{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"milltiroedd"}\r
@@ -3517,13 +3610,13 @@ cy{
                 zero{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                many{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
-                two{"{0} µg"}\r
-                zero{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                many{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
+                two{"{0} μg"}\r
+                zero{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index e02c6f9..ed8fabc 100644 (file)
@@ -11,11 +11,13 @@ da{
         acceleration{\r
             g-force{\r
                 dnam{"G-kraft"}\r
+                gender{"common"}\r
                 one{"{0} G-kraft"}\r
                 other{"{0} G-kraft"}\r
             }\r
             meter-per-square-second{\r
                 dnam{"meter pr. sekund²"}\r
+                gender{"common"}\r
                 one{"{0} meter pr. sekund²"}\r
                 other{"{0} meter pr. sekund²"}\r
             }\r
@@ -50,22 +52,26 @@ da{
         area{\r
             acre{\r
                 dnam{"acre"}\r
+                gender{"common"}\r
                 one{"{0} acre"}\r
                 other{"{0} acres"}\r
             }\r
             hectare{\r
                 dnam{"hektar"}\r
+                gender{"common"}\r
                 one{"{0} hektar"}\r
                 other{"{0} hektar"}\r
             }\r
             square-centimeter{\r
                 dnam{"kvadratcentimeter"}\r
+                gender{"common"}\r
                 one{"{0} kvadratcentimeter"}\r
                 other{"{0} kvadratcentimeter"}\r
                 per{"{0}/cm²"}\r
             }\r
             square-foot{\r
                 dnam{"kvadratfod"}\r
+                gender{"common"}\r
                 one{"{0} kvadratfod"}\r
                 other{"{0} kvadratfod"}\r
             }\r
@@ -77,6 +83,7 @@ da{
             }\r
             square-kilometer{\r
                 dnam{"kvadratkilometer"}\r
+                gender{"common"}\r
                 one{"{0} kvadratkilometer"}\r
                 other{"{0} kvadratkilometer"}\r
                 per{"{0} pr. kvadratkilometer"}\r
@@ -89,6 +96,7 @@ da{
             }\r
             square-mile{\r
                 dnam{"kvadrat-engelske mil"}\r
+                gender{"common"}\r
                 one{"{0} kvadrat-engelsk mil"}\r
                 other{"{0} kvadrat-engelske mil"}\r
                 per{"{0} pr. kvadrat-engelske mil"}\r
@@ -100,7 +108,71 @@ da{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} pr. {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                    common{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                    common{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                    common{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                    common{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0} gange {1}"}\r
         }\r
         concentr{\r
@@ -109,7 +181,7 @@ da{
                 one{"{0} karat"}\r
                 other{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligram pr. deciliter"}\r
                 one{"{0} milligram pr. deciliter"}\r
                 other{"{0} milligram pr. deciliter"}\r
@@ -121,6 +193,7 @@ da{
             }\r
             percent{\r
                 dnam{"procent"}\r
+                gender{"common"}\r
                 one{"{0} procent"}\r
                 other{"{0} procent"}\r
             }\r
@@ -138,6 +211,7 @@ da{
         consumption{\r
             liter-per-100-kilometer{\r
                 dnam{"liter pr. 100 kilometer"}\r
+                gender{"common"}\r
                 one{"{0} liter pr. 100 kilometer"}\r
                 other{"{0} liter pr. 100 kilometer"}\r
             }\r
@@ -148,11 +222,13 @@ da{
             }\r
             mile-per-gallon{\r
                 dnam{"mil pr. gallon"}\r
+                gender{"common"}\r
                 one{"mil pr. gallon"}\r
                 other{"{0} mil pr. gallon"}\r
             }\r
             mile-per-gallon-imperial{\r
                 dnam{"mil pr. engelsk gallon"}\r
+                gender{"common"}\r
                 one{"{0} mil pr. engelsk gallon"}\r
                 other{"{0} mil pr. engelsk gallon"}\r
             }\r
@@ -229,6 +305,7 @@ da{
             }\r
             day{\r
                 dnam{"dage"}\r
+                gender{"common"}\r
                 one{"{0} dag"}\r
                 other{"{0} dage"}\r
                 per{"{0} pr. dag"}\r
@@ -240,6 +317,7 @@ da{
             }\r
             hour{\r
                 dnam{"timer"}\r
+                gender{"common"}\r
                 one{"{0} time"}\r
                 other{"{0} timer"}\r
                 per{"{0} pr. time"}\r
@@ -256,12 +334,14 @@ da{
             }\r
             minute{\r
                 dnam{"minutter"}\r
+                gender{"neuter"}\r
                 one{"{0} minut"}\r
                 other{"{0} minutter"}\r
                 per{"{0} pr. min."}\r
             }\r
             month{\r
                 dnam{"måneder"}\r
+                gender{"common"}\r
                 one{"{0} måned"}\r
                 other{"{0} måneder"}\r
                 per{"{0} pr. måned"}\r
@@ -273,18 +353,21 @@ da{
             }\r
             second{\r
                 dnam{"sekunder"}\r
+                gender{"neuter"}\r
                 one{"{0} sekund"}\r
                 other{"{0} sekunder"}\r
                 per{"{0} pr. sekund"}\r
             }\r
             week{\r
                 dnam{"uger"}\r
+                gender{"common"}\r
                 one{"{0} uge"}\r
                 other{"{0} uger"}\r
                 per{"{0} pr. uge"}\r
             }\r
             year{\r
                 dnam{"år"}\r
+                gender{"neuter"}\r
                 one{"{0} år"}\r
                 other{"{0} år"}\r
                 per{"{0} om året"}\r
@@ -325,6 +408,7 @@ da{
             }\r
             foodcalorie{\r
                 dnam{"kalorier"}\r
+                gender{"common"}\r
                 one{"{0} kalorie"}\r
                 other{"{0} kalorier"}\r
             }\r
@@ -335,6 +419,7 @@ da{
             }\r
             kilocalorie{\r
                 dnam{"kilokalorier"}\r
+                gender{"common"}\r
                 one{"{0} kilokalorie"}\r
                 other{"{0} kilokalorier"}\r
             }\r
@@ -428,6 +513,7 @@ da{
             }\r
             centimeter{\r
                 dnam{"centimeter"}\r
+                gender{"common"}\r
                 one{"{0} centimeter"}\r
                 other{"{0} centimeter"}\r
                 per{"{0} pr. centimeter"}\r
@@ -449,6 +535,7 @@ da{
             }\r
             foot{\r
                 dnam{"fod"}\r
+                gender{"common"}\r
                 one{"{0} fod"}\r
                 other{"{0} fod"}\r
                 per{"{0} pr. fod"}\r
@@ -460,12 +547,14 @@ da{
             }\r
             inch{\r
                 dnam{"tommer"}\r
+                gender{"common"}\r
                 one{"{0} tomme"}\r
                 other{"{0} tommer"}\r
                 per{"{0} pr. tomme"}\r
             }\r
             kilometer{\r
                 dnam{"kilometer"}\r
+                gender{"common"}\r
                 one{"{0} kilometer"}\r
                 other{"{0} kilometer"}\r
                 per{"{0} pr. kilometer"}\r
@@ -477,6 +566,7 @@ da{
             }\r
             meter{\r
                 dnam{"meter"}\r
+                gender{"common"}\r
                 one{"{0} meter"}\r
                 other{"{0} meter"}\r
                 per{"{0} pr. meter"}\r
@@ -488,6 +578,7 @@ da{
             }\r
             mile{\r
                 dnam{"engelske mil"}\r
+                gender{"common"}\r
                 one{"{0} engelsk mil"}\r
                 other{"{0} engelske mil"}\r
             }\r
@@ -498,6 +589,7 @@ da{
             }\r
             millimeter{\r
                 dnam{"millimeter"}\r
+                gender{"common"}\r
                 one{"{0} millimeter"}\r
                 other{"{0} millimeter"}\r
             }\r
@@ -513,11 +605,13 @@ da{
             }\r
             parsec{\r
                 dnam{"parsec"}\r
+                gender{"common"}\r
                 one{"{0} parsec"}\r
                 other{"{0} parsec"}\r
             }\r
             picometer{\r
                 dnam{"pikometer"}\r
+                gender{"common"}\r
                 one{"{0} pikometer"}\r
                 other{"{0} pikometer"}\r
             }\r
@@ -528,11 +622,13 @@ da{
             }\r
             solar-radius{\r
                 dnam{"solradier"}\r
+                gender{"common"}\r
                 one{"{0} solradius"}\r
                 other{"{0} solradier"}\r
             }\r
             yard{\r
                 dnam{"engelske yard"}\r
+                gender{"common"}\r
                 one{"{0} engelsk yard"}\r
                 other{"{0} engelske yard"}\r
             }\r
@@ -553,6 +649,9 @@ da{
                 one{"{0} lux"}\r
                 other{"{0} lux"}\r
             }\r
+            solar-luminosity{\r
+                gender{"common"}\r
+            }\r
         }\r
         mass{\r
             carat{\r
@@ -560,24 +659,31 @@ da{
                 one{"{0} karat"}\r
                 other{"{0} karat"}\r
             }\r
+            dalton{\r
+                gender{"common"}\r
+            }\r
             earth-mass{\r
                 dnam{"Jordmasser"}\r
+                gender{"common"}\r
                 one{"{0} jordmasse"}\r
                 other{"{0} jordmasser"}\r
             }\r
             grain{\r
                 dnam{"gran"}\r
+                gender{"neuter"}\r
                 one{"{0} gran"}\r
                 other{"{0} gran"}\r
             }\r
             gram{\r
                 dnam{"gram"}\r
+                gender{"neuter"}\r
                 one{"{0} gram"}\r
                 other{"{0} gram"}\r
                 per{"{0} pr. gram"}\r
             }\r
             kilogram{\r
                 dnam{"kilogram"}\r
+                gender{"neuter"}\r
                 one{"{0} kilogram"}\r
                 other{"{0} kilogram"}\r
                 per{"{0} pr. kg"}\r
@@ -594,11 +700,13 @@ da{
             }\r
             milligram{\r
                 dnam{"milligram"}\r
+                gender{"neuter"}\r
                 one{"{0} milligram"}\r
                 other{"{0} milligram"}\r
             }\r
             ounce{\r
                 dnam{"ounces"}\r
+                gender{"common"}\r
                 one{"{0} ounce"}\r
                 other{"{0} ounces"}\r
                 per{"{0} pr. ounce"}\r
@@ -610,12 +718,14 @@ da{
             }\r
             pound{\r
                 dnam{"pund"}\r
+                gender{"neuter"}\r
                 one{"{0} pund"}\r
                 other{"{0} pund"}\r
                 per{"{0} pr. pund"}\r
             }\r
             solar-mass{\r
                 dnam{"solmasser"}\r
+                gender{"common"}\r
                 one{"{0} solmasse"}\r
                 other{"{0} solmasser"}\r
             }\r
@@ -680,6 +790,7 @@ da{
             }\r
             kilopascal{\r
                 dnam{"kilopascal"}\r
+                gender{"common"}\r
                 one{"{0} kilopascal"}\r
                 other{"{0} kilopascal"}\r
             }\r
@@ -712,6 +823,7 @@ da{
         speed{\r
             kilometer-per-hour{\r
                 dnam{"kilometer i timen"}\r
+                gender{"common"}\r
                 one{"kilometer i timen"}\r
                 other{"{0} kilometer i timen"}\r
             }\r
@@ -722,11 +834,13 @@ da{
             }\r
             meter-per-second{\r
                 dnam{"meter pr. sekund"}\r
+                gender{"common"}\r
                 one{"{0} meter i sekundet"}\r
                 other{"{0} meter i sekundet"}\r
             }\r
             mile-per-hour{\r
                 dnam{"engelske mil i timen"}\r
+                gender{"common"}\r
                 one{"{0} engelsk mil i timen"}\r
                 other{"{0} engelske mil i timen"}\r
             }\r
@@ -734,21 +848,25 @@ da{
         temperature{\r
             celsius{\r
                 dnam{"grader celsius"}\r
+                gender{"common"}\r
                 one{"{0} grad celsius"}\r
                 other{"{0} grader celsius"}\r
             }\r
             fahrenheit{\r
                 dnam{"grader fahrenheit"}\r
+                gender{"common"}\r
                 one{"{0} grad fahrenheit"}\r
                 other{"{0} grader fahrenheit"}\r
             }\r
             generic{\r
                 dnam{"°"}\r
+                gender{"common"}\r
                 one{"{0}°"}\r
                 other{"{0}°"}\r
             }\r
             kelvin{\r
                 dnam{"kelvin"}\r
+                gender{"common"}\r
                 one{"{0} kelvin"}\r
                 other{"{0} kelvin"}\r
             }\r
@@ -778,17 +896,20 @@ da{
             }\r
             centiliter{\r
                 dnam{"centiliter"}\r
+                gender{"common"}\r
                 one{"{0} centiliter"}\r
                 other{"{0} centiliter"}\r
             }\r
             cubic-centimeter{\r
                 dnam{"kubikcentimeter"}\r
+                gender{"common"}\r
                 one{"{0} kubikcentimeter"}\r
                 other{"{0} kubikcentimeter"}\r
                 per{"{0}/cm³"}\r
             }\r
             cubic-foot{\r
                 dnam{"kubikfod"}\r
+                gender{"common"}\r
                 one{"{0} kubikfod"}\r
                 other{"{0} kubikfod"}\r
             }\r
@@ -810,6 +931,7 @@ da{
             }\r
             cubic-mile{\r
                 dnam{"kubik-engelske mil"}\r
+                gender{"common"}\r
                 one{"{0} kubik-engelsk mil"}\r
                 other{"{0} kubik-engelske mil"}\r
             }\r
@@ -820,6 +942,7 @@ da{
             }\r
             cup{\r
                 dnam{"cups"}\r
+                gender{"common"}\r
                 one{"{0} cup"}\r
                 other{"{0} cups"}\r
             }\r
@@ -830,46 +953,55 @@ da{
             }\r
             deciliter{\r
                 dnam{"deciliter"}\r
+                gender{"common"}\r
                 one{"{0} deciliter"}\r
                 other{"{0} deciliter"}\r
             }\r
             dessert-spoon{\r
                 dnam{"dessertske"}\r
+                gender{"common"}\r
                 one{"{0} dessertske"}\r
                 other{"{0} dessertskeer"}\r
             }\r
             dessert-spoon-imperial{\r
                 dnam{"britisk dessertske"}\r
+                gender{"common"}\r
                 one{"{0} britisk dessertske"}\r
                 other{"{0} britiske dessertskeer"}\r
             }\r
             dram{\r
                 dnam{"britisk flydende dram"}\r
+                gender{"common"}\r
                 one{"{0} britisk flydende dram"}\r
                 other{"{0} britiske flydende dramme"}\r
             }\r
             drop{\r
                 dnam{"dråbe"}\r
+                gender{"common"}\r
                 one{"{0} dråbe"}\r
                 other{"{0} dråber"}\r
             }\r
             fluid-ounce{\r
                 dnam{"engelske fluid ounces"}\r
+                gender{"common"}\r
                 one{"{0} engelsk fluid ounce"}\r
                 other{"{0} engelske fluid ounces"}\r
             }\r
             fluid-ounce-imperial{\r
+                gender{"common"}\r
                 one{"{0} Imp. fluid ounce"}\r
                 other{"{0} Imp. fluid ounces"}\r
             }\r
             gallon{\r
                 dnam{"gallons"}\r
+                gender{"common"}\r
                 one{"{0} gallon"}\r
                 other{"{0} gallons"}\r
                 per{"{0}/gal"}\r
             }\r
             gallon-imperial{\r
                 dnam{"engelske gallons"}\r
+                gender{"common"}\r
                 one{"{0} engelsk gallon"}\r
                 other{"{0} engelske gallons"}\r
                 per{"{0}/engelsk gallon"}\r
@@ -880,11 +1012,13 @@ da{
                 other{"{0} hektoliter"}\r
             }\r
             jigger{\r
+                gender{"common"}\r
                 one{"{0} jigger"}\r
                 other{"{0} jigger"}\r
             }\r
             liter{\r
                 dnam{"liter"}\r
+                gender{"common"}\r
                 one{"{0} liter"}\r
                 other{"{0} liter"}\r
                 per{"{0}/l"}\r
@@ -896,16 +1030,19 @@ da{
             }\r
             milliliter{\r
                 dnam{"milliliter"}\r
+                gender{"common"}\r
                 one{"{0} milliliter"}\r
                 other{"{0} milliliter"}\r
             }\r
             pinch{\r
                 dnam{"knivspids"}\r
+                gender{"common"}\r
                 one{"{0} knivspids"}\r
                 other{"{0} knivspidser"}\r
             }\r
             pint{\r
                 dnam{"pints"}\r
+                gender{"common"}\r
                 one{"{0} pint"}\r
                 other{"{0} pints"}\r
             }\r
@@ -916,21 +1053,25 @@ da{
             }\r
             quart{\r
                 dnam{"engelske quarts"}\r
+                gender{"common"}\r
                 one{"{0} engelsk quart"}\r
                 other{"{0} engelske quarts"}\r
             }\r
             quart-imperial{\r
                 dnam{"britisk quart"}\r
+                gender{"common"}\r
                 one{"{0} britisk quart"}\r
                 other{"{0} britiske quarts"}\r
             }\r
             tablespoon{\r
                 dnam{"spiseskeer"}\r
+                gender{"common"}\r
                 one{"{0} spiseske"}\r
                 other{"{0} spiseskeer"}\r
             }\r
             teaspoon{\r
                 dnam{"teskeer"}\r
+                gender{"common"}\r
                 one{"{0} teske"}\r
                 other{"{0} teskeer"}\r
             }\r
@@ -980,6 +1121,26 @@ da{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1095,7 +1256,7 @@ da{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
+                dnam{"μm"}\r
                 one{"{0}μm"}\r
                 other{"{0}μm"}\r
             }\r
@@ -1361,7 +1522,7 @@ da{
                 one{"{0} kt."}\r
                 other{"{0} kt."}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1691,9 +1852,9 @@ da{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"engelske mil"}\r
@@ -1779,9 +1940,9 @@ da{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index c38f869..4267277 100644 (file)
@@ -10,12 +10,42 @@ de{
     units{\r
         acceleration{\r
             g-force{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} g-Kraft"}\r
+                        other{"{0} g-Kraft"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} g-Kraft"}\r
+                        other{"{0} g-Kraft"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} g-Kraft"}\r
+                        other{"{0} g-Kraft"}\r
+                    }\r
+                }\r
                 dnam{"g-Kraft"}\r
+                gender{"feminine"}\r
                 one{"{0} g-Kraft"}\r
                 other{"{0} g-Kraft"}\r
             }\r
             meter-per-square-second{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Meter pro Quadratsekunde"}\r
+                        other{"{0} Meter pro Quadratsekunde"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Meter pro Quadratsekunde"}\r
+                        other{"{0} Metern pro Quadratsekunde"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Meters pro Quadratsekunde"}\r
+                        other{"{0} Meter pro Quadratsekunde"}\r
+                    }\r
+                }\r
                 dnam{"Meter pro Quadratsekunde"}\r
+                gender{"masculine"}\r
                 one{"{0} Meter pro Quadratsekunde"}\r
                 other{"{0} Meter pro Quadratsekunde"}\r
             }\r
@@ -32,7 +62,22 @@ de{
                 other{"{0} Winkelsekunden"}\r
             }\r
             degree{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Grad"}\r
+                        other{"{0} Grad"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Grad"}\r
+                        other{"{0} Grad"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Grads"}\r
+                        other{"{0} Grad"}\r
+                    }\r
+                }\r
                 dnam{"Grad"}\r
+                gender{"neuter"}\r
                 one{"{0} Grad"}\r
                 other{"{0} Grad"}\r
             }\r
@@ -49,7 +94,22 @@ de{
         }\r
         area{\r
             acre{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Acre"}\r
+                        other{"{0} Acre"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Acre"}\r
+                        other{"{0} Acre"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Acres"}\r
+                        other{"{0} Acre"}\r
+                    }\r
+                }\r
                 dnam{"Acres"}\r
+                gender{"masculine"}\r
                 one{"{0} Acre"}\r
                 other{"{0} Acres"}\r
             }\r
@@ -59,18 +119,63 @@ de{
                 other{"{0} Dunams"}\r
             }\r
             hectare{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Hektar"}\r
+                        other{"{0} Hektar"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Hektar"}\r
+                        other{"{0} Hektar"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Hektars"}\r
+                        other{"{0} Hektar"}\r
+                    }\r
+                }\r
                 dnam{"Hektar"}\r
+                gender{"masculine"}\r
                 one{"{0} Hektar"}\r
                 other{"{0} Hektar"}\r
             }\r
             square-centimeter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Quadratzentimeter"}\r
+                        other{"{0} Quadratzentimeter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Quadratzentimeter"}\r
+                        other{"{0} Quadratzentimetern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Quadratzentimeters"}\r
+                        other{"{0} Quadratzentimeter"}\r
+                    }\r
+                }\r
                 dnam{"Quadratzentimeter"}\r
+                gender{"masculine"}\r
                 one{"{0} Quadratzentimeter"}\r
                 other{"{0} Quadratzentimeter"}\r
                 per{"{0} pro Quadratzentimeter"}\r
             }\r
             square-foot{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Quadratfuß"}\r
+                        other{"{0} Quadratfuß"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Quadratfuß"}\r
+                        other{"{0} Quadratfuß"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Quadratfußes"}\r
+                        other{"{0} Quadratfuß"}\r
+                    }\r
+                }\r
                 dnam{"Quadratfuß"}\r
+                gender{"masculine"}\r
                 one{"{0} Quadratfuß"}\r
                 other{"{0} Quadratfuß"}\r
             }\r
@@ -81,19 +186,64 @@ de{
                 per{"{0} pro Quadratzoll"}\r
             }\r
             square-kilometer{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Quadratkilometer"}\r
+                        other{"{0} Quadratkilometer"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Quadratkilometer"}\r
+                        other{"{0} Quadratkilometern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Quadratkilometers"}\r
+                        other{"{0} Quadratkilometer"}\r
+                    }\r
+                }\r
                 dnam{"Quadratkilometer"}\r
+                gender{"masculine"}\r
                 one{"{0} Quadratkilometer"}\r
                 other{"{0} Quadratkilometer"}\r
                 per{"{0} pro Quadratkilometer"}\r
             }\r
             square-meter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Quadratmeter"}\r
+                        other{"{0} Quadratmeter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Quadratmeter"}\r
+                        other{"{0} Quadratmetern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Quadratmeters"}\r
+                        other{"{0} Quadratmeter"}\r
+                    }\r
+                }\r
                 dnam{"Quadratmeter"}\r
+                gender{"masculine"}\r
                 one{"{0} Quadratmeter"}\r
                 other{"{0} Quadratmeter"}\r
                 per{"{0} pro Quadratmeter"}\r
             }\r
             square-mile{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Quadratmeile"}\r
+                        other{"{0} Quadratmeilen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Quadratmeile"}\r
+                        other{"{0} Quadratmeilen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Quadratmeile"}\r
+                        other{"{0} Quadratmeilen"}\r
+                    }\r
+                }\r
                 dnam{"Quadratmeilen"}\r
+                gender{"feminine"}\r
                 one{"{0} Quadratmeile"}\r
                 other{"{0} Quadratmeilen"}\r
                 per{"{0} pro Quadratmeile"}\r
@@ -105,7 +255,119 @@ de{
             }\r
         }\r
         compound{\r
+            1024p1{"Kibi{0}"}\r
+            1024p2{"Mebi{0}"}\r
+            1024p3{"Gibi{0}"}\r
+            1024p4{"Tebi{0}"}\r
+            1024p5{"Pebi{0}"}\r
+            1024p6{"Exbi{0}"}\r
+            1024p7{"Zebi{0}"}\r
+            1024p8{"Yobi{0}"}\r
+            10p-1{"Dezi{0}"}\r
+            10p-12{"Piko{0}"}\r
+            10p-15{"Femto{0}"}\r
+            10p-18{"Atto{0}"}\r
+            10p-2{"Zenti{0}"}\r
+            10p-21{"Zepto{0}"}\r
+            10p-24{"Yokto{0}"}\r
+            10p-3{"Milli{0}"}\r
+            10p-6{"Mikro{0}"}\r
+            10p-9{"Nano{0}"}\r
+            10p1{"Deka{0}"}\r
+            10p12{"Tera{0}"}\r
+            10p15{"Peta{0}"}\r
+            10p18{"Exa{0}"}\r
+            10p2{"Hekto{0}"}\r
+            10p21{"Zetta{0}"}\r
+            10p24{"Yotta{0}"}\r
+            10p3{"Kilo{0}"}\r
+            10p6{"Mega{0}"}\r
+            10p9{"Giga{0}"}\r
             per{"{0} pro {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"Quadrat{0}"}\r
+                        accusative{"Quadrat{0}"}\r
+                        dative{"Quadrat{0}"}\r
+                        genitive{"Quadrat{0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"Quadrat{0}"}\r
+                        accusative{"Quadrat{0}"}\r
+                        dative{"Quadrat{0}"}\r
+                        genitive{"Quadrat{0}"}\r
+                    }\r
+                    masculine{\r
+                        _{"Quadrat{0}"}\r
+                        accusative{"Quadrat{0}"}\r
+                        dative{"Quadrat{0}"}\r
+                        genitive{"Quadrat{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"Quadrat{0}"}\r
+                        accusative{"Quadrat{0}"}\r
+                        dative{"Quadrat{0}"}\r
+                        genitive{"Quadrat{0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"Quadrat{0}"}\r
+                        accusative{"Quadrat{0}"}\r
+                        dative{"Quadrat{0}"}\r
+                        genitive{"Quadrat{0}"}\r
+                    }\r
+                    masculine{\r
+                        _{"Quadrat{0}"}\r
+                        accusative{"Quadrat{0}"}\r
+                        dative{"Quadrat{0}"}\r
+                        genitive{"Quadrat{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"Kubik{0}"}\r
+                        accusative{"Kubik{0}"}\r
+                        dative{"Kubik{0}"}\r
+                        genitive{"Kubik{0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"Kubik{0}"}\r
+                        accusative{"Kubik{0}"}\r
+                        dative{"Kubik{0}"}\r
+                        genitive{"Kubik{0}"}\r
+                    }\r
+                    masculine{\r
+                        _{"Kubik{0}"}\r
+                        accusative{"Kubik{0}"}\r
+                        dative{"Kubik{0}"}\r
+                        genitive{"Kubik{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"Kubik{0}"}\r
+                        accusative{"Kubik{0}"}\r
+                        dative{"Kubik{0}"}\r
+                        genitive{"Kubik{0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"Kubik{0}"}\r
+                        accusative{"Kubik{0}"}\r
+                        dative{"Kubik{0}"}\r
+                        genitive{"Kubik{0}"}\r
+                    }\r
+                    masculine{\r
+                        _{"Kubik{0}"}\r
+                        accusative{"Kubik{0}"}\r
+                        dative{"Kubik{0}"}\r
+                        genitive{"Kubik{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +375,7 @@ de{
                 one{"{0} Karat"}\r
                 other{"{0} Karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"Milligramm pro Deziliter"}\r
                 one{"{0} Milligramm pro Deziliter"}\r
                 other{"{0} Milligramm pro Deziliter"}\r
@@ -124,7 +386,22 @@ de{
                 other{"{0} Millimol pro Liter"}\r
             }\r
             percent{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Prozent"}\r
+                        other{"{0} Prozent"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Prozent"}\r
+                        other{"{0} Prozent"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Prozents"}\r
+                        other{"{0} Prozent"}\r
+                    }\r
+                }\r
                 dnam{"Prozent"}\r
+                gender{"neuter"}\r
                 one{"{0} Prozent"}\r
                 other{"{0} Prozent"}\r
             }\r
@@ -141,7 +418,22 @@ de{
         }\r
         consumption{\r
             liter-per-100-kilometer{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Liter pro 100 Kilometer"}\r
+                        other{"{0} Liter pro 100 Kilometer"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Liter pro 100 Kilometer"}\r
+                        other{"{0} Litern pro 100 Kilometer"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Liters pro 100 Kilometer"}\r
+                        other{"{0} Liter pro 100 Kilometer"}\r
+                    }\r
+                }\r
                 dnam{"Liter pro 100 Kilometer"}\r
+                gender{"masculine"}\r
                 one{"{0} Liter pro 100 Kilometer"}\r
                 other{"{0} Liter pro 100 Kilometer"}\r
             }\r
@@ -151,12 +443,42 @@ de{
                 other{"{0} Liter pro Kilometer"}\r
             }\r
             mile-per-gallon{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Meile pro Gallone"}\r
+                        other{"{0} Meilen pro Gallone"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Meile pro Gallone"}\r
+                        other{"{0} Meilen pro Gallone"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Meile pro Gallone"}\r
+                        other{"{0} Meilen pro Gallone"}\r
+                    }\r
+                }\r
                 dnam{"Meilen pro Gallone"}\r
+                gender{"feminine"}\r
                 one{"{0} Meile pro Gallone"}\r
                 other{"{0} Meilen pro Gallone"}\r
             }\r
             mile-per-gallon-imperial{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Meile pro Imp. Gallone"}\r
+                        other{"{0} Meilen pro Imp. Gallone"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Meile pro Imp. Gallone"}\r
+                        other{"{0} Meilen pro Imp. Gallone"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Meile pro Imp. Gallone"}\r
+                        other{"{0} Meilen pro Imp. Gallone"}\r
+                    }\r
+                }\r
                 dnam{"Meilen pro Imp. Gallone"}\r
+                gender{"feminine"}\r
                 one{"{0} Meile pro Imp. Gallone"}\r
                 other{"{0} Meilen pro Imp. Gallone"}\r
             }\r
@@ -170,42 +492,162 @@ de{
         }\r
         digital{\r
             bit{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Bit"}\r
+                        other{"{0} Bit"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Bit"}\r
+                        other{"{0} Bit"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Bit"}\r
+                        other{"{0} Bit"}\r
+                    }\r
+                }\r
                 dnam{"Bits"}\r
+                gender{"neuter"}\r
                 one{"{0} Bit"}\r
                 other{"{0} Bit"}\r
             }\r
             byte{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Byte"}\r
+                        other{"{0} Byte"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Byte"}\r
+                        other{"{0} Byte"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Byte"}\r
+                        other{"{0} Byte"}\r
+                    }\r
+                }\r
                 dnam{"Bytes"}\r
+                gender{"neuter"}\r
                 one{"{0} Byte"}\r
                 other{"{0} Byte"}\r
             }\r
             gigabit{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Gigabit"}\r
+                        other{"{0} Gigabit"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Gigabit"}\r
+                        other{"{0} Gigabit"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Gigabit"}\r
+                        other{"{0} Gigabit"}\r
+                    }\r
+                }\r
                 dnam{"Gigabits"}\r
+                gender{"neuter"}\r
                 one{"{0} Gigabit"}\r
                 other{"{0} Gigabit"}\r
             }\r
             gigabyte{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Gigabyte"}\r
+                        other{"{0} Gigabyte"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Gigabyte"}\r
+                        other{"{0} Gigabyte"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Gigabyte"}\r
+                        other{"{0} Gigabyte"}\r
+                    }\r
+                }\r
                 dnam{"Gigabytes"}\r
+                gender{"neuter"}\r
                 one{"{0} Gigabyte"}\r
                 other{"{0} Gigabyte"}\r
             }\r
             kilobit{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kilobit"}\r
+                        other{"{0} Kilobit"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kilobit"}\r
+                        other{"{0} Kilobit"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kilobit"}\r
+                        other{"{0} Kilobit"}\r
+                    }\r
+                }\r
                 dnam{"Kilobits"}\r
+                gender{"neuter"}\r
                 one{"{0} Kilobit"}\r
                 other{"{0} Kilobits"}\r
             }\r
             kilobyte{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kilobyte"}\r
+                        other{"{0} Kilobyte"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kilobyte"}\r
+                        other{"{0} Kilobyte"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kilobyte"}\r
+                        other{"{0} Kilobyte"}\r
+                    }\r
+                }\r
                 dnam{"Kilobytes"}\r
+                gender{"neuter"}\r
                 one{"{0} Kilobyte"}\r
                 other{"{0} Kilobyte"}\r
             }\r
             megabit{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Megabit"}\r
+                        other{"{0} Megabit"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Megabit"}\r
+                        other{"{0} Megabit"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Megabit"}\r
+                        other{"{0} Megabit"}\r
+                    }\r
+                }\r
                 dnam{"Megabits"}\r
+                gender{"neuter"}\r
                 one{"{0} Megabit"}\r
                 other{"{0} Megabit"}\r
             }\r
             megabyte{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Megabyte"}\r
+                        other{"{0} Megabyte"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Megabyte"}\r
+                        other{"{0} Megabyte"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Megabyte"}\r
+                        other{"{0} Megabyte"}\r
+                    }\r
+                }\r
                 dnam{"Megabytes"}\r
+                gender{"neuter"}\r
                 one{"{0} Megabyte"}\r
                 other{"{0} Megabyte"}\r
             }\r
@@ -220,7 +662,22 @@ de{
                 other{"{0} Terabit"}\r
             }\r
             terabyte{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Terabyte"}\r
+                        other{"{0} Terabyte"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Terabyte"}\r
+                        other{"{0} Terabyte"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Terabyte"}\r
+                        other{"{0} Terabyte"}\r
+                    }\r
+                }\r
                 dnam{"Terabytes"}\r
+                gender{"neuter"}\r
                 one{"{0} Terabyte"}\r
                 other{"{0} Terabyte"}\r
             }\r
@@ -232,7 +689,22 @@ de{
                 other{"{0} Jahrhunderte"}\r
             }\r
             day{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Tag"}\r
+                        other{"{0} Tage"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Tag"}\r
+                        other{"{0} Tagen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Tages"}\r
+                        other{"{0} Tage"}\r
+                    }\r
+                }\r
                 dnam{"Tage"}\r
+                gender{"masculine"}\r
                 one{"{0} Tag"}\r
                 other{"{0} Tage"}\r
                 per{"{0} pro Tag"}\r
@@ -243,7 +715,22 @@ de{
                 other{"{0} Jahrzehnte"}\r
             }\r
             hour{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Stunde"}\r
+                        other{"{0} Stunden"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Stunde"}\r
+                        other{"{0} Stunden"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Stunde"}\r
+                        other{"{0} Stunden"}\r
+                    }\r
+                }\r
                 dnam{"Stunden"}\r
+                gender{"feminine"}\r
                 one{"{0} Stunde"}\r
                 other{"{0} Stunden"}\r
                 per{"{0} pro Stunde"}\r
@@ -259,13 +746,43 @@ de{
                 other{"{0} Millisekunden"}\r
             }\r
             minute{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Minute"}\r
+                        other{"{0} Minuten"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Minute"}\r
+                        other{"{0} Minuten"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Minute"}\r
+                        other{"{0} Minuten"}\r
+                    }\r
+                }\r
                 dnam{"Minuten"}\r
+                gender{"feminine"}\r
                 one{"{0} Minute"}\r
                 other{"{0} Minuten"}\r
                 per{"{0} pro Minute"}\r
             }\r
             month{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Monat"}\r
+                        other{"{0} Monate"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Monat"}\r
+                        other{"{0} Monaten"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Monats"}\r
+                        other{"{0} Monate"}\r
+                    }\r
+                }\r
                 dnam{"Monate"}\r
+                gender{"masculine"}\r
                 one{"{0} Monat"}\r
                 other{"{0} Monate"}\r
                 per{"{0} pro Monat"}\r
@@ -276,19 +793,64 @@ de{
                 other{"{0} Nanosekunden"}\r
             }\r
             second{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Sekunde"}\r
+                        other{"{0} Sekunden"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Sekunde"}\r
+                        other{"{0} Sekunden"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Sekunde"}\r
+                        other{"{0} Sekunden"}\r
+                    }\r
+                }\r
                 dnam{"Sekunden"}\r
+                gender{"feminine"}\r
                 one{"{0} Sekunde"}\r
                 other{"{0} Sekunden"}\r
                 per{"{0} pro Sekunde"}\r
             }\r
             week{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Woche"}\r
+                        other{"{0} Wochen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Woche"}\r
+                        other{"{0} Wochen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Woche"}\r
+                        other{"{0} Wochen"}\r
+                    }\r
+                }\r
                 dnam{"Wochen"}\r
+                gender{"feminine"}\r
                 one{"{0} Woche"}\r
                 other{"{0} Wochen"}\r
                 per{"{0} pro Woche"}\r
             }\r
             year{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Jahr"}\r
+                        other{"{0} Jahre"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Jahr"}\r
+                        other{"{0} Jahren"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Jahrs"}\r
+                        other{"{0} Jahre"}\r
+                    }\r
+                }\r
                 dnam{"Jahre"}\r
+                gender{"neuter"}\r
                 one{"{0} Jahr"}\r
                 other{"{0} Jahre"}\r
                 per{"{0} pro Jahr"}\r
@@ -311,7 +873,22 @@ de{
                 other{"{0} Ohm"}\r
             }\r
             volt{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Volt"}\r
+                        other{"{0} Volt"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Volt"}\r
+                        other{"{0} Volt"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Volts"}\r
+                        other{"{0} Volt"}\r
+                    }\r
+                }\r
                 dnam{"Volt"}\r
+                gender{"neuter"}\r
                 one{"{0} Volt"}\r
                 other{"{0} Volt"}\r
             }\r
@@ -333,7 +910,22 @@ de{
                 other{"{0} Elektronenvolt"}\r
             }\r
             foodcalorie{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kilokalorie"}\r
+                        other{"{0} Kilokalorien"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kilokalorie"}\r
+                        other{"{0} Kilokalorien"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kilokalorie"}\r
+                        other{"{0} Kilokalorien"}\r
+                    }\r
+                }\r
                 dnam{"Kilokalorien"}\r
+                gender{"feminine"}\r
                 one{"{0} Kilokalorien"}\r
                 other{"{0} Kilokalorien"}\r
             }\r
@@ -343,7 +935,22 @@ de{
                 other{"{0} Joule"}\r
             }\r
             kilocalorie{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kilokalorie"}\r
+                        other{"{0} Kilokalorien"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kilokalorie"}\r
+                        other{"{0} Kilokalorien"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kilokalorie"}\r
+                        other{"{0} Kilokalorien"}\r
+                    }\r
+                }\r
                 dnam{"Kilokalorien"}\r
+                gender{"feminine"}\r
                 one{"{0} Kilokalorie"}\r
                 other{"{0} Kilokalorien"}\r
             }\r
@@ -436,7 +1043,22 @@ de{
                 other{"{0} Astronomische Einheiten"}\r
             }\r
             centimeter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Zentimeter"}\r
+                        other{"{0} Zentimeter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Zentimeter"}\r
+                        other{"{0} Zentimetern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Zentimeters"}\r
+                        other{"{0} Zentimeter"}\r
+                    }\r
+                }\r
                 dnam{"Zentimeter"}\r
+                gender{"masculine"}\r
                 one{"{0} Zentimeter"}\r
                 other{"{0} Zentimeter"}\r
                 per{"{0} pro Zentimeter"}\r
@@ -457,7 +1079,22 @@ de{
                 other{"{0} Faden"}\r
             }\r
             foot{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Fuß"}\r
+                        other{"{0} Fuß"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Fuß"}\r
+                        other{"{0} Fuß"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Fußes"}\r
+                        other{"{0} Fuß"}\r
+                    }\r
+                }\r
                 dnam{"Fuß"}\r
+                gender{"masculine"}\r
                 one{"{0} Fuß"}\r
                 other{"{0} Fuß"}\r
                 per{"{0} pro Fuß"}\r
@@ -468,13 +1105,43 @@ de{
                 other{"{0} Furlong"}\r
             }\r
             inch{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Zoll"}\r
+                        other{"{0} Zoll"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Zoll"}\r
+                        other{"{0} Zoll"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Zolls"}\r
+                        other{"{0} Zoll"}\r
+                    }\r
+                }\r
                 dnam{"Zoll"}\r
+                gender{"masculine"}\r
                 one{"{0} Zoll"}\r
                 other{"{0} Zoll"}\r
                 per{"{0} pro Zoll"}\r
             }\r
             kilometer{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kilometer"}\r
+                        other{"{0} Kilometer"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kilometer"}\r
+                        other{"{0} Kilometern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kilometers"}\r
+                        other{"{0} Kilometer"}\r
+                    }\r
+                }\r
                 dnam{"Kilometer"}\r
+                gender{"masculine"}\r
                 one{"{0} Kilometer"}\r
                 other{"{0} Kilometer"}\r
                 per{"{0} pro Kilometer"}\r
@@ -485,7 +1152,22 @@ de{
                 other{"{0} Lichtjahre"}\r
             }\r
             meter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Meter"}\r
+                        other{"{0} Meter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Meter"}\r
+                        other{"{0} Metern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Meters"}\r
+                        other{"{0} Meter"}\r
+                    }\r
+                }\r
                 dnam{"Meter"}\r
+                gender{"masculine"}\r
                 one{"{0} Meter"}\r
                 other{"{0} Meter"}\r
                 per{"{0} pro Meter"}\r
@@ -496,7 +1178,22 @@ de{
                 other{"{0} Mikrometer"}\r
             }\r
             mile{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Meile"}\r
+                        other{"{0} Meilen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Meile"}\r
+                        other{"{0} Meilen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Meile"}\r
+                        other{"{0} Meilen"}\r
+                    }\r
+                }\r
                 dnam{"Meilen"}\r
+                gender{"feminine"}\r
                 one{"{0} Meile"}\r
                 other{"{0} Meilen"}\r
             }\r
@@ -506,7 +1203,22 @@ de{
                 other{"{0} skandinavische Meilen"}\r
             }\r
             millimeter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Millimeter"}\r
+                        other{"{0} Millimeter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Millimeter"}\r
+                        other{"{0} Millimetern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Millimeters"}\r
+                        other{"{0} Millimeter"}\r
+                    }\r
+                }\r
                 dnam{"Millimeter"}\r
+                gender{"masculine"}\r
                 one{"{0} Millimeter"}\r
                 other{"{0} Millimeter"}\r
             }\r
@@ -521,12 +1233,42 @@ de{
                 other{"{0} Seemeilen"}\r
             }\r
             parsec{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Parsec"}\r
+                        other{"{0} Parsec"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Parsec"}\r
+                        other{"{0} Parsec"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Parsec"}\r
+                        other{"{0} Parsec"}\r
+                    }\r
+                }\r
                 dnam{"Parsec"}\r
+                gender{"neuter"}\r
                 one{"{0} Parsec"}\r
                 other{"{0} Parsec"}\r
             }\r
             picometer{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Pikometer"}\r
+                        other{"{0} Pikometer"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Pikometer"}\r
+                        other{"{0} Pikometern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Pikometers"}\r
+                        other{"{0} Pikometer"}\r
+                    }\r
+                }\r
                 dnam{"Pikometer"}\r
+                gender{"masculine"}\r
                 one{"{0} Pikometer"}\r
                 other{"{0} Pikometer"}\r
             }\r
@@ -536,12 +1278,42 @@ de{
                 other{"{0} DTP-Punkte"}\r
             }\r
             solar-radius{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Sonnenradius"}\r
+                        other{"{0} Sonnenradien"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Sonnenradius"}\r
+                        other{"{0} Sonnenradien"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Sonnenradius"}\r
+                        other{"{0} Sonnenradien"}\r
+                    }\r
+                }\r
                 dnam{"Sonnenradien"}\r
+                gender{"masculine"}\r
                 one{"{0} Sonnenradius"}\r
                 other{"{0} Sonnenradien"}\r
             }\r
             yard{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Yard"}\r
+                        other{"{0} Yards"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Yard"}\r
+                        other{"{0} Yards"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Yards"}\r
+                        other{"{0} Yards"}\r
+                    }\r
+                }\r
                 dnam{"Yards"}\r
+                gender{"neuter"}\r
                 one{"{0} Yard"}\r
                 other{"{0} Yards"}\r
             }\r
@@ -563,7 +1335,22 @@ de{
                 other{"{0} Lux"}\r
             }\r
             solar-luminosity{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Sonnenleuchtkraft"}\r
+                        other{"{0} Sonnenleuchtkräfte"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Sonnenleuchtkraft"}\r
+                        other{"{0} Sonnenleuchtkräften"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Sonnenleuchtkraft"}\r
+                        other{"{0} Sonnenleuchtkräfte"}\r
+                    }\r
+                }\r
                 dnam{"Sonnenleuchtkräfte"}\r
+                gender{"feminine"}\r
                 one{"{0} Sonnenleuchtkraft"}\r
                 other{"{0} Sonnenleuchtkräfte"}\r
             }\r
@@ -575,28 +1362,103 @@ de{
                 other{"{0} Karat"}\r
             }\r
             dalton{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Dalton"}\r
+                        other{"{0} Dalton"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Dalton"}\r
+                        other{"{0} Dalton"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Dalton"}\r
+                        other{"{0} Dalton"}\r
+                    }\r
+                }\r
                 dnam{"Dalton"}\r
+                gender{"neuter"}\r
                 one{"{0} Dalton"}\r
                 other{"{0} Dalton"}\r
             }\r
             earth-mass{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Erdmasse"}\r
+                        other{"{0} Erdmassen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Erdmasse"}\r
+                        other{"{0} Erdmassen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Erdmasse"}\r
+                        other{"{0} Erdmassen"}\r
+                    }\r
+                }\r
                 dnam{"Erdmassen"}\r
+                gender{"feminine"}\r
                 one{"{0} Erdmasse"}\r
                 other{"{0} Erdmassen"}\r
             }\r
             grain{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Gran"}\r
+                        other{"{0} Gran"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Gran"}\r
+                        other{"{0} Gran"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Grans"}\r
+                        other{"{0} Gran"}\r
+                    }\r
+                }\r
                 dnam{"Gran"}\r
+                gender{"neuter"}\r
                 one{"{0} Gran"}\r
                 other{"{0} Gran"}\r
             }\r
             gram{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Gramm"}\r
+                        other{"{0} Gramm"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Gramm"}\r
+                        other{"{0} Gramm"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Gramms"}\r
+                        other{"{0} Gramm"}\r
+                    }\r
+                }\r
                 dnam{"Gramm"}\r
+                gender{"neuter"}\r
                 one{"{0} Gramm"}\r
                 other{"{0} Gramm"}\r
                 per{"{0} pro Gramm"}\r
             }\r
             kilogram{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kilogramm"}\r
+                        other{"{0} Kilogramm"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kilogramm"}\r
+                        other{"{0} Kilogramm"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kilogramms"}\r
+                        other{"{0} Kilogramm"}\r
+                    }\r
+                }\r
                 dnam{"Kilogramm"}\r
+                gender{"neuter"}\r
                 one{"{0} Kilogramm"}\r
                 other{"{0} Kilogramm"}\r
                 per{"{0} pro Kilogramm"}\r
@@ -612,12 +1474,42 @@ de{
                 other{"{0} Mikrogramm"}\r
             }\r
             milligram{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Milligramm"}\r
+                        other{"{0} Milligramm"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Milligramm"}\r
+                        other{"{0} Milligramm"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Milligramms"}\r
+                        other{"{0} Milligramm"}\r
+                    }\r
+                }\r
                 dnam{"Milligramm"}\r
+                gender{"neuter"}\r
                 one{"{0} Milligramm"}\r
                 other{"{0} Milligramm"}\r
             }\r
             ounce{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Unze"}\r
+                        other{"{0} Unzen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Unze"}\r
+                        other{"{0} Unzen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Unze"}\r
+                        other{"{0} Unzen"}\r
+                    }\r
+                }\r
                 dnam{"Unzen"}\r
+                gender{"feminine"}\r
                 one{"{0} Unze"}\r
                 other{"{0} Unzen"}\r
                 per{"{0} pro Unze"}\r
@@ -628,13 +1520,43 @@ de{
                 other{"{0} Feinunzen"}\r
             }\r
             pound{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Pfund"}\r
+                        other{"{0} Pfund"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Pfund"}\r
+                        other{"{0} Pfund"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Pfunds"}\r
+                        other{"{0} Pfund"}\r
+                    }\r
+                }\r
                 dnam{"Pfund"}\r
+                gender{"neuter"}\r
                 one{"{0} Pfund"}\r
                 other{"{0} Pfund"}\r
                 per{"{0} pro Pfund"}\r
             }\r
             solar-mass{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Sonnenmasse"}\r
+                        other{"{0} Sonnenmassen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Sonnenmasse"}\r
+                        other{"{0} Sonnenmassen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Sonnenmasse"}\r
+                        other{"{0} Sonnenmassen"}\r
+                    }\r
+                }\r
                 dnam{"Sonnenmassen"}\r
+                gender{"feminine"}\r
                 one{"{0} Sonnenmasse"}\r
                 other{"{0} Sonnenmassen"}\r
             }\r
@@ -661,12 +1583,42 @@ de{
                 other{"{0} Pferdestärken"}\r
             }\r
             kilowatt{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kilowatt"}\r
+                        other{"{0} Kilowatt"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kilowatt"}\r
+                        other{"{0} Kilowatt"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kilowatts"}\r
+                        other{"{0} Kilowatt"}\r
+                    }\r
+                }\r
                 dnam{"Kilowatt"}\r
+                gender{"neuter"}\r
                 one{"{0} Kilowatt"}\r
                 other{"{0} Kilowatt"}\r
             }\r
             megawatt{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Megawatt"}\r
+                        other{"{0} Megawatt"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Megawatt"}\r
+                        other{"{0} Megawatt"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Megawatts"}\r
+                        other{"{0} Megawatt"}\r
+                    }\r
+                }\r
                 dnam{"Megawatt"}\r
+                gender{"neuter"}\r
                 one{"{0} Megawatt"}\r
                 other{"{0} Megawatt"}\r
             }\r
@@ -676,7 +1628,22 @@ de{
                 other{"{0} Milliwatt"}\r
             }\r
             watt{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Watt"}\r
+                        other{"{0} Watt"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Watt"}\r
+                        other{"{0} Watt"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Watts"}\r
+                        other{"{0} Watt"}\r
+                    }\r
+                }\r
                 dnam{"Watt"}\r
+                gender{"neuter"}\r
                 one{"{0} Watt"}\r
                 other{"{0} Watt"}\r
             }\r
@@ -703,7 +1670,22 @@ de{
                 other{"{0} Zoll Quecksilbersäule"}\r
             }\r
             kilopascal{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kilopascal"}\r
+                        other{"{0} Kilopascal"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kilopascal"}\r
+                        other{"{0} Kilopascal"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kilopascals"}\r
+                        other{"{0} Kilopascal"}\r
+                    }\r
+                }\r
                 dnam{"Kilopascal"}\r
+                gender{"neuter"}\r
                 one{"{0} Kilopascal"}\r
                 other{"{0} Kilopascal"}\r
             }\r
@@ -735,7 +1717,22 @@ de{
         }\r
         speed{\r
             kilometer-per-hour{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kilometer pro Stunde"}\r
+                        other{"{0} Kilometer pro Stunde"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kilometer pro Stunde"}\r
+                        other{"{0} Kilometern pro Stunde"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kilometers pro Stunde"}\r
+                        other{"{0} Kilometer pro Stunde"}\r
+                    }\r
+                }\r
                 dnam{"Kilometer pro Stunde"}\r
+                gender{"masculine"}\r
                 one{"{0} Kilometer pro Stunde"}\r
                 other{"{0} Kilometer pro Stunde"}\r
             }\r
@@ -745,34 +1742,124 @@ de{
                 other{"{0} Knoten"}\r
             }\r
             meter-per-second{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Meter pro Sekunde"}\r
+                        other{"{0} Meter pro Sekunde"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Meter pro Sekunde"}\r
+                        other{"{0} Metern pro Sekunde"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Meters pro Sekunde"}\r
+                        other{"{0} Meter pro Sekunde"}\r
+                    }\r
+                }\r
                 dnam{"Meter pro Sekunde"}\r
+                gender{"masculine"}\r
                 one{"{0} Meter pro Sekunde"}\r
                 other{"{0} Meter pro Sekunde"}\r
             }\r
             mile-per-hour{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Meile pro Stunde"}\r
+                        other{"{0} Meilen pro Stunde"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Meile pro Stunde"}\r
+                        other{"{0} Meilen pro Stunde"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Meile pro Stunde"}\r
+                        other{"{0} Meilen pro Stunde"}\r
+                    }\r
+                }\r
                 dnam{"Meilen pro Stunde"}\r
+                gender{"feminine"}\r
                 one{"{0} Meile pro Stunde"}\r
                 other{"{0} Meilen pro Stunde"}\r
             }\r
         }\r
         temperature{\r
             celsius{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Grad Celsius"}\r
+                        other{"{0} Grad Celsius"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Grad Celsius"}\r
+                        other{"{0} Grad Celsius"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Grads Celsius"}\r
+                        other{"{0} Grad Celsius"}\r
+                    }\r
+                }\r
                 dnam{"Grad Celsius"}\r
+                gender{"neuter"}\r
                 one{"{0} Grad Celsius"}\r
                 other{"{0} Grad Celsius"}\r
             }\r
             fahrenheit{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Grad Fahrenheit"}\r
+                        other{"{0} Grad Fahrenheit"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Grad Fahrenheit"}\r
+                        other{"{0} Grad Fahrenheit"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Grads Fahrenheit"}\r
+                        other{"{0} Grad Fahrenheit"}\r
+                    }\r
+                }\r
                 dnam{"Grad Fahrenheit"}\r
+                gender{"neuter"}\r
                 one{"{0} Grad Fahrenheit"}\r
                 other{"{0} Grad Fahrenheit"}\r
             }\r
             generic{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Grad"}\r
+                        other{"{0} Grad"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Grad"}\r
+                        other{"{0} Grad"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Grads"}\r
+                        other{"{0} Grad"}\r
+                    }\r
+                }\r
                 dnam{"°"}\r
+                gender{"neuter"}\r
                 one{"{0} Grad"}\r
                 other{"{0} Grad"}\r
             }\r
             kelvin{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kelvin"}\r
+                        other{"{0} Kelvin"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kelvin"}\r
+                        other{"{0} Kelvin"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kelvins"}\r
+                        other{"{0} Kelvin"}\r
+                    }\r
+                }\r
                 dnam{"Kelvin"}\r
+                gender{"neuter"}\r
                 one{"{0} Kelvin"}\r
                 other{"{0} Kelvin"}\r
             }\r
@@ -806,18 +1893,63 @@ de{
                 other{"{0} Bushel"}\r
             }\r
             centiliter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Zentiliter"}\r
+                        other{"{0} Zentiliter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Zentiliter"}\r
+                        other{"{0} Zentilitern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Zentiliters"}\r
+                        other{"{0} Zentiliter"}\r
+                    }\r
+                }\r
                 dnam{"Zentiliter"}\r
+                gender{"masculine"}\r
                 one{"{0} Zentiliter"}\r
                 other{"{0} Zentiliter"}\r
             }\r
             cubic-centimeter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kubikzentimeter"}\r
+                        other{"{0} Kubikzentimeter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kubikzentimeter"}\r
+                        other{"{0} Kubikzentimetern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kubikzentimeters"}\r
+                        other{"{0} Kubikzentimeter"}\r
+                    }\r
+                }\r
                 dnam{"Kubikzentimeter"}\r
+                gender{"masculine"}\r
                 one{"{0} Kubikzentimeter"}\r
                 other{"{0} Kubikzentimeter"}\r
                 per{"{0} pro Kubikzentimeter"}\r
             }\r
             cubic-foot{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kubikfuß"}\r
+                        other{"{0} Kubikfuß"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kubikfuß"}\r
+                        other{"{0} Kubikfuß"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kubikfußes"}\r
+                        other{"{0} Kubikfuß"}\r
+                    }\r
+                }\r
                 dnam{"Kubikfuß"}\r
+                gender{"masculine"}\r
                 one{"{0} Kubikfuß"}\r
                 other{"{0} Kubikfuß"}\r
             }\r
@@ -832,13 +1964,43 @@ de{
                 other{"{0} Kubikkilometer"}\r
             }\r
             cubic-meter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kubikmeter"}\r
+                        other{"{0} Kubikmeter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kubikmeter"}\r
+                        other{"{0} Kubikmetern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kubikmeters"}\r
+                        other{"{0} Kubikmeter"}\r
+                    }\r
+                }\r
                 dnam{"Kubikmeter"}\r
+                gender{"masculine"}\r
                 one{"{0} Kubikmeter"}\r
                 other{"{0} Kubikmeter"}\r
                 per{"{0} pro Kubikmeter"}\r
             }\r
             cubic-mile{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kubikmeile"}\r
+                        other{"{0} Kubikmeilen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kubikmeile"}\r
+                        other{"{0} Kubikmeilen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kubikmeile"}\r
+                        other{"{0} Kubikmeilen"}\r
+                    }\r
+                }\r
                 dnam{"Kubikmeilen"}\r
+                gender{"feminine"}\r
                 one{"{0} Kubikmeile"}\r
                 other{"{0} Kubikmeilen"}\r
             }\r
@@ -848,7 +2010,22 @@ de{
                 other{"{0} Kubikyards"}\r
             }\r
             cup{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Tasse"}\r
+                        other{"{0} Tassen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Tasse"}\r
+                        other{"{0} Tassen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Tasse"}\r
+                        other{"{0} Tassen"}\r
+                    }\r
+                }\r
                 dnam{"Tassen"}\r
+                gender{"feminine"}\r
                 one{"{0} Tasse"}\r
                 other{"{0} Tassen"}\r
             }\r
@@ -858,48 +2035,183 @@ de{
                 other{"{0} metrische Tassen"}\r
             }\r
             deciliter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Deziliter"}\r
+                        other{"{0} Deziliter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Deziliter"}\r
+                        other{"{0} Dezilitern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Deziliters"}\r
+                        other{"{0} Deziliter"}\r
+                    }\r
+                }\r
                 dnam{"Deziliter"}\r
+                gender{"masculine"}\r
                 one{"{0} Deziliter"}\r
                 other{"{0} Deziliter"}\r
             }\r
             dessert-spoon{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Dessertlöffel"}\r
+                        other{"{0} Dessertlöffel"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Dessertlöffel"}\r
+                        other{"{0} Dessertlöffeln"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Dessertlöffels"}\r
+                        other{"{0} Dessertlöffel"}\r
+                    }\r
+                }\r
                 dnam{"Dessertlöffel"}\r
+                gender{"masculine"}\r
                 one{"{0} Dessertlöffel"}\r
                 other{"{0} Dessertlöffel"}\r
             }\r
             dessert-spoon-imperial{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Imp. Dessertlöffel"}\r
+                        other{"{0} Imp. Dessertlöffel"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Imp. Dessertlöffel"}\r
+                        other{"{0} Imp. Dessertlöffeln"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Imp. Dessertlöffels"}\r
+                        other{"{0} Imp. Dessertlöffel"}\r
+                    }\r
+                }\r
                 dnam{"Imp. Dessertlöffel"}\r
+                gender{"masculine"}\r
                 one{"{0} Imp. Dessertlöffel"}\r
                 other{"{0} Imp. Dessertlöffel"}\r
             }\r
             dram{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Dram"}\r
+                        other{"{0} Dram"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Dram"}\r
+                        other{"{0} Dram"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Dram"}\r
+                        other{"{0} Dram"}\r
+                    }\r
+                }\r
                 dnam{"Dram"}\r
+                gender{"neuter"}\r
                 one{"{0} Dram"}\r
                 other{"{0} Dram"}\r
             }\r
             drop{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Tropfen"}\r
+                        other{"{0} Tropfen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Tropfen"}\r
+                        other{"{0} Tropfen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Tropfens"}\r
+                        other{"{0} Tropfen"}\r
+                    }\r
+                }\r
                 dnam{"Tropfen"}\r
+                gender{"masculine"}\r
                 one{"{0} Tropfen"}\r
                 other{"{0} Tropfen"}\r
             }\r
             fluid-ounce{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Flüssigunze"}\r
+                        other{"{0} Flüssigunzen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Flüssigunze"}\r
+                        other{"{0} Flüssigunzen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Flüssigunze"}\r
+                        other{"{0} Flüssigunzen"}\r
+                    }\r
+                }\r
                 dnam{"Flüssigunzen"}\r
+                gender{"feminine"}\r
                 one{"{0} Flüssigunze"}\r
                 other{"{0} Flüssigunzen"}\r
             }\r
             fluid-ounce-imperial{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Imp. Flüssigunze"}\r
+                        other{"{0} Imp. Flüssigunzen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Imp. Flüssigunze"}\r
+                        other{"{0} Imp. Flüssigunzen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Imp. Flüssigunze"}\r
+                        other{"{0} Imp. Flüssigunzen"}\r
+                    }\r
+                }\r
                 dnam{"Imp. Flüssigunzen"}\r
+                gender{"feminine"}\r
                 one{"{0} Imp. Flüssigunze"}\r
                 other{"{0} Imp. Flüssigunzen"}\r
             }\r
             gallon{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Gallone"}\r
+                        other{"{0} Gallonen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Gallone"}\r
+                        other{"{0} Gallonen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Gallone"}\r
+                        other{"{0} Gallonen"}\r
+                    }\r
+                }\r
                 dnam{"Gallone"}\r
+                gender{"feminine"}\r
                 one{"{0} Gallone"}\r
                 other{"{0} Gallonen"}\r
                 per{"{0} pro Gallone"}\r
             }\r
             gallon-imperial{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Imp. Gallone"}\r
+                        other{"{0} Imp. Gallonen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Imp. Gallone"}\r
+                        other{"{0} Imp. Gallonen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Imp. Gallone"}\r
+                        other{"{0} Imp. Gallonen"}\r
+                    }\r
+                }\r
                 dnam{"Imp. Gallonen"}\r
+                gender{"feminine"}\r
                 one{"{0} Imp. Gallone"}\r
                 other{"{0} Imp. Gallonen"}\r
                 per{"{0} pro Imp. Gallone"}\r
@@ -910,12 +2222,42 @@ de{
                 other{"{0} Hektoliter"}\r
             }\r
             jigger{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Jigger"}\r
+                        other{"{0} Jigger"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Jigger"}\r
+                        other{"{0} Jigger"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Jiggers"}\r
+                        other{"{0} Jigger"}\r
+                    }\r
+                }\r
                 dnam{"Jigger"}\r
+                gender{"masculine"}\r
                 one{"{0} Jigger"}\r
                 other{"{0} Jigger"}\r
             }\r
             liter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Liter"}\r
+                        other{"{0} Liter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Liter"}\r
+                        other{"{0} Litern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Liters"}\r
+                        other{"{0} Liter"}\r
+                    }\r
+                }\r
                 dnam{"Liter"}\r
+                gender{"masculine"}\r
                 one{"{0} Liter"}\r
                 other{"{0} Liter"}\r
                 per{"{0} pro Liter"}\r
@@ -926,17 +2268,62 @@ de{
                 other{"{0} Megaliter"}\r
             }\r
             milliliter{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Milliliter"}\r
+                        other{"{0} Milliliter"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Milliliter"}\r
+                        other{"{0} Millilitern"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Milliliters"}\r
+                        other{"{0} Milliliter"}\r
+                    }\r
+                }\r
                 dnam{"Milliliter"}\r
+                gender{"masculine"}\r
                 one{"{0} Milliliter"}\r
                 other{"{0} Milliliter"}\r
             }\r
             pinch{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Prise"}\r
+                        other{"{0} Prisen"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Prise"}\r
+                        other{"{0} Prisen"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Prise"}\r
+                        other{"{0} Prisen"}\r
+                    }\r
+                }\r
                 dnam{"Prise"}\r
+                gender{"feminine"}\r
                 one{"{0} Prise"}\r
                 other{"{0} Prisen"}\r
             }\r
             pint{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Pint"}\r
+                        other{"{0} Pints"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Pint"}\r
+                        other{"{0} Pints"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Pints"}\r
+                        other{"{0} Pints"}\r
+                    }\r
+                }\r
                 dnam{"Pints"}\r
+                gender{"neuter"}\r
                 one{"{0} Pint"}\r
                 other{"{0} Pints"}\r
             }\r
@@ -946,22 +2333,82 @@ de{
                 other{"{0} metrische Pints"}\r
             }\r
             quart{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Quart"}\r
+                        other{"{0} Quart"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Quart"}\r
+                        other{"{0} Quart"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Quart"}\r
+                        other{"{0} Quart"}\r
+                    }\r
+                }\r
                 dnam{"Quarts"}\r
+                gender{"neuter"}\r
                 one{"{0} Quart"}\r
                 other{"{0} Quart"}\r
             }\r
             quart-imperial{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Imp. Quart"}\r
+                        other{"{0} Imp. Quart"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Imp. Quart"}\r
+                        other{"{0} Imp. Quart"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Imp. Quart"}\r
+                        other{"{0} Imp. Quart"}\r
+                    }\r
+                }\r
                 dnam{"Imp. Quart"}\r
+                gender{"neuter"}\r
                 one{"{0} Imp. Quart"}\r
                 other{"{0} Imp. Quart"}\r
             }\r
             tablespoon{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Esslöffel"}\r
+                        other{"{0} Esslöffel"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Esslöffel"}\r
+                        other{"{0} Esslöffeln"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Esslöffels"}\r
+                        other{"{0} Esslöffel"}\r
+                    }\r
+                }\r
                 dnam{"Esslöffel"}\r
+                gender{"masculine"}\r
                 one{"{0} Esslöffel"}\r
                 other{"{0} Esslöffel"}\r
             }\r
             teaspoon{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Teelöffel"}\r
+                        other{"{0} Teelöffel"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Teelöffel"}\r
+                        other{"{0} Teelöffeln"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Teelöffels"}\r
+                        other{"{0} Teelöffel"}\r
+                    }\r
+                }\r
                 dnam{"Teelöffel"}\r
+                gender{"masculine"}\r
                 one{"{0} Teelöffel"}\r
                 other{"{0} Teelöffel"}\r
             }\r
@@ -1272,9 +2719,9 @@ de{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 one{"{0} mi"}\r
@@ -1332,9 +2779,9 @@ de{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -1631,7 +3078,7 @@ de{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
index 2c0c139..ac3970b 100644 (file)
@@ -5,18 +5,46 @@ de_CH{
     units{\r
         area{\r
             square-foot{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Quadratfuss"}\r
+                        other{"{0} Quadratfuss"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Quadratfuss"}\r
+                        other{"{0} Quadratfuss"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Quadratfusses"}\r
+                        other{"{0} Quadratfuss"}\r
+                    }\r
+                }\r
                 dnam{"Quadratfuss"}\r
                 one{"{0} Quadratfuss"}\r
                 other{"{0} Quadratfuss"}\r
             }\r
         }\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
             }\r
         }\r
         length{\r
             foot{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Fuss"}\r
+                        other{"{0} Fuss"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Fuss"}\r
+                        other{"{0} Fuss"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Fusses"}\r
+                        other{"{0} Fuss"}\r
+                    }\r
+                }\r
                 dnam{"Fuss"}\r
                 one{"{0} Fuss"}\r
                 other{"{0} Fuss"}\r
@@ -30,6 +58,20 @@ de_CH{
         }\r
         volume{\r
             cubic-foot{\r
+                case{\r
+                    accusative{\r
+                        one{"{0} Kubikfuss"}\r
+                        other{"{0} Kubikfuss"}\r
+                    }\r
+                    dative{\r
+                        one{"{0} Kubikfuss"}\r
+                        other{"{0} Kubikfuss"}\r
+                    }\r
+                    genitive{\r
+                        one{"{0} Kubikfusses"}\r
+                        other{"{0} Kubikfuss"}\r
+                    }\r
+                }\r
                 dnam{"Kubikfuss"}\r
                 one{"{0} Kubikfuss"}\r
                 other{"{0} Kubikfuss"}\r
index 9136300..42757cf 100644 (file)
@@ -1723,11 +1723,11 @@ dsb{
                 two{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
-                two{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
+                two{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index d9bbf79..0f8af6d 100644 (file)
@@ -105,7 +105,59 @@ el{
             }\r
         }\r
         compound{\r
+            1024p1{"κιμπι-{0}"}\r
+            1024p2{"μεμπι-{0}"}\r
+            1024p3{"γκιμπι-{0}"}\r
+            1024p4{"τεμπι-{0}"}\r
+            1024p5{"πεμπι-{0}"}\r
+            1024p6{"εξμπι-{0}"}\r
+            1024p7{"ζεμπι-{0}"}\r
+            1024p8{"γιομπι-{0}"}\r
+            10p-1{"δεκατο-{0}"}\r
+            10p-12{"πικο-{0}"}\r
+            10p-15{"φεμτο-{0}"}\r
+            10p-18{"αττο-{0}"}\r
+            10p-2{"εκατοστο-{0}"}\r
+            10p-21{"ζεπτο-{0}"}\r
+            10p-24{"γιοκτο-{0}"}\r
+            10p-3{"χιλιοστο-{0}"}\r
+            10p-6{"μικρο-{0}"}\r
+            10p-9{"νανο-{0}"}\r
+            10p1{"δεκα-{0}"}\r
+            10p12{"τερα-{0}"}\r
+            10p15{"πετα-{0}"}\r
+            10p18{"εξα-{0}"}\r
+            10p2{"εκατο-{0}"}\r
+            10p21{"ζεττα-{0}"}\r
+            10p24{"γιοττα-{0}"}\r
+            10p3{"χιλιο-{0}"}\r
+            10p6{"μεγα-{0}"}\r
+            10p9{"γιγα-{0}"}\r
             per{"{0} ανά {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"τετραγωνικό {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"τετραγωνικά {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"κυβικό {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"κυβικά {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ el{
                 one{"{0} καράτι"}\r
                 other{"{0} καράτια"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"χιλιοστόγραμμα ανά δεκατόλιτρο"}\r
                 one{"{0} χιλιοστόγραμμο ανά δεκατόλιτρο"}\r
                 other{"{0} χιλιοστόγραμμα ανά δεκατόλιτρο"}\r
@@ -1032,7 +1084,47 @@ el{
             }\r
         }\r
         compound{\r
+            1024p1{"κμπ-{0}"}\r
+            1024p2{"μμπ-{0}"}\r
+            1024p3{"γκμ-{0}"}\r
+            1024p4{"τμπ-{0}"}\r
+            1024p5{"πμπ-{0}"}\r
+            1024p6{"εξμ-{0}"}\r
+            1024p7{"ζμπ-{0}"}\r
+            1024p8{"γμπ-{0}"}\r
+            10p-1{"δεκατ-{0}"}\r
+            10p-12{"πικ-{0}"}\r
+            10p-15{"φεμτ-{0}"}\r
+            10p-18{"αττ-{0}"}\r
+            10p-2{"εκατοστ-{0}"}\r
+            10p-21{"ζεπ-{0}"}\r
+            10p-24{"γιοκ-{0}"}\r
+            10p-3{"χιλιοστ-{0}"}\r
+            10p-6{"μικρ-{0}"}\r
+            10p-9{"ναν-{0}"}\r
+            10p1{"δεκ-{0}"}\r
+            10p12{"τερ-{0}"}\r
+            10p15{"πετ-{0}"}\r
+            10p18{"εξ-{0}"}\r
+            10p2{"εκατ-{0}"}\r
+            10p21{"ζετ-{0}"}\r
+            10p24{"γιοτ-{0}"}\r
+            10p3{"χιλ-{0}"}\r
+            10p6{"μεγ-{0}"}\r
+            10p9{"γιγ-{0}"}\r
             per{"{0}/{1}"}\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1333,7 +1425,47 @@ el{
             }\r
         }\r
         compound{\r
+            1024p1{"κμπ-{0}"}\r
+            1024p2{"μμπ-{0}"}\r
+            1024p3{"γκμ-{0}"}\r
+            1024p4{"τμπ-{0}"}\r
+            1024p5{"πμπ-{0}"}\r
+            1024p6{"εξμ-{0}"}\r
+            1024p7{"ζμπ-{0}"}\r
+            1024p8{"γμπ-{0}"}\r
+            10p-1{"δκτ-{0}"}\r
+            10p-12{"πκ-{0}"}\r
+            10p-15{"φμτ-{0}"}\r
+            10p-18{"ατ-{0}"}\r
+            10p-2{"εκστ-{0}"}\r
+            10p-21{"ζπτ-{0}"}\r
+            10p-24{"γκτ-{0}"}\r
+            10p-3{"χλστ-{0}"}\r
+            10p-6{"μκρ-{0}"}\r
+            10p-9{"νν-{0}"}\r
+            10p1{"δκ-{0}"}\r
+            10p12{"τρ-{0}"}\r
+            10p15{"πτ-{0}"}\r
+            10p18{"εξ-{0}"}\r
+            10p2{"εκτ-{0}"}\r
+            10p21{"ζτ-{0}"}\r
+            10p24{"γττ-{0}"}\r
+            10p3{"χλ-{0}"}\r
+            10p6{"μγ-{0}"}\r
+            10p9{"γγ-{0}"}\r
             per{"{0}/{1}"}\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1341,7 +1473,7 @@ el{
                 one{"{0} κρτ"}\r
                 other{"{0} κρτ"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1703,8 +1835,8 @@ el{
             }\r
             micrometer{\r
                 dnam{"μικρόμετρα"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"μίλια"}\r
@@ -1816,9 +1948,9 @@ el{
                 other{"{0} τ."}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index c86fb2e..c39d575 100644 (file)
@@ -100,7 +100,59 @@ en{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} per {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"square {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"square {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"cubic {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"cubic {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         concentr{\r
@@ -109,7 +161,7 @@ en{
                 one{"{0} karat"}\r
                 other{"{0} karats"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligrams per deciliter"}\r
                 one{"{0} milligram per deciliter"}\r
                 other{"{0} milligrams per deciliter"}\r
@@ -1079,7 +1131,7 @@ en{
                 one{"{0}kt"}\r
                 other{"{0}kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0}mg/dL"}\r
                 other{"{0}mg/dL"}\r
@@ -1223,8 +1275,8 @@ en{
             }\r
             microsecond{\r
                 dnam{"μsec"}\r
-                one{"{0}µs"}\r
-                other{"{0}µs"}\r
+                one{"{0}μs"}\r
+                other{"{0}μs"}\r
             }\r
             millisecond{\r
                 dnam{"msec"}\r
@@ -1464,9 +1516,9 @@ en{
                 other{"{0}m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
+                dnam{"μm"}\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1578,9 +1630,9 @@ en{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0}µg"}\r
-                other{"{0}µg"}\r
+                dnam{"μg"}\r
+                one{"{0}μg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -2037,7 +2089,7 @@ en{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -2183,9 +2235,9 @@ en{
                 per{"{0}/h"}\r
             }\r
             microsecond{\r
-                dnam{"µsecs"}\r
-                one{"{0} µs"}\r
-                other{"{0} µs"}\r
+                dnam{"μsecs"}\r
+                one{"{0} μs"}\r
+                other{"{0} μs"}\r
             }\r
             millisecond{\r
                 dnam{"millisecs"}\r
@@ -2425,9 +2477,9 @@ en{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmeters"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmeters"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"miles"}\r
@@ -2526,9 +2578,9 @@ en{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index ad94299..31a92f9 100644 (file)
@@ -30,13 +30,16 @@ en_001{
                 per{"{0} per square metre"}\r
             }\r
         }\r
+        compound{\r
+            10p1{"deca{0}"}\r
+        }\r
         concentr{\r
             karat{\r
                 dnam{"carat"}\r
                 one{"{0} carat"}\r
                 other{"{0} carats"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligrams per decilitre"}\r
                 one{"{0} milligram per decilitre"}\r
                 other{"{0} milligrams per decilitre"}\r
@@ -318,7 +321,7 @@ en_001{
             }\r
         }\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0}mg/dl"}\r
                 other{"{0}mg/dl"}\r
@@ -448,7 +451,7 @@ en_001{
                 one{"{0} ct"}\r
                 other{"{0} ct"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -492,11 +495,6 @@ en_001{
                 one{"{0} hr"}\r
                 other{"{0} hrs"}\r
             }\r
-            microsecond{\r
-                dnam{"μsecs"}\r
-                one{"{0} μs"}\r
-                other{"{0} μs"}\r
-            }\r
             minute{\r
                 one{"{0} min"}\r
                 other{"{0} mins"}\r
@@ -517,7 +515,7 @@ en_001{
                 dnam{"metres"}\r
             }\r
             micrometer{\r
-                dnam{"µmetres"}\r
+                dnam{"μmetres"}\r
             }\r
         }\r
         mass{\r
index 2da1f17..c0f15da 100644 (file)
@@ -62,7 +62,7 @@ en_AU{
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0}mg/dL"}\r
                 other{"{0}mg/dL"}\r
@@ -167,7 +167,7 @@ en_AU{
             }\r
         }\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
index e7473da..951c500 100644 (file)
@@ -71,7 +71,7 @@ en_CA{
     }\r
     unitsNarrow{\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0}mg/dL"}\r
                 other{"{0}mg/dL"}\r
@@ -253,7 +253,7 @@ en_CA{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
index 4b02f0d..d920d3b 100644 (file)
@@ -11,11 +11,13 @@ es{
         acceleration{\r
             g-force{\r
                 dnam{"unidades de fuerza g"}\r
+                gender{"feminine"}\r
                 one{"{0} unidad de fuerza g"}\r
                 other{"{0} unidades de fuerza g"}\r
             }\r
             meter-per-square-second{\r
                 dnam{"metros por segundo al cuadrado"}\r
+                gender{"masculine"}\r
                 one{"{0} metro por segundo al cuadrado"}\r
                 other{"{0} metros por segundo al cuadrado"}\r
             }\r
@@ -50,6 +52,7 @@ es{
         area{\r
             acre{\r
                 dnam{"acres"}\r
+                gender{"masculine"}\r
                 one{"{0} acre"}\r
                 other{"{0} acres"}\r
             }\r
@@ -60,17 +63,20 @@ es{
             }\r
             hectare{\r
                 dnam{"hectáreas"}\r
+                gender{"feminine"}\r
                 one{"{0} hectárea"}\r
                 other{"{0} hectáreas"}\r
             }\r
             square-centimeter{\r
                 dnam{"centímetros cuadrados"}\r
+                gender{"masculine"}\r
                 one{"{0} centímetro cuadrado"}\r
                 other{"{0} centímetros cuadrados"}\r
                 per{"{0} por centímetro cuadrado"}\r
             }\r
             square-foot{\r
                 dnam{"pies cuadrados"}\r
+                gender{"masculine"}\r
                 one{"{0} pie cuadrado"}\r
                 other{"{0} pies cuadrados"}\r
             }\r
@@ -82,18 +88,21 @@ es{
             }\r
             square-kilometer{\r
                 dnam{"kilómetros cuadrados"}\r
+                gender{"masculine"}\r
                 one{"{0} kilómetro cuadrado"}\r
                 other{"{0} kilómetros cuadrados"}\r
                 per{"{0} por kilómetro cuadrado"}\r
             }\r
             square-meter{\r
                 dnam{"metros cuadrados"}\r
+                gender{"masculine"}\r
                 one{"{0} metro cuadrado"}\r
                 other{"{0} metros cuadrados"}\r
                 per{"{0} por metro cuadrado"}\r
             }\r
             square-mile{\r
                 dnam{"millas cuadradas"}\r
+                gender{"feminine"}\r
                 one{"{0} milla cuadrada"}\r
                 other{"{0} millas cuadradas"}\r
                 per{"{0} por milla cuadrada"}\r
@@ -105,7 +114,71 @@ es{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deca{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} por {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} cuadrado"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} cuadrada"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} cuadrados"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} cuadradas"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} cúbico"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} cúbica"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} cúbicos"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} cúbicas"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -114,7 +187,7 @@ es{
                 one{"{0} quilate"}\r
                 other{"{0} quilates"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramos por decilitro"}\r
                 one{"{0} miligramo por decilitro"}\r
                 other{"{0} miligramos por decilitro"}\r
@@ -131,6 +204,7 @@ es{
             }\r
             percent{\r
                 dnam{"por ciento"}\r
+                gender{"masculine"}\r
                 one{"{0} por ciento"}\r
                 other{"{0} por ciento"}\r
             }\r
@@ -153,6 +227,7 @@ es{
         consumption{\r
             liter-per-100-kilometer{\r
                 dnam{"litros por 100 kilómetros"}\r
+                gender{"masculine"}\r
                 one{"{0} litro por 100 kilómetros"}\r
                 other{"{0} litros por 100 kilómetros"}\r
             }\r
@@ -163,11 +238,13 @@ es{
             }\r
             mile-per-gallon{\r
                 dnam{"millas por galón"}\r
+                gender{"feminine"}\r
                 one{"{0} milla por galón"}\r
                 other{"{0} millas por galón"}\r
             }\r
             mile-per-gallon-imperial{\r
                 dnam{"millas por galón imperial"}\r
+                gender{"feminine"}\r
                 one{"{0} milla por galón imperial"}\r
                 other{"{0} millas por galón imperial"}\r
             }\r
@@ -182,41 +259,49 @@ es{
         digital{\r
             bit{\r
                 dnam{"bits"}\r
+                gender{"masculine"}\r
                 one{"{0} bit"}\r
                 other{"{0} bits"}\r
             }\r
             byte{\r
                 dnam{"bytes"}\r
+                gender{"masculine"}\r
                 one{"{0} byte"}\r
                 other{"{0} bytes"}\r
             }\r
             gigabit{\r
                 dnam{"gigabits"}\r
+                gender{"masculine"}\r
                 one{"{0} gigabit"}\r
                 other{"{0} gigabits"}\r
             }\r
             gigabyte{\r
                 dnam{"gigabytes"}\r
+                gender{"masculine"}\r
                 one{"{0} gigabyte"}\r
                 other{"{0} gigabytes"}\r
             }\r
             kilobit{\r
                 dnam{"kilobits"}\r
+                gender{"masculine"}\r
                 one{"{0} kilobit"}\r
                 other{"{0} kilobits"}\r
             }\r
             kilobyte{\r
                 dnam{"kilobytes"}\r
+                gender{"masculine"}\r
                 one{"{0} kilobyte"}\r
                 other{"{0} kilobytes"}\r
             }\r
             megabit{\r
                 dnam{"megabits"}\r
+                gender{"masculine"}\r
                 one{"{0} megabit"}\r
                 other{"{0} megabits"}\r
             }\r
             megabyte{\r
                 dnam{"megabytes"}\r
+                gender{"masculine"}\r
                 one{"{0} megabyte"}\r
                 other{"{0} megabytes"}\r
             }\r
@@ -232,6 +317,7 @@ es{
             }\r
             terabyte{\r
                 dnam{"terabytes"}\r
+                gender{"masculine"}\r
                 one{"{0} terabyte"}\r
                 other{"{0} terabytes"}\r
             }\r
@@ -244,6 +330,7 @@ es{
             }\r
             day{\r
                 dnam{"días"}\r
+                gender{"masculine"}\r
                 one{"{0} día"}\r
                 other{"{0} días"}\r
                 per{"{0} por día"}\r
@@ -255,6 +342,7 @@ es{
             }\r
             hour{\r
                 dnam{"horas"}\r
+                gender{"feminine"}\r
                 one{"{0} hora"}\r
                 other{"{0} horas"}\r
                 per{"{0} por hora"}\r
@@ -271,12 +359,14 @@ es{
             }\r
             minute{\r
                 dnam{"minutos"}\r
+                gender{"masculine"}\r
                 one{"{0} minuto"}\r
                 other{"{0} minutos"}\r
                 per{"{0} por minuto"}\r
             }\r
             month{\r
                 dnam{"meses"}\r
+                gender{"masculine"}\r
                 one{"{0} mes"}\r
                 other{"{0} meses"}\r
                 per{"{0} por mes"}\r
@@ -288,18 +378,21 @@ es{
             }\r
             second{\r
                 dnam{"segundos"}\r
+                gender{"masculine"}\r
                 one{"{0} segundo"}\r
                 other{"{0} segundos"}\r
                 per{"{0} por segundo"}\r
             }\r
             week{\r
                 dnam{"semanas"}\r
+                gender{"feminine"}\r
                 one{"{0} semana"}\r
                 other{"{0} semanas"}\r
                 per{"{0} por semana"}\r
             }\r
             year{\r
                 dnam{"años"}\r
+                gender{"masculine"}\r
                 one{"{0} año"}\r
                 other{"{0} años"}\r
                 per{"{0} por año"}\r
@@ -345,6 +438,7 @@ es{
             }\r
             foodcalorie{\r
                 dnam{"kilocalorías"}\r
+                gender{"feminine"}\r
                 one{"{0} kilocaloría"}\r
                 other{"{0} kilocalorías"}\r
             }\r
@@ -355,6 +449,7 @@ es{
             }\r
             kilocalorie{\r
                 dnam{"kilocalorías"}\r
+                gender{"feminine"}\r
                 one{"{0} kilocaloría"}\r
                 other{"{0} kilocalorías"}\r
             }\r
@@ -458,6 +553,7 @@ es{
             }\r
             centimeter{\r
                 dnam{"centímetros"}\r
+                gender{"masculine"}\r
                 one{"{0} centímetro"}\r
                 other{"{0} centímetros"}\r
                 per{"{0} por centímetro"}\r
@@ -479,6 +575,7 @@ es{
             }\r
             foot{\r
                 dnam{"pies"}\r
+                gender{"masculine"}\r
                 one{"{0} pie"}\r
                 other{"{0} pies"}\r
                 per{"{0} por pie"}\r
@@ -490,12 +587,14 @@ es{
             }\r
             inch{\r
                 dnam{"pulgadas"}\r
+                gender{"feminine"}\r
                 one{"{0} pulgada"}\r
                 other{"{0} pulgadas"}\r
                 per{"{0} por pulgada"}\r
             }\r
             kilometer{\r
                 dnam{"kilómetros"}\r
+                gender{"masculine"}\r
                 one{"{0} kilómetro"}\r
                 other{"{0} kilómetros"}\r
                 per{"{0} por kilómetro"}\r
@@ -507,6 +606,7 @@ es{
             }\r
             meter{\r
                 dnam{"metros"}\r
+                gender{"masculine"}\r
                 one{"{0} metro"}\r
                 other{"{0} metros"}\r
                 per{"{0} por metro"}\r
@@ -518,6 +618,7 @@ es{
             }\r
             mile{\r
                 dnam{"millas"}\r
+                gender{"feminine"}\r
                 one{"{0} milla"}\r
                 other{"{0} millas"}\r
             }\r
@@ -528,6 +629,7 @@ es{
             }\r
             millimeter{\r
                 dnam{"milímetros"}\r
+                gender{"masculine"}\r
                 one{"{0} milímetro"}\r
                 other{"{0} milímetros"}\r
             }\r
@@ -543,11 +645,13 @@ es{
             }\r
             parsec{\r
                 dnam{"parsecs"}\r
+                gender{"masculine"}\r
                 one{"{0} parsec"}\r
                 other{"{0} parsecs"}\r
             }\r
             picometer{\r
                 dnam{"picómetros"}\r
+                gender{"masculine"}\r
                 one{"{0} picómetro"}\r
                 other{"{0} picómetros"}\r
             }\r
@@ -558,11 +662,13 @@ es{
             }\r
             solar-radius{\r
                 dnam{"radios solares"}\r
+                gender{"masculine"}\r
                 one{"{0} radio solar"}\r
                 other{"{0} radios solares"}\r
             }\r
             yard{\r
                 dnam{"yardas"}\r
+                gender{"feminine"}\r
                 one{"{0} yarda"}\r
                 other{"{0} yardas"}\r
             }\r
@@ -585,6 +691,7 @@ es{
             }\r
             solar-luminosity{\r
                 dnam{"luminosidades solares"}\r
+                gender{"feminine"}\r
                 one{"{0} luminosidad solar"}\r
                 other{"{0} luminosidades solares"}\r
             }\r
@@ -597,27 +704,32 @@ es{
             }\r
             dalton{\r
                 dnam{"daltones"}\r
+                gender{"masculine"}\r
                 one{"{0} dalton"}\r
                 other{"{0} daltones"}\r
             }\r
             earth-mass{\r
                 dnam{"masas terrestres"}\r
+                gender{"feminine"}\r
                 one{"{0} masa terrestre"}\r
                 other{"{0} masas terrestres"}\r
             }\r
             grain{\r
                 dnam{"granos"}\r
+                gender{"masculine"}\r
                 one{"{0} grano"}\r
                 other{"{0} granos"}\r
             }\r
             gram{\r
                 dnam{"gramos"}\r
+                gender{"masculine"}\r
                 one{"{0} gramo"}\r
                 other{"{0} gramos"}\r
                 per{"{0} por gramo"}\r
             }\r
             kilogram{\r
                 dnam{"kilogramos"}\r
+                gender{"masculine"}\r
                 one{"{0} kilogramo"}\r
                 other{"{0} kilogramos"}\r
                 per{"{0} por kilogramo"}\r
@@ -634,11 +746,13 @@ es{
             }\r
             milligram{\r
                 dnam{"miligramos"}\r
+                gender{"masculine"}\r
                 one{"{0} miligramo"}\r
                 other{"{0} miligramos"}\r
             }\r
             ounce{\r
                 dnam{"onzas"}\r
+                gender{"feminine"}\r
                 one{"{0} onza"}\r
                 other{"{0} onzas"}\r
                 per{"{0} por onza"}\r
@@ -650,12 +764,14 @@ es{
             }\r
             pound{\r
                 dnam{"libras"}\r
+                gender{"feminine"}\r
                 one{"{0} libra"}\r
                 other{"{0} libras"}\r
                 per{"{0} por libra"}\r
             }\r
             solar-mass{\r
                 dnam{"masas solares"}\r
+                gender{"feminine"}\r
                 one{"{0} masa solar"}\r
                 other{"{0} masas solares"}\r
             }\r
@@ -683,11 +799,13 @@ es{
             }\r
             kilowatt{\r
                 dnam{"kilovatios"}\r
+                gender{"masculine"}\r
                 one{"{0} kilovatio"}\r
                 other{"{0} kilovatios"}\r
             }\r
             megawatt{\r
                 dnam{"megavatios"}\r
+                gender{"masculine"}\r
                 one{"{0} megavatio"}\r
                 other{"{0} megavatios"}\r
             }\r
@@ -698,6 +816,7 @@ es{
             }\r
             watt{\r
                 dnam{"vatios"}\r
+                gender{"masculine"}\r
                 one{"{0} vatio"}\r
                 other{"{0} vatios"}\r
             }\r
@@ -725,6 +844,7 @@ es{
             }\r
             kilopascal{\r
                 dnam{"kilopascales"}\r
+                gender{"masculine"}\r
                 one{"{0} kilopascal"}\r
                 other{"{0} kilopascales"}\r
             }\r
@@ -757,6 +877,7 @@ es{
         speed{\r
             kilometer-per-hour{\r
                 dnam{"kilómetros por hora"}\r
+                gender{"masculine"}\r
                 one{"{0} kilómetro por hora"}\r
                 other{"{0} kilómetros por hora"}\r
             }\r
@@ -767,11 +888,13 @@ es{
             }\r
             meter-per-second{\r
                 dnam{"metros por segundo"}\r
+                gender{"masculine"}\r
                 one{"{0} metro por segundo"}\r
                 other{"{0} metros por segundo"}\r
             }\r
             mile-per-hour{\r
                 dnam{"millas por hora"}\r
+                gender{"feminine"}\r
                 one{"{0} milla por hora"}\r
                 other{"{0} millas por hora"}\r
             }\r
@@ -779,21 +902,25 @@ es{
         temperature{\r
             celsius{\r
                 dnam{"grados Celsius"}\r
+                gender{"masculine"}\r
                 one{"{0} grado Celsius"}\r
                 other{"{0} grados Celsius"}\r
             }\r
             fahrenheit{\r
                 dnam{"grados Fahrenheit"}\r
+                gender{"masculine"}\r
                 one{"{0} grado Fahrenheit"}\r
                 other{"{0} grados Fahrenheit"}\r
             }\r
             generic{\r
                 dnam{"grados"}\r
+                gender{"masculine"}\r
                 one{"{0} grado"}\r
                 other{"{0} grados"}\r
             }\r
             kelvin{\r
                 dnam{"kelvin"}\r
+                gender{"masculine"}\r
                 one{"{0} kelvin"}\r
                 other{"{0} kelvin"}\r
             }\r
@@ -828,38 +955,45 @@ es{
             }\r
             centiliter{\r
                 dnam{"centilitros"}\r
+                gender{"masculine"}\r
                 one{"{0} centilitro"}\r
                 other{"{0} centilitros"}\r
             }\r
             cubic-centimeter{\r
                 dnam{"centímetros cúbicos"}\r
+                gender{"masculine"}\r
                 one{"{0} centímetro cúbico"}\r
                 other{"{0} centímetros cúbicos"}\r
                 per{"{0} por centímetro cúbico"}\r
             }\r
             cubic-foot{\r
                 dnam{"pies cúbicos"}\r
+                gender{"masculine"}\r
                 one{"{0} pie cúbico"}\r
                 other{"{0} pies cúbicos"}\r
             }\r
             cubic-inch{\r
                 dnam{"pulgadas cúbicas"}\r
+                gender{"feminine"}\r
                 one{"{0} pulgada cúbica"}\r
                 other{"{0} pulgadas cúbicas"}\r
             }\r
             cubic-kilometer{\r
                 dnam{"kilómetros cúbicos"}\r
+                gender{"masculine"}\r
                 one{"{0} kilómetro cúbico"}\r
                 other{"{0} kilómetros cúbicos"}\r
             }\r
             cubic-meter{\r
                 dnam{"metros cúbicos"}\r
+                gender{"masculine"}\r
                 one{"{0} metro cúbico"}\r
                 other{"{0} metros cúbicos"}\r
                 per{"{0} por metro cúbico"}\r
             }\r
             cubic-mile{\r
                 dnam{"millas cúbicas"}\r
+                gender{"feminine"}\r
                 one{"{0} milla cúbica"}\r
                 other{"{0} millas cúbicas"}\r
             }\r
@@ -870,6 +1004,7 @@ es{
             }\r
             cup{\r
                 dnam{"tazas"}\r
+                gender{"feminine"}\r
                 one{"{0} taza"}\r
                 other{"{0} tazas"}\r
             }\r
@@ -880,63 +1015,75 @@ es{
             }\r
             deciliter{\r
                 dnam{"decilitros"}\r
+                gender{"masculine"}\r
                 one{"{0} decilitro"}\r
                 other{"{0} decilitros"}\r
             }\r
             dessert-spoon{\r
                 dnam{"cucharadas de postre"}\r
+                gender{"feminine"}\r
                 one{"{0} cucharada de postre"}\r
                 other{"{0} cucharadas de postre"}\r
             }\r
             dessert-spoon-imperial{\r
                 dnam{"cucharadas de postre imperiales"}\r
+                gender{"feminine"}\r
                 one{"{0} cucharada de postre imperial"}\r
                 other{"{0} cucharadas de postre imperiales"}\r
             }\r
             dram{\r
                 dnam{"dracmas líquidas"}\r
+                gender{"feminine"}\r
                 one{"{0} dracma líquida"}\r
                 other{"{0} dracmas líquidas"}\r
             }\r
             drop{\r
                 dnam{"gotas"}\r
+                gender{"feminine"}\r
                 one{"{0} gota"}\r
                 other{"{0} gotas"}\r
             }\r
             fluid-ounce{\r
                 dnam{"onzas líquidas"}\r
+                gender{"feminine"}\r
                 one{"{0} onza líquida"}\r
                 other{"{0} onzas líquidas"}\r
             }\r
             fluid-ounce-imperial{\r
                 dnam{"onzas líquidas imperiales"}\r
+                gender{"feminine"}\r
                 one{"{0} onza líquida imperial"}\r
                 other{"{0} onzas líquidas imperiales"}\r
             }\r
             gallon{\r
                 dnam{"galones"}\r
+                gender{"masculine"}\r
                 one{"{0} galón"}\r
                 other{"{0} galones"}\r
                 per{"{0} por galón"}\r
             }\r
             gallon-imperial{\r
                 dnam{"galones imperiales"}\r
+                gender{"masculine"}\r
                 one{"{0} galón imperial"}\r
                 other{"{0} galones imperiales"}\r
                 per{"{0} por galón imperial"}\r
             }\r
             hectoliter{\r
                 dnam{"hectolitros"}\r
+                gender{"masculine"}\r
                 one{"{0} hectolitro"}\r
                 other{"{0} hectolitros"}\r
             }\r
             jigger{\r
                 dnam{"vasos medidores"}\r
+                gender{"masculine"}\r
                 one{"{0} vaso medidor"}\r
                 other{"{0} vasos medidores"}\r
             }\r
             liter{\r
                 dnam{"litros"}\r
+                gender{"masculine"}\r
                 one{"{0} litro"}\r
                 other{"{0} litros"}\r
                 per{"{0} por litro"}\r
@@ -948,16 +1095,19 @@ es{
             }\r
             milliliter{\r
                 dnam{"mililitros"}\r
+                gender{"masculine"}\r
                 one{"{0} mililitro"}\r
                 other{"{0} mililitros"}\r
             }\r
             pinch{\r
                 dnam{"pizcas"}\r
+                gender{"feminine"}\r
                 one{"{0} pizca"}\r
                 other{"{0} pizcas"}\r
             }\r
             pint{\r
                 dnam{"pintas"}\r
+                gender{"feminine"}\r
                 one{"{0} pinta"}\r
                 other{"{0} pintas"}\r
             }\r
@@ -968,21 +1118,25 @@ es{
             }\r
             quart{\r
                 dnam{"cuartos"}\r
+                gender{"masculine"}\r
                 one{"{0} cuarto"}\r
                 other{"{0} cuartos"}\r
             }\r
             quart-imperial{\r
                 dnam{"cuartos imperiales"}\r
+                gender{"masculine"}\r
                 one{"{0} cuarto imperial"}\r
                 other{"{0} cuartos imperiales"}\r
             }\r
             tablespoon{\r
                 dnam{"cucharadas"}\r
+                gender{"feminine"}\r
                 one{"{0} cucharada"}\r
                 other{"{0} cucharadas"}\r
             }\r
             teaspoon{\r
                 dnam{"cucharaditas"}\r
+                gender{"feminine"}\r
                 one{"{0} cucharadita"}\r
                 other{"{0} cucharaditas"}\r
             }\r
@@ -1036,7 +1190,52 @@ es{
             }\r
         }\r
         compound{\r
+            1024p2{"Mi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1169,9 +1368,9 @@ es{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
+                dnam{"μm"}\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1434,7 +1633,51 @@ es{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1443,7 +1686,7 @@ es{
                 one{"{0} ct"}\r
                 other{"{0} ct"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1814,9 +2057,9 @@ es{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1899,9 +2142,9 @@ es{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 259e184..2859bd4 100644 (file)
@@ -11,7 +11,7 @@ es_419{
             }\r
         }\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
             }\r
         }\r
@@ -157,9 +157,9 @@ es_419{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0}µg"}\r
-                other{"{0}µg"}\r
+                dnam{"μg"}\r
+                one{"{0}μg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 8365f3c..6f57d3d 100644 (file)
@@ -5,7 +5,7 @@ es_MX{
     %%Parent{"es_419"}\r
     units{\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramos por decilitro"}\r
             }\r
         }\r
index 5a3aa7c..317e743 100644 (file)
@@ -4,8 +4,22 @@
 es_US{\r
     %%Parent{"es_419"}\r
     units{\r
+        compound{\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} cúbico"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"cúbico{0}"}\r
+                    }\r
+                }\r
+            }\r
+        }\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramos por decilitro"}\r
             }\r
         }\r
index 7a5eb72..8e893cf 100644 (file)
@@ -105,7 +105,59 @@ et{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"jobe{0}"}\r
+            10p-1{"detsi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"jokto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zeta{0}"}\r
+            10p24{"jota{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} {1} kohta"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"ruut{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ruut{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kuup{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kuup{0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -114,7 +166,7 @@ et{
                 one{"{0} karaat"}\r
                 other{"{0} karaati"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligrammid detsiliitri kohta"}\r
                 one{"{0} milligramm detsiliitri kohta"}\r
                 other{"{0} milligrammi detsiliitri kohta"}\r
@@ -1379,7 +1431,7 @@ et{
                 one{"{0} ct"}\r
                 other{"{0} ct"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1767,9 +1819,9 @@ et{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1873,9 +1925,9 @@ et{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 5cb9dfd..31bd2e4 100644 (file)
@@ -100,7 +100,59 @@ eu{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"dezi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"zenti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"jokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} karratu"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} karratu"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} kubiko"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} kubiko"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         concentr{\r
@@ -109,7 +161,7 @@ eu{
                 one{"{0} kilate"}\r
                 other{"{0} kilate"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramo dezilitro bakoitzeko"}\r
                 one{"{0} miligramo dezilitro bakoitzeko"}\r
                 other{"{0} miligramo dezilitro bakoitzeko"}\r
@@ -1008,8 +1060,16 @@ eu{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
-            times{"{0}{1}"}\r
+            times{"{0}-{1}"}\r
         }\r
         concentr{\r
             percent{\r
@@ -1303,8 +1363,16 @@ eu{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
-            times{"{0}{1}"}\r
+            times{"{0}-{1}"}\r
         }\r
         concentr{\r
             karat{\r
@@ -1312,7 +1380,7 @@ eu{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1683,9 +1751,9 @@ eu{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"milia"}\r
@@ -1793,9 +1861,9 @@ eu{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 153749a..91be180 100644 (file)
@@ -103,7 +103,59 @@ fa{
             }\r
         }\r
         compound{\r
+            1024p1{"کیلوبیت {0}"}\r
+            1024p2{"مگابیت {0}"}\r
+            1024p3{"گیگابیت {0}"}\r
+            1024p4{"ترابیت {0}"}\r
+            1024p5{"پتابیت {0}"}\r
+            1024p6{"اگزابیت {0}"}\r
+            1024p7{"زتابیت {0}"}\r
+            1024p8{"یوتابیت {0}"}\r
+            10p-1{"دسی{0}"}\r
+            10p-12{"پیکو{0}"}\r
+            10p-15{"فمتو{0}"}\r
+            10p-18{"آتو{0}"}\r
+            10p-2{"سانتی{0}"}\r
+            10p-21{"زپتو{0}"}\r
+            10p-24{"یوکتو{0}"}\r
+            10p-3{"میلی{0}"}\r
+            10p-6{"میکرو{0}"}\r
+            10p-9{"نانو{0}"}\r
+            10p1{"دکا{0}"}\r
+            10p12{"ترا{0}"}\r
+            10p15{"پتا{0}"}\r
+            10p18{"اگزا{0}"}\r
+            10p2{"هکتو{0}"}\r
+            10p21{"زتا{0}"}\r
+            10p24{"یوتا{0}"}\r
+            10p3{"کیلو{0}"}\r
+            10p6{"مگا{0}"}\r
+            10p9{"گیگا{0}"}\r
             per{"{0} در {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} مربع"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} مربع"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} مکعب"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} مکعب"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -111,7 +163,7 @@ fa{
                 one{"{0} عیار"}\r
                 other{"{0} عیار"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"میلی‌گرم در دسی‌لیتر"}\r
                 one{"{0} میلی‌گرم در دسی‌لیتر"}\r
                 other{"{0} میلی‌گرم در دسی‌لیتر"}\r
@@ -1040,6 +1092,26 @@ fa{
             }\r
         }\r
         compound{\r
+            10p-1{"دسی{0}"}\r
+            10p-12{"پیکو{0}"}\r
+            10p-15{"فمتو{0}"}\r
+            10p-18{"آتو{0}"}\r
+            10p-2{"سانتی{0}"}\r
+            10p-21{"زپتو{0}"}\r
+            10p-24{"یوکتو{0}"}\r
+            10p-3{"میلی{0}"}\r
+            10p-6{"میکرو{0}"}\r
+            10p-9{"نانو{0}"}\r
+            10p1{"دکا{0}"}\r
+            10p12{"ترا{0}"}\r
+            10p15{"پتا{0}"}\r
+            10p18{"اگزا{0}"}\r
+            10p2{"هکتو{0}"}\r
+            10p21{"زتا{0}"}\r
+            10p24{"یوتا{0}"}\r
+            10p3{"کیلو{0}"}\r
+            10p6{"مگا{0}"}\r
+            10p9{"گیگا{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1195,8 +1267,8 @@ fa{
                 per{"{0}/متر"}\r
             }\r
             micrometer{\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"مایل"}\r
@@ -1377,13 +1449,13 @@ fa{
         acceleration{\r
             g-force{\r
                 dnam{"گرانش"}\r
-                one{"{0} <LRM>G"}\r
-                other{"{0} <LRM>G"}\r
+                one{"{0} G"}\r
+                other{"{0} G"}\r
             }\r
             meter-per-square-second{\r
                 dnam{"متر/مجذور ثانیه"}\r
-                one{"{0}<LRM> m/s²"}\r
-                other{"{0}<LRM> m/s²"}\r
+                one{"{0} m/s²"}\r
+                other{"{0} m/s²"}\r
             }\r
         }\r
         angle{\r
@@ -1427,12 +1499,12 @@ fa{
             hectare{\r
                 dnam{"هکتار"}\r
                 one{"{0} هک"}\r
-                other{"{0} <LRM>ha"}\r
+                other{"{0} ha"}\r
             }\r
             square-centimeter{\r
                 one{"{0}‎ cm²"}\r
                 other{"{0}‎ cm²"}\r
-                per{"{0}<LRM>/cm²"}\r
+                per{"{0}/cm²"}\r
             }\r
             square-foot{\r
                 dnam{"فوت مربع"}\r
@@ -1441,9 +1513,9 @@ fa{
             }\r
             square-inch{\r
                 dnam{"اینچ مربع"}\r
-                one{"{0}<LRM>/in²"}\r
-                other{"{0}<LRM>/in²"}\r
-                per{"{0}<LRM>/in²"}\r
+                one{"{0}/in²"}\r
+                other{"{0}/in²"}\r
+                per{"{0}/in²"}\r
             }\r
             square-kilometer{\r
                 dnam{"کیلومتر مربع"}\r
@@ -1453,23 +1525,43 @@ fa{
             }\r
             square-meter{\r
                 dnam{"متر مربع"}\r
-                one{"{0} <LRM>m²"}\r
-                other{"{0} <LRM>m²"}\r
-                per{"{0}<LRM>/m²"}\r
+                one{"{0} m²"}\r
+                other{"{0} m²"}\r
+                per{"{0}/m²"}\r
             }\r
             square-mile{\r
                 dnam{"مایل مربع"}\r
                 one{"{0} مایل مربع"}\r
                 other{"{0} مایل مربع"}\r
-                per{"{0}<LRM>/mi²"}\r
+                per{"{0}/mi²"}\r
             }\r
             square-yard{\r
                 dnam{"یارد مربع"}\r
-                one{"{0} <LRM>yd²"}\r
-                other{"{0} <LRM>yd²"}\r
+                one{"{0} yd²"}\r
+                other{"{0} yd²"}\r
             }\r
         }\r
         compound{\r
+            10p-1{"دسی{0}"}\r
+            10p-12{"پیکو{0}"}\r
+            10p-15{"فمتو{0}"}\r
+            10p-18{"آتو{0}"}\r
+            10p-2{"سانتی{0}"}\r
+            10p-21{"زپتو{0}"}\r
+            10p-24{"یوکتو{0}"}\r
+            10p-3{"میلی{0}"}\r
+            10p-6{"میکرو{0}"}\r
+            10p-9{"نانو{0}"}\r
+            10p1{"دکا{0}"}\r
+            10p12{"ترا{0}"}\r
+            10p15{"پتا{0}"}\r
+            10p18{"اگزا{0}"}\r
+            10p2{"هکتو{0}"}\r
+            10p21{"زتا{0}"}\r
+            10p24{"یوتا{0}"}\r
+            10p3{"کیلو{0}"}\r
+            10p6{"مگا{0}"}\r
+            10p9{"گیگا{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1479,7 +1571,7 @@ fa{
                 one{"{0} عیار"}\r
                 other{"{0} عیار"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"میلی‌گرم در دسی‌لیتر"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1557,48 +1649,48 @@ fa{
             }\r
             gigabit{\r
                 dnam{"گیگابیت"}\r
-                one{"{0} <LRM>Gb"}\r
-                other{"{0} <LRM>Gb"}\r
+                one{"{0} Gb"}\r
+                other{"{0} Gb"}\r
             }\r
             gigabyte{\r
-                dnam{"گیگابایت"}\r
-                one{"{0} <LRM>GB"}\r
-                other{"{0} <LRM>GB"}\r
+                dnam{"GB"}\r
+                one{"{0} GB"}\r
+                other{"{0} GB"}\r
             }\r
             kilobit{\r
                 dnam{"کیلوبیت"}\r
-                one{"{0} <LRM>kb"}\r
-                other{"{0} <LRM>kb"}\r
+                one{"{0} kb"}\r
+                other{"{0} kb"}\r
             }\r
             kilobyte{\r
                 dnam{"کیلوبایت"}\r
-                one{"{0} <LRM>kB"}\r
-                other{"{0} <LRM>kB"}\r
+                one{"{0} kB"}\r
+                other{"{0} kB"}\r
             }\r
             megabit{\r
                 dnam{"مگابیت"}\r
-                one{"{0} <LRM>Mb"}\r
-                other{"{0} <LRM>Mb"}\r
+                one{"{0} Mb"}\r
+                other{"{0} Mb"}\r
             }\r
             megabyte{\r
-                dnam{"مگابایت"}\r
-                one{"{0} <LRM>MB"}\r
-                other{"{0} <LRM>MB"}\r
+                dnam{"MB"}\r
+                one{"{0} MB"}\r
+                other{"{0} MB"}\r
             }\r
             petabyte{\r
                 dnam{"پتابایت"}\r
-                one{"{0} <LRM>PB"}\r
-                other{"{0} <LRM>PB"}\r
+                one{"{0} PB"}\r
+                other{"{0} PB"}\r
             }\r
             terabit{\r
                 dnam{"ترابیت"}\r
-                one{"{0} <LRM>Tb"}\r
-                other{"{0} <LRM>Tb"}\r
+                one{"{0} Tb"}\r
+                other{"{0} Tb"}\r
             }\r
             terabyte{\r
                 dnam{"ترابایت"}\r
-                one{"{0} <LRM>TB"}\r
-                other{"{0} <LRM>TB"}\r
+                one{"{0} TB"}\r
+                other{"{0} TB"}\r
             }\r
         }\r
         duration{\r
@@ -1627,7 +1719,7 @@ fa{
             microsecond{\r
                 dnam{"میکروثانیه"}\r
                 one{"{0} میکروثانیه"}\r
-                other{"{0} <LRM>µs"}\r
+                other{"{0} μs"}\r
             }\r
             millisecond{\r
                 dnam{"میلی‌ثانیه"}\r
@@ -1648,8 +1740,8 @@ fa{
             }\r
             nanosecond{\r
                 dnam{"نانوثانیه"}\r
-                one{"{0} <LRM>ns"}\r
-                other{"{0} <LRM>ns"}\r
+                one{"{0} ns"}\r
+                other{"{0} ns"}\r
             }\r
             second{\r
                 dnam{"ثانیه"}\r
@@ -1781,102 +1873,102 @@ fa{
             }\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                one{"{0} <LRM>dpcm"}\r
-                other{"{0} <LRM>dpcm"}\r
+                one{"{0} dpcm"}\r
+                other{"{0} dpcm"}\r
             }\r
             dot-per-inch{\r
-                one{"{0} <LRM>dpi"}\r
-                other{"{0} <LRM>dpi"}\r
+                one{"{0} dpi"}\r
+                other{"{0} dpi"}\r
             }\r
             em{\r
-                one{"{0} <LRM>em"}\r
-                other{"{0} <LRM>em"}\r
+                one{"{0} em"}\r
+                other{"{0} em"}\r
             }\r
             megapixel{\r
-                one{"{0} <LRM>MP"}\r
-                other{"{0} <LRM>MP"}\r
+                one{"{0} MP"}\r
+                other{"{0} MP"}\r
             }\r
             pixel{\r
-                one{"{0} <LRM>px"}\r
-                other{"{0} <LRM>px"}\r
+                one{"{0} px"}\r
+                other{"{0} px"}\r
             }\r
             pixel-per-centimeter{\r
-                one{"{0} <LRM>ppcm"}\r
-                other{"{0} <LRM>ppcm"}\r
+                one{"{0} ppcm"}\r
+                other{"{0} ppcm"}\r
             }\r
             pixel-per-inch{\r
-                one{"{0} <LRM>ppi"}\r
-                other{"{0} <LRM>ppi"}\r
+                one{"{0} ppi"}\r
+                other{"{0} ppi"}\r
             }\r
         }\r
         length{\r
             astronomical-unit{\r
-                one{"{0} <LRM>au"}\r
-                other{"{0} <LRM>au"}\r
+                one{"{0} au"}\r
+                other{"{0} au"}\r
             }\r
             centimeter{\r
                 dnam{"cm"}\r
-                one{"{0} <LRM>cm"}\r
-                other{"{0} <LRM>cm"}\r
-                per{"{0}<LRM>/cm"}\r
+                one{"{0} cm"}\r
+                other{"{0} cm"}\r
+                per{"{0}/cm"}\r
             }\r
             decimeter{\r
-                one{"{0} <LRM>dm"}\r
-                other{"{0} <LRM>dm"}\r
+                one{"{0} dm"}\r
+                other{"{0} dm"}\r
             }\r
             earth-radius{\r
                 dnam{"R⊕"}\r
-                one{"{0} <LRM>R⊕"}\r
-                other{"{0} <LRM>R⊕"}\r
+                one{"{0} R⊕"}\r
+                other{"{0} R⊕"}\r
             }\r
             fathom{\r
                 dnam{"فاتوم"}\r
-                one{"{0} <LRM>fth"}\r
-                other{"{0} <LRM>fth"}\r
+                one{"{0} fth"}\r
+                other{"{0} fth"}\r
             }\r
             foot{\r
                 dnam{"فوت"}\r
-                one{"{0} <LRM>ft"}\r
-                other{"{0} <LRM>ft"}\r
-                per{"{0}<LRM>/ft"}\r
+                one{"{0} ft"}\r
+                other{"{0} ft"}\r
+                per{"{0}/ft"}\r
             }\r
             furlong{\r
                 dnam{"فرلانگ"}\r
-                one{"{0} <LRM>fur"}\r
-                other{"{0} <LRM>fur"}\r
+                one{"{0} fur"}\r
+                other{"{0} fur"}\r
             }\r
             inch{\r
                 dnam{"اینچ"}\r
-                one{"{0} <LRM>in"}\r
-                other{"{0} <LRM>in"}\r
-                per{"{0}<LRM>/in"}\r
+                one{"{0} in"}\r
+                other{"{0} in"}\r
+                per{"{0}/in"}\r
             }\r
             kilometer{\r
                 dnam{"کیلومتر"}\r
-                one{"{0} <LRM>km"}\r
-                other{"{0} <LRM>km"}\r
-                per{"{0}<LRM>/km"}\r
+                one{"{0} km"}\r
+                other{"{0} km"}\r
+                per{"{0}/km"}\r
             }\r
             light-year{\r
                 dnam{"سال نوری"}\r
-                one{"{0} <LRM>ly"}\r
-                other{"{0} <LRM>ly"}\r
+                one{"{0} ly"}\r
+                other{"{0} ly"}\r
             }\r
             meter{\r
                 dnam{"متر"}\r
-                one{"{0} <LRM>m"}\r
-                other{"{0} <LRM>m"}\r
-                per{"{0}<LRM>/m"}\r
+                one{"{0} m"}\r
+                other{"{0} m"}\r
+                per{"{0}/m"}\r
             }\r
             micrometer{\r
                 dnam{"میکرومتر"}\r
-                one{"{0} <LRM>µm"}\r
-                other{"{0} <LRM>µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"مایل"}\r
-                one{"{0} <LRM>mi"}\r
-                other{"{0} <LRM>mi"}\r
+                one{"{0} mi"}\r
+                other{"{0} mi"}\r
             }\r
             mile-scandinavian{\r
                 one{"{0}‎ smi"}\r
@@ -1884,41 +1976,41 @@ fa{
             }\r
             millimeter{\r
                 dnam{"mm"}\r
-                one{"{0} <LRM>mm"}\r
-                other{"{0} <LRM>mm"}\r
+                one{"{0} mm"}\r
+                other{"{0} mm"}\r
             }\r
             nanometer{\r
-                one{"{0} <LRM>nm"}\r
-                other{"{0} <LRM>nm"}\r
+                one{"{0} nm"}\r
+                other{"{0} nm"}\r
             }\r
             nautical-mile{\r
-                one{"{0} <LRM>nmi"}\r
-                other{"{0} <LRM>nmi"}\r
+                one{"{0} nmi"}\r
+                other{"{0} nmi"}\r
             }\r
             parsec{\r
                 dnam{"پارسک"}\r
-                one{"{0} <LRM>pc"}\r
-                other{"{0} <LRM>pc"}\r
+                one{"{0} pc"}\r
+                other{"{0} pc"}\r
             }\r
             picometer{\r
                 dnam{"pm"}\r
-                one{"{0} <LRM>pm"}\r
-                other{"{0} <LRM>pm"}\r
+                one{"{0} pm"}\r
+                other{"{0} pm"}\r
             }\r
             point{\r
                 dnam{"پوینت"}\r
-                one{"{0} <LRM>pt"}\r
-                other{"{0} <LRM>pt"}\r
+                one{"{0} pt"}\r
+                other{"{0} pt"}\r
             }\r
             solar-radius{\r
                 dnam{"شعاع خورشید"}\r
-                one{"{0} <LRM>R☉"}\r
-                other{"{0} <LRM>R☉"}\r
+                one{"{0} R☉"}\r
+                other{"{0} R☉"}\r
             }\r
             yard{\r
                 dnam{"یارد"}\r
-                one{"{0} <LRM>yd"}\r
-                other{"{0} <LRM>yd"}\r
+                one{"{0} yd"}\r
+                other{"{0} yd"}\r
             }\r
         }\r
         light{\r
@@ -1962,21 +2054,21 @@ fa{
             }\r
             kilogram{\r
                 dnam{"کیلوگرم"}\r
-                one{"{0} <LRM>kg"}\r
+                one{"{0} kg"}\r
                 other{"{0} کیلوگرم"}\r
-                per{"{0}<LRM>/kg"}\r
+                per{"{0}/kg"}\r
             }\r
             metric-ton{\r
-                one{"{0} <LRM>t"}\r
-                other{"{0} <LRM>t"}\r
+                one{"{0} t"}\r
+                other{"{0} t"}\r
             }\r
             microgram{\r
-                one{"{0} <LRM>µg"}\r
-                other{"{0} <LRM>µg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
-                one{"{0} <LRM>mg"}\r
-                other{"{0} <LRM>mg"}\r
+                one{"{0} mg"}\r
+                other{"{0} mg"}\r
             }\r
             ounce{\r
                 dnam{"اونس"}\r
@@ -2085,8 +2177,8 @@ fa{
                 other{"{0} م‌م جیوه"}\r
             }\r
             pascal{\r
-                one{"{0} <LRM>Pa"}\r
-                other{"{0} <LRM>Pa"}\r
+                one{"{0} Pa"}\r
+                other{"{0} Pa"}\r
             }\r
             pound-force-per-square-inch{\r
                 dnam{"پوند در اینچ مربع"}\r
@@ -2107,8 +2199,8 @@ fa{
             }\r
             meter-per-second{\r
                 dnam{"متر در ثانیه"}\r
-                one{"{0} <LRM>m/s"}\r
-                other{"{0} <LRM>m/s"}\r
+                one{"{0} m/s"}\r
+                other{"{0} m/s"}\r
             }\r
             mile-per-hour{\r
                 dnam{"مایل در ساعت"}\r
@@ -2166,8 +2258,8 @@ fa{
                 other{"{0} بوشل"}\r
             }\r
             centiliter{\r
-                one{"{0} <LRM>cL"}\r
-                other{"{0} <LRM>cL"}\r
+                one{"{0} cL"}\r
+                other{"{0} cL"}\r
             }\r
             cubic-centimeter{\r
                 one{"{0}‎ cm³"}\r
@@ -2176,13 +2268,13 @@ fa{
             }\r
             cubic-foot{\r
                 dnam{"فوت مکعب"}\r
-                one{"{0} <LRM>ft³"}\r
-                other{"{0} <LRM>ft³"}\r
+                one{"{0} ft³"}\r
+                other{"{0} ft³"}\r
             }\r
             cubic-inch{\r
                 dnam{"اینچ مکعب"}\r
-                one{"{0} <LRM>in³"}\r
-                other{"{0} <LRM>in³"}\r
+                one{"{0} in³"}\r
+                other{"{0} in³"}\r
             }\r
             cubic-kilometer{\r
                 dnam{"کیلومتر مکعب"}\r
@@ -2191,18 +2283,18 @@ fa{
             }\r
             cubic-meter{\r
                 dnam{"متر مکعب"}\r
-                one{"{0} <LRM>m³"}\r
-                other{"{0} <LRM>m³"}\r
-                per{"{0}<LRM>/m³"}\r
+                one{"{0} m³"}\r
+                other{"{0} m³"}\r
+                per{"{0}/m³"}\r
             }\r
             cubic-mile{\r
-                one{"{0} <LRM>mi³"}\r
-                other{"{0} <LRM>mi³"}\r
+                one{"{0} mi³"}\r
+                other{"{0} mi³"}\r
             }\r
             cubic-yard{\r
                 dnam{"یارد مکعب"}\r
-                one{"{0} <LRM>yd³"}\r
-                other{"{0} <LRM>yd³"}\r
+                one{"{0} yd³"}\r
+                other{"{0} yd³"}\r
             }\r
             cup{\r
                 dnam{"پیمانه"}\r
@@ -2215,8 +2307,8 @@ fa{
                 other{"{0} پیمانهٔ متریک"}\r
             }\r
             deciliter{\r
-                one{"{0} <LRM>dL"}\r
-                other{"{0} <LRM>dL"}\r
+                one{"{0} dL"}\r
+                other{"{0} dL"}\r
             }\r
             dessert-spoon{\r
                 dnam{"قاشق دسرخوری"}\r
@@ -2261,8 +2353,8 @@ fa{
                 per{"{0}/گالن امپریال"}\r
             }\r
             hectoliter{\r
-                one{"{0} <LRM>hL"}\r
-                other{"{0} <LRM>hL"}\r
+                one{"{0} hL"}\r
+                other{"{0} hL"}\r
             }\r
             jigger{\r
                 dnam{"گیلاس"}\r
@@ -2271,14 +2363,14 @@ fa{
             }\r
             liter{\r
                 dnam{"لیتر"}\r
-                one{"{0} <LRM>L"}\r
-                other{"{0} <LRM>L"}\r
-                per{"{0}<LRM>/L"}\r
+                one{"{0} L"}\r
+                other{"{0} L"}\r
+                per{"{0}/L"}\r
             }\r
             megaliter{\r
                 dnam{"مگالیتر"}\r
-                one{"{0} <LRM>ML"}\r
-                other{"{0} <LRM>ML"}\r
+                one{"{0} ML"}\r
+                other{"{0} ML"}\r
             }\r
             milliliter{\r
                 dnam{"میلی‌لیتر"}\r
index 79ec5db..65a34bf 100644 (file)
@@ -101,11 +101,63 @@ ff_Adlm{
             }\r
         }\r
         compound{\r
+            1024p1{"𞤳𞤭𞤦𞤭{0}"}\r
+            1024p2{"𞤥𞤫𞤦𞤭{0}"}\r
+            1024p3{"𞤺𞤭𞤦𞤭{0}"}\r
+            1024p4{"𞤼𞤫𞤦𞤭{0}"}\r
+            1024p5{"𞤨𞤫𞤦𞤭{0}"}\r
+            1024p6{"𞤫𞥁𞤦𞤭{0}"}\r
+            1024p7{"𞥁𞤫𞤦𞤭{0}"}\r
+            1024p8{"𞤴𞤮𞤦𞤭{0}"}\r
+            10p-1{"𞤣𞤫𞥅𞤧𞤭{0}"}\r
+            10p-12{"𞤨𞤭𞤳𞤮{0}"}\r
+            10p-15{"𞤬𞤫𞤥𞤼𞤮{0}"}\r
+            10p-18{"𞤢𞤼𞥆𞤮{0}"}\r
+            10p-2{"𞤧𞤫𞤲𞤼𞤭{0}"}\r
+            10p-21{"𞥁𞤫𞤨𞤼𞤮{0}"}\r
+            10p-24{"𞤴𞤮𞤳𞤼𞤮{0}"}\r
+            10p-3{"𞤥𞤭𞤤𞤭{0}"}\r
+            10p-6{"𞤻𞤭𞤤𞤢{0}"}\r
+            10p-9{"𞤲𞤢𞤲𞤮{0}"}\r
+            10p1{"𞤣𞤫𞤳𞤢{0}"}\r
+            10p12{"𞤼𞤫𞤪𞤢{0}"}\r
+            10p15{"𞤨𞤫𞤼𞤢{0}"}\r
+            10p18{"𞤫𞥁𞤯{0}"}\r
+            10p2{"𞤸𞤫𞤳𞤼𞤮{0}"}\r
+            10p21{"𞥁𞤫𞤼𞥆𞤢{0}"}\r
+            10p24{"𞤴𞤮𞤼𞥆𞤢{0}"}\r
+            10p3{"𞤳𞤭𞤤𞤮{0}"}\r
+            10p6{"𞤥𞤫𞤺𞤢{0}"}\r
+            10p9{"𞤺𞤭𞤺𞤢{0}"}\r
             per{"{0} 𞤲𞤣𞤫𞤪 {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"𞤣𞤭𞤲𞤺𞤫𞤪𞤫 {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"𞤣𞤭𞤲𞤺𞤫𞤪𞤫 {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"𞤤𞤢𞤥𞤦𞤵 {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"𞤤𞤢𞤥𞤦𞤵 {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"𞤥𞤭𞤤𞤭𞤺𞤢𞤪𞤬𞤭 𞤲𞤣𞤫𞤪 𞤣𞤫𞥅𞤧𞤭𞤤𞤭𞥅𞤼𞤵"}\r
             }\r
         }\r
@@ -874,7 +926,59 @@ ff_Adlm{
     }\r
     unitsNarrow{\r
         compound{\r
+            1024p1{"𞤑𞤭{0}"}\r
+            1024p2{"𞤃𞤭{0}"}\r
+            1024p3{"𞤘𞤭{0}"}\r
+            1024p4{"𞤚𞤭{0}"}\r
+            1024p5{"𞤆𞤭{0}"}\r
+            1024p6{"𞤉𞤭{0}"}\r
+            1024p7{"𞤟𞤭{0}"}\r
+            1024p8{"𞤒𞤭{0}"}\r
+            10p-1{"𞤣{0}"}\r
+            10p-12{"𞤨{0}"}\r
+            10p-15{"𞤬{0}"}\r
+            10p-18{"𞤢{0}"}\r
+            10p-2{"𞤧{0}"}\r
+            10p-21{"𞥁{0}"}\r
+            10p-24{"𞤴{0}"}\r
+            10p-3{"𞤥{0}"}\r
+            10p-6{"𞤻{0}"}\r
+            10p-9{"𞤲{0}"}\r
+            10p1{"𞤣𞤢{0}"}\r
+            10p12{"𞤚{0}"}\r
+            10p15{"𞤆{0}"}\r
+            10p18{"𞤉{0}"}\r
+            10p2{"𞤸{0}"}\r
+            10p21{"𞤟{0}"}\r
+            10p24{"𞤒{0}"}\r
+            10p3{"𞤳{0}"}\r
+            10p6{"𞤃{0}"}\r
+            10p9{"𞤘{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}𞥒"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}𞥒"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}𞥓"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}𞥓"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         coordinate{\r
@@ -1080,7 +1184,59 @@ ff_Adlm{
             }\r
         }\r
         compound{\r
+            1024p1{"𞤑𞤭{0}"}\r
+            1024p2{"𞤃𞤭{0}"}\r
+            1024p3{"𞤘𞤭{0}"}\r
+            1024p4{"𞤚𞤭{0}"}\r
+            1024p5{"𞤆𞤭{0}"}\r
+            1024p6{"𞤉𞤭{0}"}\r
+            1024p7{"𞤟𞤭{0}"}\r
+            1024p8{"𞤒𞤭{0}"}\r
+            10p-1{"𞤣{0}"}\r
+            10p-12{"𞤨{0}"}\r
+            10p-15{"𞤬{0}"}\r
+            10p-18{"𞤢{0}"}\r
+            10p-2{"𞤧{0}"}\r
+            10p-21{"𞥁{0}"}\r
+            10p-24{"𞤴{0}"}\r
+            10p-3{"𞤥{0}"}\r
+            10p-6{"𞤻𞤭𞤤𞤢{0}"}\r
+            10p-9{"𞤲{0}"}\r
+            10p1{"𞤣𞤢{0}"}\r
+            10p12{"𞤚{0}"}\r
+            10p15{"𞤆{0}"}\r
+            10p18{"𞤉{0}"}\r
+            10p2{"𞤸{0}"}\r
+            10p21{"𞤟{0}"}\r
+            10p24{"𞤒{0}"}\r
+            10p3{"𞤳{0}"}\r
+            10p6{"𞤃{0}"}\r
+            10p9{"𞤘{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}𞥒"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}𞥒"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}𞥓"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}𞥓"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         coordinate{\r
index 1d1a301..ef0029f 100644 (file)
@@ -105,7 +105,59 @@ fi{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"tsebi{0}"}\r
+            1024p8{"jobi{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"sentti{0}"}\r
+            10p-21{"tsepto{0}"}\r
+            10p-24{"jokto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hehto{0}"}\r
+            10p21{"tsetta{0}"}\r
+            10p24{"jotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"neliö{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"neliö{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kuutio{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kuutio{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ fi{
                 one{"{0} karaatti"}\r
                 other{"{0} karaattia"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1045,6 +1097,30 @@ fi{
         }\r
         compound{\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1052,7 +1128,7 @@ fi{
                 one{"{0}ka"}\r
                 other{"{0}ka"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0}mg/dl"}\r
                 other{"{0}mg/dl"}\r
@@ -1420,9 +1496,9 @@ fi{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
+                dnam{"μm"}\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1520,7 +1596,7 @@ fi{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
+                dnam{"μg"}\r
                 one{"{0}μg"}\r
                 other{"{0}μg"}\r
             }\r
@@ -1932,6 +2008,30 @@ fi{
         }\r
         compound{\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1939,7 +2039,7 @@ fi{
                 one{"{0} ka"}\r
                 other{"{0} ka"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -2283,9 +2383,9 @@ fi{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -2383,9 +2483,9 @@ fi{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 618dc3e..8dd7318 100644 (file)
@@ -100,7 +100,59 @@ fil{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} kada {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} kuwadrado"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} kuwadrado"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"cubic na {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"cubic {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -108,7 +160,7 @@ fil{
                 one{"{0} karat"}\r
                 other{"{0} na karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} milligram per deciliter"}\r
                 other{"{0} milligrams per deciliter"}\r
@@ -1008,6 +1060,26 @@ fil{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1141,9 +1213,9 @@ fil{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmetro"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmetro"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 one{"{0}mi"}\r
@@ -1213,9 +1285,9 @@ fil{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0}µg"}\r
-                other{"{0}µg"}\r
+                dnam{"μg"}\r
+                one{"{0}μg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -1440,6 +1512,26 @@ fil{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1449,7 +1541,7 @@ fil{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1812,9 +1904,9 @@ fil{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmetro"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmetro"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"milya"}\r
@@ -1916,9 +2008,9 @@ fil{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index d5fe3bd..c9248f7 100644 (file)
@@ -100,7 +100,59 @@ fo{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"fer{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"fer{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kubikk{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubikk{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -108,7 +160,7 @@ fo{
                 one{"{0} karat"}\r
                 other{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligramm fyri hvønn desilitur"}\r
                 one{"{0} milligramm fyri hvønn desilitur"}\r
                 other{"{0} milligramm fyri hvønn desilitur"}\r
@@ -1001,6 +1053,7 @@ fo{
             }\r
         }\r
         compound{\r
+            10p1{"dam{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1251,6 +1304,7 @@ fo{
             }\r
         }\r
         compound{\r
+            10p1{"dam{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1259,7 +1313,7 @@ fo{
                 one{"{0} karat"}\r
                 other{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1602,9 +1656,9 @@ fo{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"míl"}\r
@@ -1695,9 +1749,9 @@ fo{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 794cbdf..7ddfa9e 100644 (file)
@@ -11,11 +11,13 @@ fr{
         acceleration{\r
             g-force{\r
                 dnam{"accélération de pesanteur terrestre"}\r
+                gender{"feminine"}\r
                 one{"{0} fois l’accélération de pesanteur terrestre"}\r
                 other{"{0} fois l’accélération de pesanteur terrestre"}\r
             }\r
             meter-per-square-second{\r
                 dnam{"mètres par seconde carrée"}\r
+                gender{"masculine"}\r
                 one{"{0} mètre par seconde carrée"}\r
                 other{"{0} mètres par seconde carrée"}\r
             }\r
@@ -50,6 +52,7 @@ fr{
         area{\r
             acre{\r
                 dnam{"acres anglo-saxonnes"}\r
+                gender{"feminine"}\r
                 one{"{0} acre anglo-saxonne"}\r
                 other{"{0} acres anglo-saxonnes"}\r
             }\r
@@ -60,17 +63,20 @@ fr{
             }\r
             hectare{\r
                 dnam{"hectares"}\r
+                gender{"masculine"}\r
                 one{"{0} hectare"}\r
                 other{"{0} hectares"}\r
             }\r
             square-centimeter{\r
                 dnam{"centimètres carrés"}\r
+                gender{"masculine"}\r
                 one{"{0} centimètre carré"}\r
                 other{"{0} centimètres carrés"}\r
                 per{"{0} par centimètre carré"}\r
             }\r
             square-foot{\r
                 dnam{"pieds carrés"}\r
+                gender{"masculine"}\r
                 one{"{0} pied carré"}\r
                 other{"{0} pieds carrés"}\r
             }\r
@@ -82,6 +88,7 @@ fr{
             }\r
             square-kilometer{\r
                 dnam{"kilomètres carrés"}\r
+                gender{"masculine"}\r
                 one{"{0} kilomètre carré"}\r
                 other{"{0} kilomètres carrés"}\r
                 per{"{0}/km²"}\r
@@ -94,6 +101,7 @@ fr{
             }\r
             square-mile{\r
                 dnam{"milles carrés"}\r
+                gender{"masculine"}\r
                 one{"{0} mille carré"}\r
                 other{"{0} milles carrés"}\r
                 per{"{0}/mi²"}\r
@@ -105,7 +113,71 @@ fr{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mébi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tébi{0}"}\r
+            1024p5{"pébi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zébi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"déci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"déca{0}"}\r
+            10p12{"téra{0}"}\r
+            10p15{"péta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"méga{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} par {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} carré"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} carrée"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} carrés"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} carrées"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} cube"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} cube"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} cubes"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} cubes"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +185,7 @@ fr{
                 one{"{0} carat"}\r
                 other{"{0} carats"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligrammes par décilitre"}\r
                 one{"{0} milligramme par décilitre"}\r
                 other{"{0} milligrammes par décilitre"}\r
@@ -130,6 +202,7 @@ fr{
             }\r
             percent{\r
                 dnam{"pour cent"}\r
+                gender{"masculine"}\r
                 one{"{0} pour cent"}\r
                 other{"{0} pour cent"}\r
             }\r
@@ -152,6 +225,7 @@ fr{
         consumption{\r
             liter-per-100-kilometer{\r
                 dnam{"litres aux 100 km"}\r
+                gender{"masculine"}\r
                 one{"{0} litre aux 100 km"}\r
                 other{"{0} litres aux 100 km"}\r
             }\r
@@ -162,11 +236,13 @@ fr{
             }\r
             mile-per-gallon{\r
                 dnam{"miles par gallon"}\r
+                gender{"masculine"}\r
                 one{"{0} mile par gallon"}\r
                 other{"{0} miles par gallon"}\r
             }\r
             mile-per-gallon-imperial{\r
                 dnam{"miles par gallon impérial"}\r
+                gender{"masculine"}\r
                 one{"{0} mile par gallon impérial"}\r
                 other{"{0} miles par gallon impérial"}\r
             }\r
@@ -243,6 +319,7 @@ fr{
             }\r
             day{\r
                 dnam{"jours"}\r
+                gender{"masculine"}\r
                 one{"{0} jour"}\r
                 other{"{0} jours"}\r
                 per{"{0} par jour"}\r
@@ -254,6 +331,7 @@ fr{
             }\r
             hour{\r
                 dnam{"heures"}\r
+                gender{"feminine"}\r
                 one{"{0} heure"}\r
                 other{"{0} heures"}\r
                 per{"{0} par heure"}\r
@@ -270,12 +348,14 @@ fr{
             }\r
             minute{\r
                 dnam{"minutes"}\r
+                gender{"feminine"}\r
                 one{"{0} minute"}\r
                 other{"{0} minutes"}\r
                 per{"{0} par minute"}\r
             }\r
             month{\r
                 dnam{"mois"}\r
+                gender{"masculine"}\r
                 one{"{0} mois"}\r
                 other{"{0} mois"}\r
                 per{"{0} par mois"}\r
@@ -287,18 +367,21 @@ fr{
             }\r
             second{\r
                 dnam{"secondes"}\r
+                gender{"feminine"}\r
                 one{"{0} seconde"}\r
                 other{"{0} secondes"}\r
                 per{"{0} par seconde"}\r
             }\r
             week{\r
                 dnam{"semaines"}\r
+                gender{"feminine"}\r
                 one{"{0} semaine"}\r
                 other{"{0} semaines"}\r
                 per{"{0} par semaine"}\r
             }\r
             year{\r
                 dnam{"ans"}\r
+                gender{"masculine"}\r
                 one{"{0} an"}\r
                 other{"{0} ans"}\r
                 per{"{0} par an"}\r
@@ -344,6 +427,7 @@ fr{
             }\r
             foodcalorie{\r
                 dnam{"kilocalories"}\r
+                gender{"feminine"}\r
                 one{"{0} kilocalorie"}\r
                 other{"{0} kilocalories"}\r
             }\r
@@ -354,6 +438,7 @@ fr{
             }\r
             kilocalorie{\r
                 dnam{"kilocalories"}\r
+                gender{"feminine"}\r
                 one{"{0} kilocalorie"}\r
                 other{"{0} kilocalories"}\r
             }\r
@@ -457,6 +542,7 @@ fr{
             }\r
             centimeter{\r
                 dnam{"centimètres"}\r
+                gender{"masculine"}\r
                 one{"{0} centimètre"}\r
                 other{"{0} centimètres"}\r
                 per{"{0} par centimètre"}\r
@@ -478,6 +564,7 @@ fr{
             }\r
             foot{\r
                 dnam{"pieds"}\r
+                gender{"masculine"}\r
                 one{"{0} pied"}\r
                 other{"{0} pieds"}\r
                 per{"{0} par pied"}\r
@@ -489,12 +576,14 @@ fr{
             }\r
             inch{\r
                 dnam{"pouces"}\r
+                gender{"masculine"}\r
                 one{"{0} pouce"}\r
                 other{"{0} pouces"}\r
                 per{"{0} par pouce"}\r
             }\r
             kilometer{\r
                 dnam{"kilomètres"}\r
+                gender{"masculine"}\r
                 one{"{0} kilomètre"}\r
                 other{"{0} kilomètres"}\r
                 per{"{0} par kilomètre"}\r
@@ -506,6 +595,7 @@ fr{
             }\r
             meter{\r
                 dnam{"mètres"}\r
+                gender{"masculine"}\r
                 one{"{0} mètre"}\r
                 other{"{0} mètres"}\r
                 per{"{0} par mètre"}\r
@@ -517,6 +607,7 @@ fr{
             }\r
             mile{\r
                 dnam{"miles"}\r
+                gender{"masculine"}\r
                 one{"{0} mile"}\r
                 other{"{0} miles"}\r
             }\r
@@ -527,6 +618,7 @@ fr{
             }\r
             millimeter{\r
                 dnam{"millimètres"}\r
+                gender{"masculine"}\r
                 one{"{0} millimètre"}\r
                 other{"{0} millimètres"}\r
             }\r
@@ -542,11 +634,13 @@ fr{
             }\r
             parsec{\r
                 dnam{"parsecs"}\r
+                gender{"masculine"}\r
                 one{"{0} parsec"}\r
                 other{"{0} parsecs"}\r
             }\r
             picometer{\r
                 dnam{"picomètres"}\r
+                gender{"masculine"}\r
                 one{"{0} picomètre"}\r
                 other{"{0} picomètres"}\r
             }\r
@@ -557,11 +651,13 @@ fr{
             }\r
             solar-radius{\r
                 dnam{"rayons solaires"}\r
+                gender{"masculine"}\r
                 one{"{0} rayon solaire"}\r
                 other{"{0} rayons solaires"}\r
             }\r
             yard{\r
                 dnam{"yards"}\r
+                gender{"masculine"}\r
                 one{"{0} yard"}\r
                 other{"{0} yards"}\r
             }\r
@@ -579,6 +675,7 @@ fr{
             }\r
             solar-luminosity{\r
                 dnam{"luminosités solaires"}\r
+                gender{"feminine"}\r
                 one{"{0} luminosité solaire"}\r
                 other{"{0} luminosités solaires"}\r
             }\r
@@ -591,26 +688,31 @@ fr{
             }\r
             dalton{\r
                 dnam{"daltons"}\r
+                gender{"masculine"}\r
                 one{"{0} dalton"}\r
                 other{"{0} daltons"}\r
             }\r
             earth-mass{\r
                 dnam{"masses terrestres"}\r
+                gender{"feminine"}\r
                 one{"{0} masse terrestre"}\r
                 other{"{0} masses terrestres"}\r
             }\r
             grain{\r
+                gender{"masculine"}\r
                 one{"{0} grain"}\r
                 other{"{0} grains"}\r
             }\r
             gram{\r
                 dnam{"grammes"}\r
+                gender{"masculine"}\r
                 one{"{0} gramme"}\r
                 other{"{0} grammes"}\r
                 per{"{0} par gramme"}\r
             }\r
             kilogram{\r
                 dnam{"kilogrammes"}\r
+                gender{"masculine"}\r
                 one{"{0} kilogramme"}\r
                 other{"{0} kilogrammes"}\r
                 per{"{0} par kg"}\r
@@ -627,11 +729,13 @@ fr{
             }\r
             milligram{\r
                 dnam{"milligrammes"}\r
+                gender{"masculine"}\r
                 one{"{0} milligramme"}\r
                 other{"{0} milligrammes"}\r
             }\r
             ounce{\r
                 dnam{"onces"}\r
+                gender{"feminine"}\r
                 one{"{0} once"}\r
                 other{"{0} onces"}\r
                 per{"{0} par once"}\r
@@ -643,12 +747,14 @@ fr{
             }\r
             pound{\r
                 dnam{"livres"}\r
+                gender{"feminine"}\r
                 one{"{0} livre"}\r
                 other{"{0} livres"}\r
                 per{"{0} par livre"}\r
             }\r
             solar-mass{\r
                 dnam{"masses solaires"}\r
+                gender{"feminine"}\r
                 one{"{0} masse solaire"}\r
                 other{"{0} masses solaires"}\r
             }\r
@@ -718,6 +824,7 @@ fr{
             }\r
             kilopascal{\r
                 dnam{"kilopascals"}\r
+                gender{"masculine"}\r
                 one{"{0} kilopascal"}\r
                 other{"{0} kilopascals"}\r
             }\r
@@ -750,6 +857,7 @@ fr{
         speed{\r
             kilometer-per-hour{\r
                 dnam{"kilomètres par heure"}\r
+                gender{"masculine"}\r
                 one{"{0} kilomètre par heure"}\r
                 other{"{0} kilomètres par heure"}\r
             }\r
@@ -760,11 +868,13 @@ fr{
             }\r
             meter-per-second{\r
                 dnam{"mètres par seconde"}\r
+                gender{"masculine"}\r
                 one{"{0} mètre par seconde"}\r
                 other{"{0} mètres par seconde"}\r
             }\r
             mile-per-hour{\r
                 dnam{"miles par heure"}\r
+                gender{"masculine"}\r
                 one{"{0} mile par heure"}\r
                 other{"{0} miles par heure"}\r
             }\r
@@ -772,21 +882,25 @@ fr{
         temperature{\r
             celsius{\r
                 dnam{"degrés Celsius"}\r
+                gender{"masculine"}\r
                 one{"{0} degré Celsius"}\r
                 other{"{0} degrés Celsius"}\r
             }\r
             fahrenheit{\r
                 dnam{"degrés Fahrenheit"}\r
+                gender{"masculine"}\r
                 one{"{0} degré Fahrenheit"}\r
                 other{"{0} degrés Fahrenheit"}\r
             }\r
             generic{\r
                 dnam{"degrés"}\r
+                gender{"masculine"}\r
                 one{"{0} degré"}\r
                 other{"{0} degrés"}\r
             }\r
             kelvin{\r
                 dnam{"kelvins"}\r
+                gender{"masculine"}\r
                 one{"{0} kelvin"}\r
                 other{"{0} kelvins"}\r
             }\r
@@ -821,17 +935,20 @@ fr{
             }\r
             centiliter{\r
                 dnam{"centilitres"}\r
+                gender{"masculine"}\r
                 one{"{0} centilitre"}\r
                 other{"{0} centilitres"}\r
             }\r
             cubic-centimeter{\r
                 dnam{"centimètres cubes"}\r
+                gender{"masculine"}\r
                 one{"{0} centimètre cube"}\r
                 other{"{0} centimètres cubes"}\r
                 per{"{0} par centimètre cube"}\r
             }\r
             cubic-foot{\r
                 dnam{"pieds cubes"}\r
+                gender{"masculine"}\r
                 one{"{0} pied cube"}\r
                 other{"{0} pieds cubes"}\r
             }\r
@@ -853,6 +970,7 @@ fr{
             }\r
             cubic-mile{\r
                 dnam{"milles cubes"}\r
+                gender{"masculine"}\r
                 one{"{0} mille cube"}\r
                 other{"{0} milles cubes"}\r
             }\r
@@ -863,6 +981,7 @@ fr{
             }\r
             cup{\r
                 dnam{"tasses"}\r
+                gender{"feminine"}\r
                 one{"{0} tasse"}\r
                 other{"{0} tasses"}\r
             }\r
@@ -873,47 +992,56 @@ fr{
             }\r
             deciliter{\r
                 dnam{"décilitres"}\r
+                gender{"masculine"}\r
                 one{"{0} décilitre"}\r
                 other{"{0} décilitres"}\r
             }\r
             dessert-spoon{\r
                 dnam{"cuillère à dessert"}\r
+                gender{"feminine"}\r
                 one{"{0} cuillère à dessert"}\r
                 other{"{0} cuillères à dessert"}\r
             }\r
             dessert-spoon-imperial{\r
                 dnam{"cuillère à dessert impériale"}\r
+                gender{"feminine"}\r
                 one{"{0} cuillère à dessert impériale"}\r
                 other{"{0} cuillères à dessert impériales"}\r
             }\r
             dram{\r
                 dnam{"drachme"}\r
+                gender{"feminine"}\r
                 one{"{0} drachme"}\r
                 other{"{0} drachmes"}\r
             }\r
             drop{\r
                 dnam{"goutte"}\r
+                gender{"feminine"}\r
                 one{"{0} goutte"}\r
                 other{"{0} gouttes"}\r
             }\r
             fluid-ounce{\r
                 dnam{"onces liquides"}\r
+                gender{"feminine"}\r
                 one{"{0} once liquide"}\r
                 other{"{0} onces liquides"}\r
             }\r
             fluid-ounce-imperial{\r
                 dnam{"onces liquides impériales"}\r
+                gender{"feminine"}\r
                 one{"{0} once liquide impériale"}\r
                 other{"{0} onces liquides impériales"}\r
             }\r
             gallon{\r
                 dnam{"gallons"}\r
+                gender{"masculine"}\r
                 one{"{0} gallon"}\r
                 other{"{0} gallons"}\r
                 per{"{0} par gallon"}\r
             }\r
             gallon-imperial{\r
                 dnam{"gallons impériaux"}\r
+                gender{"masculine"}\r
                 one{"{0} gallon impérial"}\r
                 other{"{0} gallons impériaux"}\r
                 per{"{0} par gallon impérial"}\r
@@ -925,11 +1053,13 @@ fr{
             }\r
             jigger{\r
                 dnam{"jigger"}\r
+                gender{"masculine"}\r
                 one{"{0} jigger"}\r
                 other{"{0} jiggers"}\r
             }\r
             liter{\r
                 dnam{"litres"}\r
+                gender{"masculine"}\r
                 one{"{0} litre"}\r
                 other{"{0} litres"}\r
                 per{"{0} par litre"}\r
@@ -941,16 +1071,19 @@ fr{
             }\r
             milliliter{\r
                 dnam{"millilitres"}\r
+                gender{"masculine"}\r
                 one{"{0} millilitre"}\r
                 other{"{0} millilitres"}\r
             }\r
             pinch{\r
                 dnam{"pincée"}\r
+                gender{"feminine"}\r
                 one{"{0} pincée"}\r
                 other{"{0} pincées"}\r
             }\r
             pint{\r
                 dnam{"pintes"}\r
+                gender{"feminine"}\r
                 one{"{0} pinte"}\r
                 other{"{0} pintes"}\r
             }\r
@@ -961,21 +1094,25 @@ fr{
             }\r
             quart{\r
                 dnam{"quarts"}\r
+                gender{"masculine"}\r
                 one{"{0} quart"}\r
                 other{"{0} quarts"}\r
             }\r
             quart-imperial{\r
                 dnam{"quart impérial"}\r
+                gender{"masculine"}\r
                 one{"{0} quart impérial"}\r
                 other{"{0} quarts impériaux"}\r
             }\r
             tablespoon{\r
                 dnam{"cuillères à soupe"}\r
+                gender{"feminine"}\r
                 one{"{0} cuillère à soupe"}\r
                 other{"{0} cuillères à soupe"}\r
             }\r
             teaspoon{\r
                 dnam{"cuillères à café"}\r
+                gender{"feminine"}\r
                 one{"{0} cuillère à café"}\r
                 other{"{0} cuillères à café"}\r
             }\r
@@ -1041,7 +1178,7 @@ fr{
         }\r
         compound{\r
             per{"{0}/{1}"}\r
-            times{"{0}{1}"}\r
+            times{"{0}-{1}"}\r
         }\r
         concentr{\r
             percent{\r
@@ -1185,7 +1322,7 @@ fr{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
+                dnam{"μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1242,7 +1379,7 @@ fr{
                 dnam{"t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
+                dnam{"μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -1528,7 +1665,7 @@ fr{
         }\r
         compound{\r
             per{"{0}/{1}"}\r
-            times{"{0}{1}"}\r
+            times{"{0}-{1}"}\r
         }\r
         concentr{\r
             karat{\r
@@ -1536,7 +1673,7 @@ fr{
                 one{"{0} ct"}\r
                 other{"{0} ct"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1924,9 +2061,9 @@ fr{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -2028,9 +2165,9 @@ fr{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index ffd085f..cf03ad7 100644 (file)
@@ -312,6 +312,7 @@ fr_CA{
             }\r
             yard{\r
                 dnam{"verges"}\r
+                gender{"feminine"}\r
                 one{"{0} verge"}\r
                 other{"{0} verges"}\r
             }\r
@@ -503,11 +504,13 @@ fr_CA{
             }\r
             quart{\r
                 dnam{"pintes"}\r
+                gender{"feminine"}\r
                 one{"{0} pinte"}\r
                 other{"{0} pintes"}\r
             }\r
             quart-imperial{\r
                 dnam{"pinte impériale"}\r
+                gender{"feminine"}\r
                 one{"{0} pinte impériale"}\r
                 other{"{0} pintes impériales"}\r
             }\r
@@ -544,8 +547,8 @@ fr_CA{
                 other{"´{0}s."}\r
             }\r
             microsecond{\r
-                one{"{0}µs"}\r
-                other{"{0}µs"}\r
+                one{"{0}μs"}\r
+                other{"{0}μs"}\r
             }\r
             minute{\r
                 one{"{0}m"}\r
@@ -586,8 +589,8 @@ fr_CA{
                 other{"{0}al"}\r
             }\r
             micrometer{\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
             }\r
             mile-scandinavian{\r
                 one{"{0}smi"}\r
@@ -622,8 +625,8 @@ fr_CA{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                one{"{0}µg"}\r
-                other{"{0}µg"}\r
+                one{"{0}μg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 one{"{0}mg"}\r
@@ -976,8 +979,8 @@ fr_CA{
                 other{"{0} m"}\r
             }\r
             micrometer{\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 one{"{0} mi"}\r
@@ -1038,8 +1041,8 @@ fr_CA{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 one{"{0} mg"}\r
index fcd24a9..4c4934c 100644 (file)
@@ -156,7 +156,82 @@ ga{
             }\r
         }\r
         compound{\r
+            1024p1{"cibi-{0}"}\r
+            10p-1{"deici{0}"}\r
+            10p-12{"pici{0}"}\r
+            10p-15{"feimti{0}"}\r
+            10p-18{"atai{0}"}\r
+            10p-2{"ceinti{0}"}\r
+            10p-21{"zeipti{0}"}\r
+            10p-24{"yoctai{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"micri{0}"}\r
+            10p-9{"nanai{0}"}\r
+            10p1{"deacai{0}"}\r
+            10p12{"teiri{0}"}\r
+            10p15{"peiti{0}"}\r
+            10p18{"eicsi{0}"}\r
+            10p2{"heicti{0}"}\r
+            10p21{"zeiti{0}"}\r
+            10p24{"yotai{0}"}\r
+            10p3{"cili{0}"}\r
+            10p6{"meigi{0}"}\r
+            10p9{"gigi{0}"}\r
             per{"{0} sa {1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0} chearnacha"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} chearnacha"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} cearnaithe"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} chearnaithe"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} chearnacha"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0} chiúbacha"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} chiúbacha"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} ciúbach"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} ciúbach"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} chiúbacha"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -167,7 +242,7 @@ ga{
                 other{"{0} carat óir"}\r
                 two{"{0} charat óir"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milleagraim sa deicilítear"}\r
                 few{"{0} mhilleagram sa deicilítear"}\r
                 many{"{0} milleagram sa deicilítear"}\r
@@ -1668,6 +1743,31 @@ ga{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1679,7 +1779,7 @@ ga{
                 other{"{0}kt"}\r
                 two{"{0}kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 few{"{0} mg/dL"}\r
                 many{"{0} mg/dL"}\r
@@ -2137,12 +2237,12 @@ ga{
                 two{"{0}m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0}µm"}\r
-                many{"{0}µm"}\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
-                two{"{0}µm"}\r
+                dnam{"μm"}\r
+                few{"{0}μm"}\r
+                many{"{0}μm"}\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
+                two{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mílte"}\r
@@ -2263,12 +2363,12 @@ ga{
                 two{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0}µg"}\r
-                many{"{0}µg"}\r
-                one{"{0}µg"}\r
-                other{"{0}µg"}\r
-                two{"{0}µg"}\r
+                dnam{"μg"}\r
+                few{"{0}μg"}\r
+                many{"{0}μg"}\r
+                one{"{0}μg"}\r
+                other{"{0}μg"}\r
+                two{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -2838,6 +2938,30 @@ ga{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -2849,7 +2973,7 @@ ga{
                 other{"{0} kt"}\r
                 two{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 few{"{0} mg/dL"}\r
                 many{"{0} mg/dL"}\r
@@ -3405,12 +3529,12 @@ ga{
                 two{"{0} m"}\r
             }\r
             micrometer{\r
-                dnam{"µméadair"}\r
-                few{"{0} µm"}\r
-                many{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
-                two{"{0} µm"}\r
+                dnam{"μméadair"}\r
+                few{"{0} μm"}\r
+                many{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
+                two{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mílte"}\r
@@ -3571,12 +3695,12 @@ ga{
                 two{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                many{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
-                two{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                many{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
+                two{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 1b4c2ea..2481dd2 100644 (file)
@@ -139,7 +139,79 @@ gd{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi-{0}"}\r
+            1024p2{"mebi-{0}"}\r
+            1024p3{"gibi-{0}"}\r
+            1024p4{"tebi-{0}"}\r
+            1024p5{"pebi-{0}"}\r
+            1024p6{"exbi-{0}"}\r
+            1024p7{"zebi-{0}"}\r
+            1024p8{"yobe-{0}"}\r
+            10p-1{"deicheamh-{0}"}\r
+            10p-12{"piceo-{0}"}\r
+            10p-15{"femto-{0}"}\r
+            10p-18{"atto-{0}"}\r
+            10p-2{"ceuda{0}"}\r
+            10p-21{"zepto-{0}"}\r
+            10p-24{"yocto-{0}"}\r
+            10p-3{"mili-{0}"}\r
+            10p-6{"micreo-{0}"}\r
+            10p-9{"nano-{0}"}\r
+            10p1{"deaca-{0}"}\r
+            10p12{"tera-{0}"}\r
+            10p15{"peta-{0}"}\r
+            10p18{"exa-{0}"}\r
+            10p2{"heacta-{0}"}\r
+            10p21{"zetta-{0}"}\r
+            10p24{"yotta-{0}"}\r
+            10p3{"cile{0}"}\r
+            10p6{"meaga-{0}"}\r
+            10p9{"giga-{0}"}\r
             per{"{0} / {1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0} ceàrnagach"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} ceàrnagach"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} ceàrnagach"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} cheàrnagach"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0} ciùbach"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} ciùbach"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} ciùbach"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} chiùbach"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -149,7 +221,7 @@ gd{
                 other{"{0} karat"}\r
                 two{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligram san deicheamh-liotair"}\r
                 few{"{0} miligramaichean san deicheamh-liotair"}\r
                 one{"{0} mhiligram san deicheamh-liotair"}\r
@@ -1475,6 +1547,15 @@ gd{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1485,7 +1566,7 @@ gd{
                 other{"{0}kt"}\r
                 two{"{0}kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 few{"{0}mg/dL"}\r
                 one{"{0}mg/dL"}\r
@@ -2014,11 +2095,11 @@ gd{
                 two{"{0}m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0}µm"}\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
-                two{"{0}µm"}\r
+                dnam{"μm"}\r
+                few{"{0}μm"}\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
+                two{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mì"}\r
@@ -2169,11 +2250,11 @@ gd{
                 two{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0}µg"}\r
-                one{"{0}µg"}\r
-                other{"{0}µg"}\r
-                two{"{0}µg"}\r
+                dnam{"μg"}\r
+                few{"{0}μg"}\r
+                one{"{0}μg"}\r
+                other{"{0}μg"}\r
+                two{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -2791,6 +2872,15 @@ gd{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -2801,7 +2891,7 @@ gd{
                 other{"{0} kt"}\r
                 two{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 few{"{0} mg/dL"}\r
                 one{"{0} mg/dL"}\r
@@ -3266,11 +3356,11 @@ gd{
                 two{"{0} m"}\r
             }\r
             micrometer{\r
-                dnam{"µ-meatair"}\r
-                few{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
-                two{"{0} µm"}\r
+                dnam{"μ-meatair"}\r
+                few{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
+                two{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mìle"}\r
@@ -3406,11 +3496,11 @@ gd{
                 two{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
-                two{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
+                two{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 41bfa42..0726992 100644 (file)
@@ -105,7 +105,59 @@ gl{
             }\r
         }\r
         compound{\r
+            1024p1{"quibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"xibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"fento{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"iocto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deca{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zeta{0}"}\r
+            10p24{"iota{0}"}\r
+            10p3{"quilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"xiga{0}"}\r
             per{"{0} por {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} cadrado"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} cadrados"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} cúbico"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} cúbicos"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ gl{
                 one{"{0} quilate"}\r
                 other{"{0} quilates"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramos por decilitro"}\r
                 one{"{0} miligramo por decilitro"}\r
                 other{"{0} miligramos por decilitro"}\r
@@ -995,6 +1047,26 @@ gl{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1218,6 +1290,26 @@ gl{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1226,7 +1318,7 @@ gl{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1597,9 +1689,9 @@ gl{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"millas"}\r
@@ -1695,9 +1787,9 @@ gl{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index dc8df78..5d998fe 100644 (file)
@@ -105,7 +105,59 @@ gu{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"ડેસી{0}"}\r
+            10p-12{"પીકો{0}"}\r
+            10p-15{"ફેમ્ટો{0}"}\r
+            10p-18{"એટો{0}"}\r
+            10p-2{"સેન્ટી{0}"}\r
+            10p-21{"ઝેપ્ટો{0}"}\r
+            10p-24{"યોક્ટો{0}"}\r
+            10p-3{"મિલી{0}"}\r
+            10p-6{"માઇક્રો{0}"}\r
+            10p-9{"નેનો{0}"}\r
+            10p1{"ડેકા{0}"}\r
+            10p12{"ટેરા{0}"}\r
+            10p15{"પિટા{0}"}\r
+            10p18{"એગ્ઝા{0}"}\r
+            10p2{"હેક્ટો{0}"}\r
+            10p21{"ઝેટા{0}"}\r
+            10p24{"યોટા{0}"}\r
+            10p3{"કિલો{0}"}\r
+            10p6{"મેગા{0}"}\r
+            10p9{"ગિગા{0}"}\r
             per{"{0} પ્રતિ {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"ચોરસ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ચોરસ {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"ક્યુબિક {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ક્યુબિક {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         concentr{\r
@@ -114,7 +166,7 @@ gu{
                 one{"{0} કૅરેટ"}\r
                 other{"{0} કૅરેટ"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"મિલિગ્રામ પ્રતિ ડેસિલિટર"}\r
                 one{"{0} મિલિગ્રામ પ્રતિ ડેસિલિટર"}\r
                 other{"{0} મિલિગ્રામ પ્રતિ ડેસિલિટર"}\r
@@ -411,7 +463,7 @@ gu{
         graphics{\r
             dot{\r
                 dnam{"ડૉટ"}\r
-                one{"{0} ડૉટ"}\r
+                one{"{0} px"}\r
                 other{"{0} ડૉટ"}\r
             }\r
             dot-per-centimeter{\r
@@ -992,6 +1044,33 @@ gu{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"ડેસી{0}"}\r
+            10p-12{"પીકો{0}"}\r
+            10p-15{"ફેમ્ટો{0}"}\r
+            10p-18{"એટો{0}"}\r
+            10p-2{"સેન્ટી{0}"}\r
+            10p-21{"ઝેપ્ટો{0}"}\r
+            10p-24{"યોક્ટો{0}"}\r
+            10p-3{"મિલી{0}"}\r
+            10p-9{"નેનો{0}"}\r
+            10p1{"ડેકા{0}"}\r
+            10p12{"ટેરા{0}"}\r
+            10p15{"પિટા{0}"}\r
+            10p18{"એગ્ઝા{0}"}\r
+            10p2{"હેક્ટો{0}"}\r
+            10p21{"ઝેટા{0}"}\r
+            10p24{"યોટા{0}"}\r
+            10p3{"કિલો{0}"}\r
+            10p6{"મેગા{0}"}\r
+            10p9{"ગિગા{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1315,6 +1394,33 @@ gu{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"ડે.{0}"}\r
+            10p-12{"પી.{0}"}\r
+            10p-15{"ફે.{0}"}\r
+            10p-18{"એ.{0}"}\r
+            10p-2{"સે.{0}"}\r
+            10p-21{"ઝેપ.{0}"}\r
+            10p-24{"યોક.{0}"}\r
+            10p-3{"મિ.{0}"}\r
+            10p-9{"ને.{0}"}\r
+            10p1{"ડા.{0}"}\r
+            10p12{"ટે.{0}"}\r
+            10p15{"પિ.{0}"}\r
+            10p18{"એગ.{0}"}\r
+            10p2{"હે.{0}"}\r
+            10p21{"ઝે.{0}"}\r
+            10p24{"યો.{0}"}\r
+            10p3{"કિ.{0}"}\r
+            10p6{"મે.{0}"}\r
+            10p9{"ગિ.{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1323,7 +1429,7 @@ gu{
                 one{"{0} કૅરેટ"}\r
                 other{"{0} કૅરેટ"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1620,7 +1726,7 @@ gu{
         graphics{\r
             dot{\r
                 dnam{"ડૉટ"}\r
-                one{"{0} ડૉટ"}\r
+                one{"{0} px"}\r
                 other{"{0} ડૉટ"}\r
             }\r
             pixel{\r
@@ -1681,8 +1787,8 @@ gu{
             }\r
             micrometer{\r
                 dnam{"માઇક્રોમીટર"}\r
-                one{"{0} µમી"}\r
-                other{"{0} µમી"}\r
+                one{"{0} μમી"}\r
+                other{"{0} μમી"}\r
             }\r
             mile{\r
                 dnam{"માઇલ"}\r
@@ -1786,9 +1892,9 @@ gu{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µગ્રામ"}\r
-                one{"{0} µગ્રામ"}\r
-                other{"{0} µગ્રામ"}\r
+                dnam{"μગ્રામ"}\r
+                one{"{0} μગ્રામ"}\r
+                other{"{0} μગ્રામ"}\r
             }\r
             milligram{\r
                 dnam{"મિગ્રા"}\r
index c8241a5..5031330 100644 (file)
@@ -102,7 +102,49 @@ ha{
             }\r
         }\r
         compound{\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} a {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"sikwaya {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"sikwaya {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kubic {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubic {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -110,7 +152,7 @@ ha{
                 one{"karat {0}"}\r
                 other{"karats {0}"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligrams per deciliter"}\r
                 one{"milligram per deciliter {0}"}\r
                 other{"milligrams per deciliter {0}"}\r
@@ -1156,7 +1198,7 @@ ha{
                 one{"kt {0}"}\r
                 other{"kt {0}"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 one{"mg/dL {0}"}\r
                 other{"mg/dL {0}"}\r
             }\r
@@ -1295,9 +1337,9 @@ ha{
                 per{"{0}/saʼa"}\r
             }\r
             microsecond{\r
-                dnam{"µsecs"}\r
-                one{"µs {0}"}\r
-                other{"µs {0}"}\r
+                dnam{"μsecs"}\r
+                one{"μs {0}"}\r
+                other{"μs {0}"}\r
             }\r
             millisecond{\r
                 dnam{"milseks"}\r
@@ -1517,9 +1559,9 @@ ha{
                 other{"m {0}"}\r
             }\r
             micrometer{\r
-                dnam{"µmeters"}\r
-                one{"µm {0}"}\r
-                other{"µm {0}"}\r
+                dnam{"μmeters"}\r
+                one{"μm {0}"}\r
+                other{"μm {0}"}\r
             }\r
             mile{\r
                 dnam{"mil-mil"}\r
@@ -1618,8 +1660,8 @@ ha{
                 other{"t {0}"}\r
             }\r
             microgram{\r
-                one{"µg {0}"}\r
-                other{"µg {0}"}\r
+                one{"μg {0}"}\r
+                other{"μg {0}"}\r
             }\r
             milligram{\r
                 one{"mg {0}"}\r
index cb73199..4803ea5 100644 (file)
@@ -139,7 +139,79 @@ he{
             }\r
         }\r
         compound{\r
+            1024p1{"קיבי{0}"}\r
+            1024p2{"מבי{0}"}\r
+            1024p3{"ג׳יבי{0}"}\r
+            1024p4{"טבי{0}"}\r
+            1024p5{"פבי{0}"}\r
+            1024p6{"אקסבי{0}"}\r
+            1024p7{"זבי{0}"}\r
+            1024p8{"יובא{0}"}\r
+            10p-1{"דצי{0}"}\r
+            10p-12{"פיקו{0}"}\r
+            10p-15{"פמטו{0}"}\r
+            10p-18{"אטו{0}"}\r
+            10p-2{"סנטי{0}"}\r
+            10p-21{"זפטו{0}"}\r
+            10p-24{"יוקטו{0}"}\r
+            10p-3{"מילי{0}"}\r
+            10p-6{"מיקרו{0}"}\r
+            10p-9{"ננו{0}"}\r
+            10p1{"דקא{0}"}\r
+            10p12{"טרה{0}"}\r
+            10p15{"פטא{0}"}\r
+            10p18{"אקסה{0}"}\r
+            10p2{"הקטו{0}"}\r
+            10p21{"זטא{0}"}\r
+            10p24{"יוטא{0}"}\r
+            10p3{"קילו{0}"}\r
+            10p6{"מגה{0}"}\r
+            10p9{"גיגה{0}"}\r
             per{"{0} ל{1}"}\r
+            power2{\r
+                many{\r
+                    _{\r
+                        _{"{0} בריבוע"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} בריבוע"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} בריבוע"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} בריבוע"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                many{\r
+                    _{\r
+                        _{"{0} מעוקב"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} מעוקב"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} מעוקב"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"{0} מעוקב"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -149,7 +221,7 @@ he{
                 other{"{0} קראט"}\r
                 two{"{0} קראט"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"מיליגרם/דציליטר"}\r
                 many{"{0} מיליגרם/דציליטר"}\r
                 one{"{0} מיליגרם/דציליטר"}\r
@@ -1415,6 +1487,25 @@ he{
             }\r
         }\r
         compound{\r
+            10p-1{"דצי{0}"}\r
+            10p-12{"פיקו{0}"}\r
+            10p-15{"פמטו{0}"}\r
+            10p-18{"אטו{0}"}\r
+            10p-2{"סנטי{0}"}\r
+            10p-21{"זפטו{0}"}\r
+            10p-24{"יוקטו{0}"}\r
+            10p-3{"מילי{0}"}\r
+            10p-9{"ננו{0}"}\r
+            10p1{"דקא{0}"}\r
+            10p12{"טרה{0}"}\r
+            10p15{"פטא{0}"}\r
+            10p18{"אקס{0}"}\r
+            10p2{"הקטו{0}"}\r
+            10p21{"זטא{0}"}\r
+            10p24{"יוטא{0}"}\r
+            10p3{"קילו{0}"}\r
+            10p6{"מגה{0}"}\r
+            10p9{"גיגה{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1620,11 +1711,11 @@ he{
                 two{"{0} מ′"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                many{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
-                two{"{0} µm"}\r
+                dnam{"μm"}\r
+                many{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
+                two{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"מייל"}\r
@@ -2037,6 +2128,25 @@ he{
             }\r
         }\r
         compound{\r
+            10p-1{"דצי{0}"}\r
+            10p-12{"פיקו{0}"}\r
+            10p-15{"פמטו{0}"}\r
+            10p-18{"אטו{0}"}\r
+            10p-2{"סנטי{0}"}\r
+            10p-21{"זפטו{0}"}\r
+            10p-24{"יוקטו{0}"}\r
+            10p-3{"מילי{0}"}\r
+            10p-9{"ננו{0}"}\r
+            10p1{"דקא{0}"}\r
+            10p12{"טרה{0}"}\r
+            10p15{"פטא{0}"}\r
+            10p18{"אקס{0}"}\r
+            10p2{"הקטו{0}"}\r
+            10p21{"זטא{0}"}\r
+            10p24{"יוטא{0}"}\r
+            10p3{"קילו{0}"}\r
+            10p6{"מגה{0}"}\r
+            10p9{"גיגה{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -2048,7 +2158,7 @@ he{
                 other{"{0} kt"}\r
                 two{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 many{"{0} mg/dL"}\r
                 one{"{0} mg/dL"}\r
@@ -2514,11 +2624,11 @@ he{
                 two{"{0} מ׳"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                many{"‎{0} µm‎"}\r
-                one{"‎{0} µm‎"}\r
-                other{"‎{0} µm‎"}\r
-                two{"‎{0} µm‎"}\r
+                dnam{"μm"}\r
+                many{"‎{0} μm‎"}\r
+                one{"‎{0} μm‎"}\r
+                other{"‎{0} μm‎"}\r
+                two{"‎{0} μm‎"}\r
             }\r
             mile{\r
                 dnam{"מייל"}\r
index be03701..4004592 100644 (file)
@@ -10,12 +10,26 @@ hi{
     units{\r
         acceleration{\r
             g-force{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} गुरुत्वाकर्षण बल"}\r
+                        other{"{0} गुरुत्वाकर्षण बल"}\r
+                    }\r
+                }\r
                 dnam{"गुरुत्व बल"}\r
+                gender{"masculine"}\r
                 one{"{0} गुरुत्व–बल"}\r
                 other{"{0} गुरुत्व–बल"}\r
             }\r
             meter-per-square-second{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मीटर प्रति वर्ग सेकंड"}\r
+                        other{"{0} मीटर प्रति वर्ग सेकंड"}\r
+                    }\r
+                }\r
                 dnam{"मीटर/से²"}\r
+                gender{"masculine"}\r
                 one{"{0} मीटर प्रति सेकंड वर्ग"}\r
                 other{"{0} मीटर प्रति सेकंड वर्ग"}\r
             }\r
@@ -49,7 +63,14 @@ hi{
         }\r
         area{\r
             acre{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} एकड़"}\r
+                        other{"{0} एकड़"}\r
+                    }\r
+                }\r
                 dnam{"एकड़"}\r
+                gender{"masculine"}\r
                 one{"{0} एकड़"}\r
                 other{"{0} एकड़"}\r
             }\r
@@ -59,18 +80,39 @@ hi{
                 other{"{0} डोनम"}\r
             }\r
             hectare{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} हेक्टेयर"}\r
+                        other{"{0} हेक्टेयर"}\r
+                    }\r
+                }\r
                 dnam{"हेक्टेयर"}\r
+                gender{"masculine"}\r
                 one{"{0} हेक्टेयर"}\r
                 other{"{0} हेक्टेयर"}\r
             }\r
             square-centimeter{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} वर्ग सेंटीमीटर"}\r
+                        other{"{0} वर्ग सेंटीमीटर"}\r
+                    }\r
+                }\r
                 dnam{"वर्ग सेंटीमीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} वर्ग सेंटीमीटर"}\r
                 other{"{0} वर्ग सेंटीमीटर"}\r
                 per{"{0}/वर्ग सेंटीमीटर"}\r
             }\r
             square-foot{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} वर्ग फुट"}\r
+                        other{"{0} वर्ग फ़ीट"}\r
+                    }\r
+                }\r
                 dnam{"वर्गफ़ीट"}\r
+                gender{"masculine"}\r
                 one{"{0} वर्गफ़ुट"}\r
                 other{"{0} वर्गफ़ीट"}\r
             }\r
@@ -81,7 +123,14 @@ hi{
                 per{"{0}/वर्ग इंच"}\r
             }\r
             square-kilometer{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} वर्ग किलोमीटर"}\r
+                        other{"{0} वर्ग किलोमीटर"}\r
+                    }\r
+                }\r
                 dnam{"वर्ग किलोमीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} वर्ग किलोमीटर"}\r
                 other{"{0} वर्ग किलोमीटर"}\r
                 per{"{0} प्रति वर्ग किलोमीटर"}\r
@@ -93,7 +142,14 @@ hi{
                 per{"{0}/वर्ग मीटर"}\r
             }\r
             square-mile{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} वर्ग मील"}\r
+                        other{"{0} वर्ग मील"}\r
+                    }\r
+                }\r
                 dnam{"वर्ग मील"}\r
+                gender{"masculine"}\r
                 one{"{0} वर्ग मील"}\r
                 other{"{0} वर्ग मील"}\r
                 per{"{0}/वर्ग मील"}\r
@@ -105,7 +161,79 @@ hi{
             }\r
         }\r
         compound{\r
+            1024p1{"किबी{0}"}\r
+            1024p2{"मेबी{0}"}\r
+            1024p3{"जीबी{0}"}\r
+            1024p4{"टेबी{0}"}\r
+            1024p5{"पेबी{0}"}\r
+            1024p6{"एक्ज़बी{0}"}\r
+            1024p7{"ज़ेबी{0}"}\r
+            1024p8{"योबी{0}"}\r
+            10p-1{"डेसी{0}"}\r
+            10p-12{"पिको{0}"}\r
+            10p-15{"फ़ेम्टो{0}"}\r
+            10p-18{"अटो{0}"}\r
+            10p-2{"सेंटी{0}"}\r
+            10p-21{"ज़ेप्टो{0}"}\r
+            10p-24{"योक्टो{0}"}\r
+            10p-3{"मिली{0}"}\r
+            10p-6{"माइक्रो{0}"}\r
+            10p-9{"नैनो{0}"}\r
+            10p1{"डेका{0}"}\r
+            10p12{"टेरा{0}"}\r
+            10p15{"पेटा{0}"}\r
+            10p18{"एक्ज़ा{0}"}\r
+            10p2{"हेक्टो{0}"}\r
+            10p21{"ज़ेटा{0}"}\r
+            10p24{"योटा{0}"}\r
+            10p3{"किलो{0}"}\r
+            10p6{"मेगा{0}"}\r
+            10p9{"गीगा{0}"}\r
             per{"{0} प्रति {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"वर्ग {0}"}\r
+                        oblique{"वर्ग {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"वर्ग {0}"}\r
+                        oblique{"वर्ग {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"वर्ग {0}"}\r
+                        oblique{"वर्ग {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"वर्ग {0}"}\r
+                        oblique{"वर्ग {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"घन {0}"}\r
+                        oblique{"घन {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"घन {0}"}\r
+                        oblique{"घन {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"घन {0}"}\r
+                        oblique{"घन {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"घन {0}"}\r
+                        oblique{"घन {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +241,7 @@ hi{
                 one{"{0} कैरट"}\r
                 other{"{0} कैरट"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"मिलिग्राम प्रति डेसीलीटर"}\r
                 one{"{0} मिलिग्राम प्रति डेसीलीटर"}\r
                 other{"{0} मिलिग्राम प्रति डेसीलीटर"}\r
@@ -129,7 +257,14 @@ hi{
                 other{"{0} मोल"}\r
             }\r
             percent{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} प्रतिशत"}\r
+                        other{"{0} प्रतिशत"}\r
+                    }\r
+                }\r
                 dnam{"प्रतिशत"}\r
+                gender{"masculine"}\r
                 one{"{0} प्रतिशत"}\r
                 other{"{0} प्रतिशत"}\r
             }\r
@@ -151,7 +286,14 @@ hi{
         }\r
         consumption{\r
             liter-per-100-kilometer{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} लीटर प्रति 100 किलोमीटर"}\r
+                        other{"{0} लीटर प्रति 100 किलोमीटर"}\r
+                    }\r
+                }\r
                 dnam{"लीटर प्रति 100 किलोमीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} लीटर प्रति 100 किलोमीटर"}\r
                 other{"{0} लीटर प्रति 100 किलोमीटर"}\r
             }\r
@@ -161,12 +303,26 @@ hi{
                 other{"{0} लीटर प्रति किलोमीटर"}\r
             }\r
             mile-per-gallon{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मील प्रति गैलन"}\r
+                        other{"{0} मील प्रति गैलन"}\r
+                    }\r
+                }\r
                 dnam{"मील प्रति गैलन"}\r
+                gender{"masculine"}\r
                 one{"{0} मील प्रति गैलन"}\r
                 other{"{0} मील प्रति गैलन"}\r
             }\r
             mile-per-gallon-imperial{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मील प्रति इंपीरियल गैलन"}\r
+                        other{"{0} मील प्रति इंपीरियल गैलन"}\r
+                    }\r
+                }\r
                 dnam{"मील प्रति इंपीरियल गैलन"}\r
+                gender{"masculine"}\r
                 one{"{0} मील प्रति इंपीरियल गैलन"}\r
                 other{"{0} मील प्रति इंपीरियल गैलन"}\r
             }\r
@@ -242,7 +398,14 @@ hi{
                 other{"{0} शताब्दियाँ"}\r
             }\r
             day{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} दिन"}\r
+                        other{"{0} दिन"}\r
+                    }\r
+                }\r
                 dnam{"दिन"}\r
+                gender{"masculine"}\r
                 one{"{0} दिन"}\r
                 other{"{0} दिन"}\r
                 per{"{0} प्रति दिन"}\r
@@ -253,7 +416,14 @@ hi{
                 other{"{0} दशकों"}\r
             }\r
             hour{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} घंटे"}\r
+                        other{"{0} घंटों"}\r
+                    }\r
+                }\r
                 dnam{"घंटे"}\r
+                gender{"masculine"}\r
                 one{"{0} घंटा"}\r
                 other{"{0} घंटे"}\r
                 per{"{0} प्रति घंटा"}\r
@@ -269,13 +439,27 @@ hi{
                 other{"{0} मिलीसेकंड"}\r
             }\r
             minute{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मिनट"}\r
+                        other{"{0} मिनट"}\r
+                    }\r
+                }\r
                 dnam{"मिनट"}\r
+                gender{"masculine"}\r
                 one{"{0} मिनट"}\r
                 other{"{0} मिनट"}\r
                 per{"{0} प्रति मिनट"}\r
             }\r
             month{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} महीने"}\r
+                        other{"{0} माह"}\r
+                    }\r
+                }\r
                 dnam{"माह"}\r
+                gender{"masculine"}\r
                 one{"{0} माह"}\r
                 other{"{0} माह"}\r
                 per{"{0} प्रति माह"}\r
@@ -286,19 +470,40 @@ hi{
                 other{"{0} नैनो सेकंड"}\r
             }\r
             second{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} सेकेंड"}\r
+                        other{"{0} सेकेंड"}\r
+                    }\r
+                }\r
                 dnam{"सेकंड"}\r
+                gender{"masculine"}\r
                 one{"{0} सेकंड"}\r
                 other{"{0} सेकंड"}\r
                 per{"{0} प्रति सेकंड"}\r
             }\r
             week{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} सप्ताह"}\r
+                        other{"{0} सप्ताह"}\r
+                    }\r
+                }\r
                 dnam{"सप्ताह"}\r
+                gender{"masculine"}\r
                 one{"{0} सप्ताह"}\r
                 other{"{0} सप्ताह"}\r
                 per{"{0} प्रति सप्ताह"}\r
             }\r
             year{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} वर्ष"}\r
+                        other{"{0} वर्ष"}\r
+                    }\r
+                }\r
                 dnam{"वर्ष"}\r
+                gender{"masculine"}\r
                 one{"{0} वर्ष"}\r
                 other{"{0} वर्ष"}\r
                 per{"{0} प्रति वर्ष"}\r
@@ -343,7 +548,14 @@ hi{
                 other{"{0} इलेक्ट्रॉनवोल्ट"}\r
             }\r
             foodcalorie{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} कैलोरी"}\r
+                        other{"{0} कैलोरी"}\r
+                    }\r
+                }\r
                 dnam{"कैलोरी"}\r
+                gender{"feminine"}\r
                 one{"{0} कैलोरी"}\r
                 other{"{0} कैलोरी"}\r
             }\r
@@ -353,7 +565,14 @@ hi{
                 other{"{0} जूल"}\r
             }\r
             kilocalorie{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} किलोकैलोरी"}\r
+                        other{"{0} किलोकैलोरी"}\r
+                    }\r
+                }\r
                 dnam{"किलो कैलोरी"}\r
+                gender{"masculine"}\r
                 one{"{0} किलो कैलोरी"}\r
                 other{"{0} किलो कैलोरी"}\r
             }\r
@@ -452,7 +671,14 @@ hi{
                 other{"{0} खगोलीय इकाईयां"}\r
             }\r
             centimeter{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} सेंटीमीटर"}\r
+                        other{"{0} सेंटीमीटर"}\r
+                    }\r
+                }\r
                 dnam{"सेंटीमीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} सेंटीमीटर"}\r
                 other{"{0} सेंटीमीटर"}\r
                 per{"{0}/सेंटीमीटर"}\r
@@ -473,7 +699,14 @@ hi{
                 other{"{0} फ़ैदम"}\r
             }\r
             foot{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} फुट"}\r
+                        other{"{0} फुट"}\r
+                    }\r
+                }\r
                 dnam{"फ़ीट"}\r
+                gender{"masculine"}\r
                 one{"{0} फ़ुट"}\r
                 other{"{0} फ़ीट"}\r
                 per{"{0}/फ़ीट"}\r
@@ -484,13 +717,27 @@ hi{
                 other{"{0} फ़र्लांग"}\r
             }\r
             inch{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} इंच"}\r
+                        other{"{0} इंच"}\r
+                    }\r
+                }\r
                 dnam{"इंच"}\r
+                gender{"masculine"}\r
                 one{"{0} इंच"}\r
                 other{"{0} इंच"}\r
                 per{"{0}/इंच"}\r
             }\r
             kilometer{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} किलोमीटर"}\r
+                        other{"{0} किलोमीटर"}\r
+                    }\r
+                }\r
                 dnam{"किलोमीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} किलोमीटर"}\r
                 other{"{0} किलोमीटर"}\r
                 per{"{0}/किलोमीटर"}\r
@@ -501,7 +748,14 @@ hi{
                 other{"{0} प्रकाश वर्ष"}\r
             }\r
             meter{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मीटर"}\r
+                        other{"{0} मीटर"}\r
+                    }\r
+                }\r
                 dnam{"मीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} मीटर"}\r
                 other{"{0} मीटर"}\r
                 per{"{0}/मीटर"}\r
@@ -512,7 +766,14 @@ hi{
                 other{"{0} माइक्रोमीटर"}\r
             }\r
             mile{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मील"}\r
+                        other{"{0} मील"}\r
+                    }\r
+                }\r
                 dnam{"मील"}\r
+                gender{"masculine"}\r
                 one{"{0} मील"}\r
                 other{"{0} मील"}\r
             }\r
@@ -522,7 +783,14 @@ hi{
                 other{"{0} मील-स्कैण्डिनेवियन"}\r
             }\r
             millimeter{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मिलीमीटर"}\r
+                        other{"{0} मिलीमीटर"}\r
+                    }\r
+                }\r
                 dnam{"मिलीमीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} मिलीमीटर"}\r
                 other{"{0} मिलीमीटर"}\r
             }\r
@@ -537,12 +805,26 @@ hi{
                 other{"{0} नॉटिकल मील"}\r
             }\r
             parsec{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} पार्सेक"}\r
+                        other{"{0} पार्सेक"}\r
+                    }\r
+                }\r
                 dnam{"पार्सेक"}\r
+                gender{"masculine"}\r
                 one{"{0} पार्सेक"}\r
                 other{"{0} पार्सेक"}\r
             }\r
             picometer{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} पिकोमीटर"}\r
+                        other{"{0} पिकोमीटर"}\r
+                    }\r
+                }\r
                 dnam{"पिकोमीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} पिकोमीटर"}\r
                 other{"{0} पिकोमीटर"}\r
             }\r
@@ -552,12 +834,26 @@ hi{
                 other{"{0} pt"}\r
             }\r
             solar-radius{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} सौर अर्धव्यास"}\r
+                        other{"{0} सौर अर्धव्यास"}\r
+                    }\r
+                }\r
                 dnam{"सौर अर्धव्यास"}\r
+                gender{"masculine"}\r
                 one{"{0} सौर अर्धव्यास"}\r
                 other{"{0} सौर अर्धव्यास"}\r
             }\r
             yard{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} यार्ड"}\r
+                        other{"{0} यार्ड"}\r
+                    }\r
+                }\r
                 dnam{"यार्ड"}\r
+                gender{"masculine"}\r
                 one{"{0} यार्ड"}\r
                 other{"{0} यार्ड"}\r
             }\r
@@ -579,7 +875,14 @@ hi{
                 other{"{0} लक्स"}\r
             }\r
             solar-luminosity{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} सौर ज्योति"}\r
+                        other{"{0} सौर ज्योति"}\r
+                    }\r
+                }\r
                 dnam{"सौर ज्योति"}\r
+                gender{"masculine"}\r
                 one{"{0} सौर ज्योति"}\r
                 other{"{0} सौर ज्योति"}\r
             }\r
@@ -591,28 +894,63 @@ hi{
                 other{"{0} कैरेट"}\r
             }\r
             dalton{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} डाल्टन"}\r
+                        other{"{0} डाल्टन"}\r
+                    }\r
+                }\r
                 dnam{"डाल्टन"}\r
+                gender{"masculine"}\r
                 one{"{0} डाल्टन"}\r
                 other{"{0} डाल्टन"}\r
             }\r
             earth-mass{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} पृथ्वी द्रव्यमान"}\r
+                        other{"{0} पृथ्वी द्रव्यमान"}\r
+                    }\r
+                }\r
                 dnam{"पृथ्वी द्रव्यमान"}\r
+                gender{"masculine"}\r
                 one{"{0} पृथ्वी द्रव्यमान"}\r
                 other{"{0} पृथ्वी द्रव्यमान"}\r
             }\r
             grain{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} डेढ़ रत्ती"}\r
+                        other{"{0} डेढ़ रत्ती"}\r
+                    }\r
+                }\r
                 dnam{"डेढ़ रत्ती"}\r
+                gender{"masculine"}\r
                 one{"{0} डेढ़ रत्ती"}\r
                 other{"{0} डेढ़ रत्ती"}\r
             }\r
             gram{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} ग्राम"}\r
+                        other{"{0} ग्राम"}\r
+                    }\r
+                }\r
                 dnam{"ग्राम"}\r
+                gender{"masculine"}\r
                 one{"{0} ग्राम"}\r
                 other{"{0} ग्राम"}\r
                 per{"{0}/ग्राम"}\r
             }\r
             kilogram{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} किलोग्राम"}\r
+                        other{"{0} किलोग्राम"}\r
+                    }\r
+                }\r
                 dnam{"किलोग्राम"}\r
+                gender{"masculine"}\r
                 one{"{0} किलोग्राम"}\r
                 other{"{0} किलोग्राम"}\r
                 per{"{0}/किलोग्राम"}\r
@@ -628,12 +966,26 @@ hi{
                 other{"{0} माइक्रोग्राम"}\r
             }\r
             milligram{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मिलीग्राम"}\r
+                        other{"{0} मिलीग्राम"}\r
+                    }\r
+                }\r
                 dnam{"मिलीग्राम"}\r
+                gender{"masculine"}\r
                 one{"{0} मिलीग्राम"}\r
                 other{"{0} मिलीग्राम"}\r
             }\r
             ounce{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} औंस"}\r
+                        other{"{0} औंस"}\r
+                    }\r
+                }\r
                 dnam{"औंस"}\r
+                gender{"masculine"}\r
                 one{"{0} औंस"}\r
                 other{"{0} औंस"}\r
                 per{"{0}/औंस"}\r
@@ -644,13 +996,27 @@ hi{
                 other{"{0} ट्राई औंस"}\r
             }\r
             pound{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} पौंड"}\r
+                        other{"{0} पौंड"}\r
+                    }\r
+                }\r
                 dnam{"पौंड"}\r
+                gender{"masculine"}\r
                 one{"{0} पौंड"}\r
                 other{"{0} पौंड"}\r
                 per{"{0}/पौंड"}\r
             }\r
             solar-mass{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} सौर द्रव्यमान"}\r
+                        other{"{0} सौर द्रव्यमान"}\r
+                    }\r
+                }\r
                 dnam{"सौर द्रव्यमान"}\r
+                gender{"masculine"}\r
                 one{"{0} सौर द्रव्यमान"}\r
                 other{"{0} सौर द्रव्यमान"}\r
             }\r
@@ -719,7 +1085,14 @@ hi{
                 other{"{0} मर्करी इंच"}\r
             }\r
             kilopascal{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} किलोपास्कल"}\r
+                        other{"{0} किलोपास्कल"}\r
+                    }\r
+                }\r
                 dnam{"किलोपास्कल"}\r
+                gender{"masculine"}\r
                 one{"{0} किलोपास्कल"}\r
                 other{"{0} किलोपास्कल"}\r
             }\r
@@ -751,7 +1124,14 @@ hi{
         }\r
         speed{\r
             kilometer-per-hour{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} किलोमीटर प्रति घंटा"}\r
+                        other{"{0} किलोमीटर प्रति घंटा"}\r
+                    }\r
+                }\r
                 dnam{"किलोमीटर प्रति घंटा"}\r
+                gender{"masculine"}\r
                 one{"{0} किलोमीटर प्रति घंटा"}\r
                 other{"{0} किलोमीटर प्रति घंटा"}\r
             }\r
@@ -761,34 +1141,76 @@ hi{
                 other{"{0} नॉट"}\r
             }\r
             meter-per-second{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मीटर प्रति सेकंड"}\r
+                        other{"{0} मीटर प्रति सेकंड"}\r
+                    }\r
+                }\r
                 dnam{"मीटर प्रति सेकंड"}\r
+                gender{"masculine"}\r
                 one{"{0} मीटर प्रति सेकंड"}\r
                 other{"{0} मीटर प्रति सेकंड"}\r
             }\r
             mile-per-hour{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मील प्रति घंटा"}\r
+                        other{"{0} मील प्रति घंटा"}\r
+                    }\r
+                }\r
                 dnam{"मील प्रति घंटा"}\r
+                gender{"masculine"}\r
                 one{"{0} मील प्रति घंटा"}\r
                 other{"{0} मील प्रति घंटा"}\r
             }\r
         }\r
         temperature{\r
             celsius{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} डिग्री सेल्सियस"}\r
+                        other{"{0} डिग्री सेल्सियस"}\r
+                    }\r
+                }\r
                 dnam{"डिग्री सेल्सियस"}\r
+                gender{"masculine"}\r
                 one{"{0} डिग्री सेल्सियस"}\r
                 other{"{0} डिग्री सेल्सियस"}\r
             }\r
             fahrenheit{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} डिग्री फॉरेन्हाइट"}\r
+                        other{"{0} डिग्री फॉरेन्हाइट"}\r
+                    }\r
+                }\r
                 dnam{"डिग्री फ़ेरनहाइट"}\r
+                gender{"masculine"}\r
                 one{"{0} डिग्री फ़ेरनहाइट"}\r
                 other{"{0} डिग्री फ़ेरनहाइट"}\r
             }\r
             generic{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} डिग्री"}\r
+                        other{"{0} डिग्री"}\r
+                    }\r
+                }\r
                 dnam{"°"}\r
+                gender{"feminine"}\r
                 one{"{0}°"}\r
                 other{"{0}°"}\r
             }\r
             kelvin{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} केल्विन"}\r
+                        other{"{0} केल्विन"}\r
+                    }\r
+                }\r
                 dnam{"केल्विन"}\r
+                gender{"masculine"}\r
                 one{"{0} केल्विन"}\r
                 other{"{0} केल्विन"}\r
             }\r
@@ -822,18 +1244,39 @@ hi{
                 other{"{0} बुशल"}\r
             }\r
             centiliter{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} सेंटीलीटर"}\r
+                        other{"{0} सेंटीलीटर"}\r
+                    }\r
+                }\r
                 dnam{"सेंटीलीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} सेंटीलीटर"}\r
                 other{"{0} सेंटीलीटर"}\r
             }\r
             cubic-centimeter{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} घन सेंटीमीटर"}\r
+                        other{"{0} घन. सेंटी."}\r
+                    }\r
+                }\r
                 dnam{"घन सेंटीमीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} घन सेंटीमीटर"}\r
                 other{"{0} घन सेंटीमीटर"}\r
                 per{"{0}/घन सेंटीमीटर"}\r
             }\r
             cubic-foot{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} घन फुट"}\r
+                        other{"{0} घन फुट"}\r
+                    }\r
+                }\r
                 dnam{"घन फ़ीट"}\r
+                gender{"masculine"}\r
                 one{"{0} घन फ़ीट"}\r
                 other{"{0} घन फ़ीट"}\r
             }\r
@@ -854,7 +1297,14 @@ hi{
                 per{"{0}/घन मीटर"}\r
             }\r
             cubic-mile{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} घन मील"}\r
+                        other{"{0} घन मील"}\r
+                    }\r
+                }\r
                 dnam{"घन मील"}\r
+                gender{"masculine"}\r
                 one{"{0} घन मील"}\r
                 other{"{0} घन मील"}\r
             }\r
@@ -864,7 +1314,14 @@ hi{
                 other{"{0} घन यार्ड"}\r
             }\r
             cup{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} कप"}\r
+                        other{"{0} कप"}\r
+                    }\r
+                }\r
                 dnam{"कप"}\r
+                gender{"masculine"}\r
                 one{"{0} कप"}\r
                 other{"{0} कप"}\r
             }\r
@@ -874,48 +1331,111 @@ hi{
                 other{"{0} मीट्रिक कप"}\r
             }\r
             deciliter{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} डेसीलीटर"}\r
+                        other{"{0} डेसीलीटर"}\r
+                    }\r
+                }\r
                 dnam{"डेसीलीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} डेसीलीटर"}\r
                 other{"{0} डेसीलीटर"}\r
             }\r
             dessert-spoon{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} डेज़र्ट स्पून"}\r
+                        other{"{0} डेज़र्ट स्पून"}\r
+                    }\r
+                }\r
                 dnam{"डेज़र्ट स्पून"}\r
+                gender{"masculine"}\r
                 one{"{0} डेज़र्ट स्पून"}\r
                 other{"{0} डेज़र्ट स्पून"}\r
             }\r
             dessert-spoon-imperial{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} इम्पीरियल डेज़र्टस्पून"}\r
+                        other{"{0} इम्पीरियल डेज़र्टस्पून"}\r
+                    }\r
+                }\r
                 dnam{"इम्पीरियल डेज़र्टस्पून"}\r
+                gender{"masculine"}\r
                 one{"{0} इम्पीरियल डेज़र्टस्पून"}\r
                 other{"{0} इम्पीरियल डेज़र्टस्पून"}\r
             }\r
             dram{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} ड्रम"}\r
+                        other{"{0} ड्रम"}\r
+                    }\r
+                }\r
                 dnam{"ड्रम फ्लूइड"}\r
+                gender{"masculine"}\r
                 one{"{0} ड्रम"}\r
                 other{"{0} ड्रम"}\r
             }\r
             drop{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} बूंद"}\r
+                        other{"{0} बूंद"}\r
+                    }\r
+                }\r
                 dnam{"बूंद"}\r
+                gender{"masculine"}\r
                 one{"{0} बूंद"}\r
                 other{"{0} बूंद"}\r
             }\r
             fluid-ounce{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} फ़्लूइड आउंस"}\r
+                        other{"{0} फ़्लूइड आउंस"}\r
+                    }\r
+                }\r
                 dnam{"फ़्लूइड आउंस"}\r
+                gender{"masculine"}\r
                 one{"{0} फ़्लूइड आउंस"}\r
                 other{"{0} फ़्लूइड आउंस"}\r
             }\r
             fluid-ounce-imperial{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} इम्पी॰ फ़्लूइड आउंस"}\r
+                        other{"{0} इम्पी॰ फ़्लूइड आउंस"}\r
+                    }\r
+                }\r
                 dnam{"इम्पी॰ फ़्लुइड आउंस"}\r
+                gender{"masculine"}\r
                 one{"{0} इम्पी॰ फ़्लुइड आउंस"}\r
                 other{"{0} इम्पी॰ फ़्लुइड आउंस"}\r
             }\r
             gallon{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} गैलन"}\r
+                        other{"{0} गैलन"}\r
+                    }\r
+                }\r
                 dnam{"गैलन"}\r
+                gender{"masculine"}\r
                 one{"{0} गैलन"}\r
                 other{"{0} गैलन"}\r
                 per{"{0}/गैलन"}\r
             }\r
             gallon-imperial{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} इंपीरियल गैलन"}\r
+                        other{"{0} इंपीरियल गैलन"}\r
+                    }\r
+                }\r
                 dnam{"इम्पीरियल गैलन"}\r
+                gender{"masculine"}\r
                 one{"{0} इम्पीरियल गैलन"}\r
                 other{"{0} इम्पीरियल गैलन"}\r
                 per{"{0}/इम्पीरियल गैलन"}\r
@@ -926,12 +1446,26 @@ hi{
                 other{"{0} हैक्टोलीटर"}\r
             }\r
             jigger{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} जिगर"}\r
+                        other{"{0} जिगर"}\r
+                    }\r
+                }\r
                 dnam{"जिगर"}\r
+                gender{"masculine"}\r
                 one{"{0} जिगर"}\r
                 other{"{0} जिगर"}\r
             }\r
             liter{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} लीटर"}\r
+                        other{"{0} लीटर"}\r
+                    }\r
+                }\r
                 dnam{"लीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} लीटर"}\r
                 other{"{0} लीटर"}\r
                 per{"{0}/लीटर"}\r
@@ -942,16 +1476,37 @@ hi{
                 other{"{0} मेगालीटर"}\r
             }\r
             milliliter{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} मिलीलीटर"}\r
+                        other{"{0} मिलीलीटर"}\r
+                    }\r
+                }\r
                 dnam{"मिलीलीटर"}\r
+                gender{"masculine"}\r
                 one{"{0} मिलीलीटर"}\r
                 other{"{0} मिलीलीटर"}\r
             }\r
             pinch{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} चुटकी"}\r
+                        other{"{0} चुटकी"}\r
+                    }\r
+                }\r
                 dnam{"चुटकी"}\r
+                gender{"masculine"}\r
                 one{"{0} चुटकी"}\r
                 other{"{0} चुटकी"}\r
             }\r
             pint{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} पाइंट"}\r
+                        other{"{0} पाइंट"}\r
+                    }\r
+                }\r
+                gender{"masculine"}\r
                 one{"{0} पाइंट"}\r
                 other{"{0} पाइंट"}\r
             }\r
@@ -961,22 +1516,50 @@ hi{
                 other{"{0} मीट्रिक पिंट"}\r
             }\r
             quart{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} क्वार्ट"}\r
+                        other{"{0} क्वार्ट"}\r
+                    }\r
+                }\r
                 dnam{"क्वार्ट"}\r
+                gender{"masculine"}\r
                 one{"{0} क्वार्ट"}\r
                 other{"{0} क्वार्ट"}\r
             }\r
             quart-imperial{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} क्वार्ट इम्पीरियल"}\r
+                        other{"{0} क्वार्ट इम्पीरियल"}\r
+                    }\r
+                }\r
                 dnam{"क्वार्ट इम्पीरियल"}\r
+                gender{"masculine"}\r
                 one{"{0} क्वार्ट इम्पीरियल"}\r
                 other{"{0} क्वार्ट इम्पीरियल"}\r
             }\r
             tablespoon{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} टेबलस्पून"}\r
+                        other{"{0} टेबलस्पून"}\r
+                    }\r
+                }\r
                 dnam{"टेबलस्पून"}\r
+                gender{"masculine"}\r
                 one{"{0} टेबलस्पून"}\r
                 other{"{0} टेबलस्पून"}\r
             }\r
             teaspoon{\r
+                case{\r
+                    oblique{\r
+                        one{"{0} टी स्पून"}\r
+                        other{"{0} टी स्पून"}\r
+                    }\r
+                }\r
                 dnam{"टी स्पून"}\r
+                gender{"masculine"}\r
                 one{"{0} टी स्पून"}\r
                 other{"{0} टी स्पून"}\r
             }\r
@@ -1031,7 +1614,50 @@ hi{
             }\r
         }\r
         compound{\r
+            10p-1{"डे {0}"}\r
+            10p-12{"पि {0}"}\r
+            10p-15{"फ़े {0}"}\r
+            10p-18{"अ {0}"}\r
+            10p-2{"से {0}"}\r
+            10p-21{"ज़े {0}"}\r
+            10p-24{"यो {0}"}\r
+            10p-3{"मि {0}"}\r
+            10p-9{"नै {0}"}\r
+            10p1{"डे {0}"}\r
+            10p12{"टे {0}"}\r
+            10p15{"पे {0}"}\r
+            10p18{"ए {0}"}\r
+            10p2{"हे {0}"}\r
+            10p21{"ज़े {0}"}\r
+            10p24{"यो {0}"}\r
+            10p3{"कि {0}"}\r
+            10p6{"मे {0}"}\r
+            10p9{"गी {0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1340,7 +1966,50 @@ hi{
             }\r
         }\r
         compound{\r
+            10p-1{"डे.{0}"}\r
+            10p-12{"पि.{0}"}\r
+            10p-15{"फ़े.{0}"}\r
+            10p-18{"अ.{0}"}\r
+            10p-2{"से.{0}"}\r
+            10p-21{"ज़ेे.{0}"}\r
+            10p-24{"यो.{0}"}\r
+            10p-3{"मि.{0}"}\r
+            10p-9{"नै.{0}"}\r
+            10p1{"डेका {0}"}\r
+            10p12{"टे.{0}"}\r
+            10p15{"पे.{0}"}\r
+            10p18{"ए.{0}"}\r
+            10p2{"हे.{0}"}\r
+            10p21{"ज़े.{0}"}\r
+            10p24{"योटा {0}"}\r
+            10p3{"कि.{0}"}\r
+            10p6{"मे.{0}"}\r
+            10p9{"गी.{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1348,7 +2017,7 @@ hi{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"मि॰ग्रा॰/डे॰ली॰"}\r
                 one{"{0} मि॰ग्रा॰/डे॰ली॰"}\r
                 other{"{0} मि॰ग्रा॰/डे॰ली॰"}\r
@@ -1692,9 +2361,9 @@ hi{
                 per{"{0}/मी"}\r
             }\r
             micrometer{\r
-                dnam{"µ मा॰मी॰"}\r
-                one{"{0} µ मा॰मी॰"}\r
-                other{"{0} µ मा॰मी॰"}\r
+                dnam{"μ मा॰मी॰"}\r
+                one{"{0} μ मा॰मी॰"}\r
+                other{"{0} μ मा॰मी॰"}\r
             }\r
             mile{\r
                 dnam{"मील"}\r
index 161a2d7..f3c235d 100644 (file)
@@ -122,7 +122,69 @@ hr{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"jobi{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"jokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zeta{0}"}\r
+            10p24{"jota{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"četvorna {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"četvorni {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"četvornih {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"kubna {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"kubni {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubnih {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -131,7 +193,7 @@ hr{
                 one{"{0} karat"}\r
                 other{"{0} karata"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligrami po decilitru"}\r
                 few{"{0} miligrama po decilitru"}\r
                 one{"{0} miligram po decilitru"}\r
@@ -1529,9 +1591,9 @@ hr{
                 other{"{0} m"}\r
             }\r
             micrometer{\r
-                few{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                few{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 few{"{0} mi"}\r
@@ -1601,9 +1663,9 @@ hr{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 few{"{0} mg"}\r
@@ -1971,7 +2033,7 @@ hr{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 few{"{0} mg/dl"}\r
                 one{"{0} mg/dl"}\r
@@ -2419,10 +2481,10 @@ hr{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -2524,10 +2586,10 @@ hr{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 385e3d9..bf83752 100644 (file)
@@ -1723,11 +1723,11 @@ hsb{
                 two{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
-                two{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
+                two{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 5f6805c..d853caa 100644 (file)
@@ -100,7 +100,59 @@ hu{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} per {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"négyzet{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"négyzet{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"köb{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"köb{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -108,7 +160,7 @@ hu{
                 one{"{0} karát"}\r
                 other{"{0} karát"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligramm/deciliter"}\r
                 one{"{0} milligramm/deciliter"}\r
                 other{"{0} milligramm/deciliter"}\r
@@ -1025,7 +1077,39 @@ hu{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1392,7 +1476,39 @@ hu{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1400,7 +1516,7 @@ hu{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1671,7 +1787,7 @@ hu{
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
                 one{"{0} dpcm"}\r
-                other{"{0} dpcm"}\r
+                other{"{0} ppcm"}\r
             }\r
             em{\r
                 dnam{"em"}\r
@@ -1742,9 +1858,9 @@ hu{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mf"}\r
@@ -1831,9 +1947,9 @@ hu{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 26c4505..ebd5075 100644 (file)
@@ -105,7 +105,59 @@ hy{
             }\r
         }\r
         compound{\r
+            1024p1{"կիբի{0}"}\r
+            1024p2{"մեբի{0}"}\r
+            1024p3{"գիբի{0}"}\r
+            1024p4{"տեբի{0}"}\r
+            1024p5{"փեբի{0}"}\r
+            1024p6{"Էքսբի{0}"}\r
+            1024p7{"զեբի{0}"}\r
+            1024p8{"Յոբի{0}"}\r
+            10p-1{"դեցի{0}"}\r
+            10p-12{"պիկո{0}"}\r
+            10p-15{"ֆեմտո{0}"}\r
+            10p-18{"ատտո{0}"}\r
+            10p-2{"սանտի{0}"}\r
+            10p-21{"զեպտո{0}"}\r
+            10p-24{"յոկտո{0}"}\r
+            10p-3{"միլի{0}"}\r
+            10p-6{"միկրո{0}"}\r
+            10p-9{"նանո{0}"}\r
+            10p1{"դեկա{0}"}\r
+            10p12{"տերա{0}"}\r
+            10p15{"պետա{0}"}\r
+            10p18{"էքսա{0}"}\r
+            10p2{"հեկտո{0}"}\r
+            10p21{"զետտա{0}"}\r
+            10p24{"յոտտա{0}"}\r
+            10p3{"կիլո{0}"}\r
+            10p6{"մեգա{0}"}\r
+            10p9{"գիգա{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"քառակուսի {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"քառակուսի {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"խորանարդ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"խորանարդ {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ hy{
                 one{"{0} կարատ"}\r
                 other{"{0} կարատ"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"միլիգրամներ դեցիլիտրի վրա"}\r
                 one{"{0} միլիգրամ դեցիլիտրի վրա"}\r
                 other{"{0} միլիգրամ դեցիլիտրի վրա"}\r
@@ -1014,7 +1066,59 @@ hy{
             }\r
         }\r
         compound{\r
+            1024p1{"Կի{0}"}\r
+            1024p2{"Մի{0}"}\r
+            1024p3{"Գի{0}"}\r
+            1024p4{"Տի{0}"}\r
+            1024p5{"Փի{0}"}\r
+            1024p6{"Էի{0}"}\r
+            1024p7{"Զի{0}"}\r
+            1024p8{"Յի{0}"}\r
+            10p-1{"դ{0}"}\r
+            10p-12{"պ{0}"}\r
+            10p-15{"ֆ{0}"}\r
+            10p-18{"ա{0}"}\r
+            10p-2{"ս{0}"}\r
+            10p-21{"զ{0}"}\r
+            10p-24{"յ{0}"}\r
+            10p-3{"մ{0}"}\r
+            10p-6{"մկ{0}"}\r
+            10p-9{"ն{0}"}\r
+            10p1{"դա{0}"}\r
+            10p12{"Տ{0}"}\r
+            10p15{"Պ{0}"}\r
+            10p18{"Է{0}"}\r
+            10p2{"հ{0}"}\r
+            10p21{"Զ{0}"}\r
+            10p24{"Յ{0}"}\r
+            10p3{"կ{0}"}\r
+            10p6{"Մ{0}"}\r
+            10p9{"Գ{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1313,7 +1417,59 @@ hy{
             }\r
         }\r
         compound{\r
+            1024p1{"Կի{0}"}\r
+            1024p2{"Մի{0}"}\r
+            1024p3{"Գի{0}"}\r
+            1024p4{"Տի{0}"}\r
+            1024p5{"Փի{0}"}\r
+            1024p6{"Էի{0}"}\r
+            1024p7{"Զի{0}"}\r
+            1024p8{"Յի{0}"}\r
+            10p-1{"դ{0}"}\r
+            10p-12{"պ{0}"}\r
+            10p-15{"ֆ{0}"}\r
+            10p-18{"ա{0}"}\r
+            10p-2{"ս{0}"}\r
+            10p-21{"զ{0}"}\r
+            10p-24{"յ{0}"}\r
+            10p-3{"մ{0}"}\r
+            10p-6{"մկ{0}"}\r
+            10p-9{"ն{0}"}\r
+            10p1{"դա{0}"}\r
+            10p12{"Տ{0}"}\r
+            10p15{"Պ{0}"}\r
+            10p18{"Է{0}"}\r
+            10p2{"հ{0}"}\r
+            10p21{"Զ{0}"}\r
+            10p24{"Յ{0}"}\r
+            10p3{"կ{0}"}\r
+            10p6{"Մ{0}"}\r
+            10p9{"Գ{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1321,7 +1477,7 @@ hy{
                 one{"{0} կար"}\r
                 other{"{0} կար"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"մգ/դլ"}\r
                 one{"{0} մգ/դլ"}\r
                 other{"{0} մգ/դլ"}\r
index 899090d..a2cae22 100644 (file)
@@ -108,7 +108,7 @@ ia{
                 one{"{0} kt"}\r
                 other{"{0} carates"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligrammas per decilitro"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} milligrammas per decilitro"}\r
@@ -408,7 +408,7 @@ ia{
             }\r
             micrometer{\r
                 dnam{"micrometros"}\r
-                one{"{0} µm"}\r
+                one{"{0} μm"}\r
                 other{"{0} micrometros"}\r
             }\r
             mile{\r
@@ -489,7 +489,7 @@ ia{
             }\r
             microgram{\r
                 dnam{"microgrammas"}\r
-                one{"{0} µg"}\r
+                one{"{0} μg"}\r
                 other{"{0} microgrammas"}\r
             }\r
             milligram{\r
@@ -980,7 +980,7 @@ ia{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1279,9 +1279,9 @@ ia{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1360,9 +1360,9 @@ ia{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 3686255..aac77a3 100644 (file)
@@ -84,14 +84,56 @@ id{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} per {1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0} persegi"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0} kubik"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"karat"}\r
                 other{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligram per desiliter"}\r
                 other{"{0} milligram per desiliter"}\r
             }\r
@@ -809,6 +851,14 @@ id{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -923,8 +973,8 @@ id{
                 other{"{0}m"}\r
             }\r
             micrometer{\r
-                dnam{"µmeter"}\r
-                other{"{0}µm"}\r
+                dnam{"μmeter"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mil"}\r
@@ -1088,6 +1138,14 @@ id{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1095,7 +1153,7 @@ id{
                 dnam{"karat"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 other{"{0} mg/dL"}\r
             }\r
@@ -1381,8 +1439,8 @@ id{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmeter"}\r
-                other{"{0} µm"}\r
+                dnam{"μmeter"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mil"}\r
@@ -1471,8 +1529,8 @@ id{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index ffacb66..066b058 100644 (file)
@@ -105,7 +105,59 @@ is{
             }\r
         }\r
         compound{\r
+            1024p1{"k´íbí{0}"}\r
+            1024p2{"mebí{0}"}\r
+            1024p3{"gíbí{0}"}\r
+            1024p4{"tebí{0}"}\r
+            1024p5{"pebí{0}"}\r
+            1024p6{"exbí{0}"}\r
+            1024p7{"sebí{0}"}\r
+            1024p8{"jóbe{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"píkó{0}"}\r
+            10p-15{"femtó{0}"}\r
+            10p-18{"attó{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"septó{0}"}\r
+            10p-24{"jóktó{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"míkró{0}"}\r
+            10p-9{"nanó{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hektó{0}"}\r
+            10p21{"setta{0}"}\r
+            10p24{"jótta{0}"}\r
+            10p3{"kíló{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"gíga{0}"}\r
             per{"{0} á {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"fer{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"fer{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"rúm{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"rúm{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ is{
                 one{"{0} karat"}\r
                 other{"{0} karöt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligrömm á desílítra"}\r
                 one{"{0} milligramm á desílítra"}\r
                 other{"{0} milligrömm á desílítra"}\r
@@ -1041,10 +1093,12 @@ is{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0}mg/dL"}\r
                 other{"{0}mg/dL"}\r
@@ -1200,9 +1254,9 @@ is{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmetrar"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmetrar"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mílur"}\r
@@ -1274,9 +1328,9 @@ is{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -1516,6 +1570,7 @@ is{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1524,7 +1579,7 @@ is{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1902,9 +1957,9 @@ is{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmetrar"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmetrar"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mílur"}\r
@@ -2009,9 +2064,9 @@ is{
                 other{"{0} tn"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index bb56298..d1a8c3e 100644 (file)
@@ -11,11 +11,13 @@ it{
         acceleration{\r
             g-force{\r
                 dnam{"forza g"}\r
+                gender{"feminine"}\r
                 one{"{0} forza g"}\r
                 other{"{0} forza g"}\r
             }\r
             meter-per-square-second{\r
                 dnam{"metri al secondo quadrato"}\r
+                gender{"masculine"}\r
                 one{"{0} metro al secondo quadrato"}\r
                 other{"{0} metri al secondo quadrato"}\r
             }\r
@@ -50,6 +52,7 @@ it{
         area{\r
             acre{\r
                 dnam{"acri"}\r
+                gender{"masculine"}\r
                 one{"{0} acro"}\r
                 other{"{0} acri"}\r
             }\r
@@ -60,17 +63,20 @@ it{
             }\r
             hectare{\r
                 dnam{"ettari"}\r
+                gender{"masculine"}\r
                 one{"{0} ettaro"}\r
                 other{"{0} ettari"}\r
             }\r
             square-centimeter{\r
                 dnam{"centimetri quadrati"}\r
+                gender{"masculine"}\r
                 one{"{0} centimetro quadrato"}\r
                 other{"{0} centimetri quadrati"}\r
                 per{"{0} per centimetro quadrato"}\r
             }\r
             square-foot{\r
                 dnam{"piedi quadrati"}\r
+                gender{"masculine"}\r
                 one{"{0} piede quadrato"}\r
                 other{"{0} piedi quadrati"}\r
             }\r
@@ -82,6 +88,7 @@ it{
             }\r
             square-kilometer{\r
                 dnam{"chilometri quadrati"}\r
+                gender{"masculine"}\r
                 one{"{0} chilometro quadrato"}\r
                 other{"{0} chilometri quadrati"}\r
                 per{"{0} per chilometro quadrato"}\r
@@ -94,6 +101,7 @@ it{
             }\r
             square-mile{\r
                 dnam{"miglia quadrate"}\r
+                gender{"feminine"}\r
                 one{"{0} miglio quadrato"}\r
                 other{"{0} miglia quadrate"}\r
                 per{"{0} per miglio quadrato"}\r
@@ -105,7 +113,71 @@ it{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deca{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"etto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} al {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} quadrato"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} quadrata"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} quadrati"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} quadrate"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} cubo"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} cubica"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} cubi"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} cubiche"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0} {1}"}\r
         }\r
         concentr{\r
@@ -114,7 +186,7 @@ it{
                 one{"{0} carato"}\r
                 other{"{0} carati"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligrammi per decilitro"}\r
                 one{"{0} milligrammo per decilitro"}\r
                 other{"{0} milligrammi per decilitro"}\r
@@ -131,6 +203,7 @@ it{
             }\r
             percent{\r
                 dnam{"percentuale"}\r
+                gender{"masculine"}\r
                 one{"{0} percento"}\r
                 other{"{0} percento"}\r
             }\r
@@ -153,6 +226,7 @@ it{
         consumption{\r
             liter-per-100-kilometer{\r
                 dnam{"litri per 100 chilometri"}\r
+                gender{"masculine"}\r
                 one{"{0} litro per 100 chilometri"}\r
                 other{"{0} litri per 100 chilometri"}\r
             }\r
@@ -163,11 +237,13 @@ it{
             }\r
             mile-per-gallon{\r
                 dnam{"miglia per gallone"}\r
+                gender{"feminine"}\r
                 one{"{0} miglio per gallone"}\r
                 other{"{0} miglia per gallone"}\r
             }\r
             mile-per-gallon-imperial{\r
                 dnam{"miglia per gallone imperiale"}\r
+                gender{"feminine"}\r
                 one{"{0} miglio per gallone imperiale"}\r
                 other{"{0} miglia per gallone imperiale"}\r
             }\r
@@ -244,6 +320,7 @@ it{
             }\r
             day{\r
                 dnam{"giorni"}\r
+                gender{"masculine"}\r
                 one{"{0} giorno"}\r
                 other{"{0} giorni"}\r
                 per{"{0} al giorno"}\r
@@ -255,6 +332,7 @@ it{
             }\r
             hour{\r
                 dnam{"ore"}\r
+                gender{"feminine"}\r
                 one{"{0} ora"}\r
                 other{"{0} ore"}\r
                 per{"{0} all’ora"}\r
@@ -271,12 +349,14 @@ it{
             }\r
             minute{\r
                 dnam{"minuti"}\r
+                gender{"masculine"}\r
                 one{"{0} minuto"}\r
                 other{"{0} minuti"}\r
                 per{"{0} al minuto"}\r
             }\r
             month{\r
                 dnam{"mesi"}\r
+                gender{"masculine"}\r
                 one{"{0} mese"}\r
                 other{"{0} mesi"}\r
                 per{"{0} al mese"}\r
@@ -288,18 +368,21 @@ it{
             }\r
             second{\r
                 dnam{"secondi"}\r
+                gender{"masculine"}\r
                 one{"{0} secondo"}\r
                 other{"{0} secondi"}\r
                 per{"{0} al secondo"}\r
             }\r
             week{\r
                 dnam{"settimane"}\r
+                gender{"feminine"}\r
                 one{"{0} settimana"}\r
                 other{"{0} settimane"}\r
                 per{"{0} alla settimana"}\r
             }\r
             year{\r
                 dnam{"anni"}\r
+                gender{"masculine"}\r
                 one{"{0} anno"}\r
                 other{"{0} anni"}\r
                 per{"{0} all’anno"}\r
@@ -345,6 +428,7 @@ it{
             }\r
             foodcalorie{\r
                 dnam{"Calorie"}\r
+                gender{"feminine"}\r
                 one{"{0} caloria"}\r
                 other{"{0} calorie"}\r
             }\r
@@ -355,6 +439,7 @@ it{
             }\r
             kilocalorie{\r
                 dnam{"chilocalorie"}\r
+                gender{"feminine"}\r
                 one{"{0} chilocaloria"}\r
                 other{"{0} chilocalorie"}\r
             }\r
@@ -453,6 +538,7 @@ it{
             }\r
             centimeter{\r
                 dnam{"centimetri"}\r
+                gender{"masculine"}\r
                 one{"{0} centimetro"}\r
                 other{"{0} centimetri"}\r
                 per{"{0} per centimetro"}\r
@@ -474,6 +560,7 @@ it{
             }\r
             foot{\r
                 dnam{"piedi"}\r
+                gender{"masculine"}\r
                 one{"{0} piede"}\r
                 other{"{0} piedi"}\r
                 per{"{0} per piede"}\r
@@ -485,12 +572,14 @@ it{
             }\r
             inch{\r
                 dnam{"pollici"}\r
+                gender{"masculine"}\r
                 one{"{0} pollice"}\r
                 other{"{0} pollici"}\r
                 per{"{0} per pollice"}\r
             }\r
             kilometer{\r
                 dnam{"chilometri"}\r
+                gender{"masculine"}\r
                 one{"{0} chilometro"}\r
                 other{"{0} chilometri"}\r
                 per{"{0} per chilometro"}\r
@@ -502,6 +591,7 @@ it{
             }\r
             meter{\r
                 dnam{"metri"}\r
+                gender{"masculine"}\r
                 one{"{0} metro"}\r
                 other{"{0} metri"}\r
                 per{"{0} per metro"}\r
@@ -513,6 +603,7 @@ it{
             }\r
             mile{\r
                 dnam{"miglia"}\r
+                gender{"feminine"}\r
                 one{"{0} miglio"}\r
                 other{"{0} miglia"}\r
             }\r
@@ -523,6 +614,7 @@ it{
             }\r
             millimeter{\r
                 dnam{"millimetri"}\r
+                gender{"masculine"}\r
                 one{"{0} millimetro"}\r
                 other{"{0} millimetri"}\r
             }\r
@@ -538,11 +630,13 @@ it{
             }\r
             parsec{\r
                 dnam{"parsec"}\r
+                gender{"masculine"}\r
                 one{"{0} parsec"}\r
                 other{"{0} parsec"}\r
             }\r
             picometer{\r
                 dnam{"picometri"}\r
+                gender{"masculine"}\r
                 one{"{0} picometro"}\r
                 other{"{0} picometri"}\r
             }\r
@@ -553,11 +647,13 @@ it{
             }\r
             solar-radius{\r
                 dnam{"raggi solari"}\r
+                gender{"masculine"}\r
                 one{"{0} raggio solare"}\r
                 other{"{0} raggi solari"}\r
             }\r
             yard{\r
                 dnam{"iarde"}\r
+                gender{"feminine"}\r
                 one{"{0} iarda"}\r
                 other{"{0} iarde"}\r
             }\r
@@ -580,6 +676,7 @@ it{
             }\r
             solar-luminosity{\r
                 dnam{"luminosità solari"}\r
+                gender{"feminine"}\r
                 one{"{0} luminosità solare"}\r
                 other{"{0} luminosità solari"}\r
             }\r
@@ -592,27 +689,32 @@ it{
             }\r
             dalton{\r
                 dnam{"dalton"}\r
+                gender{"masculine"}\r
                 one{"{0} dalton"}\r
                 other{"{0} dalton"}\r
             }\r
             earth-mass{\r
                 dnam{"masse terrestri"}\r
+                gender{"feminine"}\r
                 one{"{0} massa terrestre"}\r
                 other{"{0} masse terrestri"}\r
             }\r
             grain{\r
                 dnam{"grano"}\r
+                gender{"masculine"}\r
                 one{"{0} grano"}\r
                 other{"{0} grani"}\r
             }\r
             gram{\r
                 dnam{"grammi"}\r
+                gender{"masculine"}\r
                 one{"{0} grammo"}\r
                 other{"{0} grammi"}\r
                 per{"{0} per grammo"}\r
             }\r
             kilogram{\r
                 dnam{"chilogrammi"}\r
+                gender{"masculine"}\r
                 one{"{0} chilogrammo"}\r
                 other{"{0} chilogrammi"}\r
                 per{"{0} per chilogrammo"}\r
@@ -629,11 +731,13 @@ it{
             }\r
             milligram{\r
                 dnam{"milligrammi"}\r
+                gender{"masculine"}\r
                 one{"{0} milligrammo"}\r
                 other{"{0} milligrammi"}\r
             }\r
             ounce{\r
                 dnam{"once"}\r
+                gender{"feminine"}\r
                 one{"{0} oncia"}\r
                 other{"{0} once"}\r
                 per{"{0} per oncia"}\r
@@ -645,12 +749,14 @@ it{
             }\r
             pound{\r
                 dnam{"libbre"}\r
+                gender{"feminine"}\r
                 one{"{0} libbra"}\r
                 other{"{0} libbre"}\r
                 per{"{0} per libbra"}\r
             }\r
             solar-mass{\r
                 dnam{"masse solari"}\r
+                gender{"feminine"}\r
                 one{"{0} massa solare"}\r
                 other{"{0} masse solari"}\r
             }\r
@@ -715,6 +821,7 @@ it{
             }\r
             kilopascal{\r
                 dnam{"chilopascal"}\r
+                gender{"masculine"}\r
                 one{"{0} chilopascal"}\r
                 other{"{0} chilopascal"}\r
             }\r
@@ -747,6 +854,7 @@ it{
         speed{\r
             kilometer-per-hour{\r
                 dnam{"chilometri orari"}\r
+                gender{"masculine"}\r
                 one{"{0} chilometro orario"}\r
                 other{"{0} chilometri orari"}\r
             }\r
@@ -757,11 +865,13 @@ it{
             }\r
             meter-per-second{\r
                 dnam{"metri al secondo"}\r
+                gender{"masculine"}\r
                 one{"{0} metro al secondo"}\r
                 other{"{0} metri al secondo"}\r
             }\r
             mile-per-hour{\r
                 dnam{"miglia all’ora"}\r
+                gender{"feminine"}\r
                 one{"{0} miglio all’ora"}\r
                 other{"{0} miglia all’ora"}\r
             }\r
@@ -769,21 +879,25 @@ it{
         temperature{\r
             celsius{\r
                 dnam{"gradi Celsius"}\r
+                gender{"masculine"}\r
                 one{"{0} grado Celsius"}\r
                 other{"{0} gradi Celsius"}\r
             }\r
             fahrenheit{\r
                 dnam{"gradi Fahrenheit"}\r
+                gender{"masculine"}\r
                 one{"{0} grado Fahrenheit"}\r
                 other{"{0} gradi Fahrenheit"}\r
             }\r
             generic{\r
                 dnam{"°"}\r
+                gender{"masculine"}\r
                 one{"{0}°"}\r
                 other{"{0}°"}\r
             }\r
             kelvin{\r
                 dnam{"Kelvin"}\r
+                gender{"masculine"}\r
                 one{"{0} Kelvin"}\r
                 other{"{0} Kelvin"}\r
             }\r
@@ -803,11 +917,13 @@ it{
         volume{\r
             acre-foot{\r
                 dnam{"acre-feet"}\r
+                gender{"masculine"}\r
                 one{"{0} acre-foot"}\r
                 other{"{0} acre-feet"}\r
             }\r
             barrel{\r
                 dnam{"barile"}\r
+                gender{"masculine"}\r
                 one{"{0} barile"}\r
                 other{"{0} barili"}\r
             }\r
@@ -818,38 +934,45 @@ it{
             }\r
             centiliter{\r
                 dnam{"centilitri"}\r
+                gender{"masculine"}\r
                 one{"{0} centilitro"}\r
                 other{"{0} centilitri"}\r
             }\r
             cubic-centimeter{\r
                 dnam{"centimetri cubi"}\r
+                gender{"masculine"}\r
                 one{"{0} centimetro cubo"}\r
                 other{"{0} centimetri cubi"}\r
                 per{"{0} per centimetro cubo"}\r
             }\r
             cubic-foot{\r
                 dnam{"piedi cubi"}\r
+                gender{"masculine"}\r
                 one{"{0} piede cubo"}\r
                 other{"{0} piedi cubi"}\r
             }\r
             cubic-inch{\r
                 dnam{"pollici cubi"}\r
+                gender{"masculine"}\r
                 one{"{0} pollice cubo"}\r
                 other{"{0} pollici cubi"}\r
             }\r
             cubic-kilometer{\r
                 dnam{"chilometri cubi"}\r
+                gender{"masculine"}\r
                 one{"{0} chilometro cubo"}\r
                 other{"{0} chilometri cubi"}\r
             }\r
             cubic-meter{\r
                 dnam{"metri cubi"}\r
+                gender{"masculine"}\r
                 one{"{0} metro cubo"}\r
                 other{"{0} metri cubi"}\r
                 per{"{0} per metro cubo"}\r
             }\r
             cubic-mile{\r
                 dnam{"miglia cube"}\r
+                gender{"feminine"}\r
                 one{"{0} miglio cubo"}\r
                 other{"{0} miglia cube"}\r
             }\r
@@ -860,6 +983,7 @@ it{
             }\r
             cup{\r
                 dnam{"tazze"}\r
+                gender{"feminine"}\r
                 one{"{0} tazza"}\r
                 other{"{0} tazze"}\r
             }\r
@@ -870,62 +994,74 @@ it{
             }\r
             deciliter{\r
                 dnam{"decilitri"}\r
+                gender{"masculine"}\r
                 one{"{0} decilitro"}\r
                 other{"{0} decilitri"}\r
             }\r
             dessert-spoon{\r
                 dnam{"cucchiaino da dessert"}\r
+                gender{"masculine"}\r
                 one{"{0} cucchiaino da dessert"}\r
                 other{"{0} cucchiaini da dessert"}\r
             }\r
             dessert-spoon-imperial{\r
                 dnam{"cucchiaino da dessert imperiale"}\r
+                gender{"masculine"}\r
                 one{"{0} cucchiaino da dessert imperiale"}\r
                 other{"{0} cucchiaini da dessert imperiali"}\r
             }\r
             dram{\r
                 dnam{"dramma"}\r
+                gender{"feminine"}\r
                 one{"{0} dramma"}\r
                 other{"{0} dramme"}\r
             }\r
             drop{\r
                 dnam{"goccia"}\r
+                gender{"feminine"}\r
                 one{"{0} goccia"}\r
                 other{"{0} gocce"}\r
             }\r
             fluid-ounce{\r
                 dnam{"once fluide"}\r
+                gender{"feminine"}\r
                 one{"{0} oncia fluida"}\r
                 other{"{0} once fluide"}\r
             }\r
             fluid-ounce-imperial{\r
                 dnam{"once liquide imperiali"}\r
+                gender{"feminine"}\r
                 one{"{0} oncia liquida imperiale"}\r
                 other{"{0} once liquide imperiali"}\r
             }\r
             gallon{\r
                 dnam{"galloni"}\r
+                gender{"masculine"}\r
                 one{"{0} gallone"}\r
                 other{"{0} galloni"}\r
                 per{"{0} per gallone"}\r
             }\r
             gallon-imperial{\r
                 dnam{"galloni imperiali"}\r
+                gender{"masculine"}\r
                 one{"{0} gallone imperiale"}\r
                 other{"{0} galloni imperiali"}\r
                 per{"{0} per gallone imperiale"}\r
             }\r
             hectoliter{\r
                 dnam{"ettolitri"}\r
+                gender{"masculine"}\r
                 one{"{0} ettolitro"}\r
                 other{"{0} ettolitri"}\r
             }\r
             jigger{\r
+                gender{"masculine"}\r
                 one{"{0} jigger"}\r
                 other{"{0} jigger"}\r
             }\r
             liter{\r
                 dnam{"litri"}\r
+                gender{"masculine"}\r
                 one{"{0} litro"}\r
                 other{"{0} litri"}\r
                 per{"{0} per litro"}\r
@@ -937,16 +1073,19 @@ it{
             }\r
             milliliter{\r
                 dnam{"millilitri"}\r
+                gender{"masculine"}\r
                 one{"{0} millilitro"}\r
                 other{"{0} millilitri"}\r
             }\r
             pinch{\r
                 dnam{"pizzico"}\r
+                gender{"masculine"}\r
                 one{"{0} pizzico"}\r
                 other{"{0} pizzichi"}\r
             }\r
             pint{\r
                 dnam{"pinte"}\r
+                gender{"feminine"}\r
                 one{"{0} pinta"}\r
                 other{"{0} pinte"}\r
             }\r
@@ -957,21 +1096,25 @@ it{
             }\r
             quart{\r
                 dnam{"quarti"}\r
+                gender{"masculine"}\r
                 one{"{0} quarto"}\r
                 other{"{0} quarti"}\r
             }\r
             quart-imperial{\r
                 dnam{"quarto imperiale"}\r
+                gender{"masculine"}\r
                 one{"{0} quarto imperiale"}\r
                 other{"{0} quarti imperiali"}\r
             }\r
             tablespoon{\r
                 dnam{"cucchiai da tavola"}\r
+                gender{"masculine"}\r
                 one{"{0} cucchiaio da tavola"}\r
                 other{"{0} cucchiai da tavola"}\r
             }\r
             teaspoon{\r
                 dnam{"cucchiaio da tè"}\r
+                gender{"masculine"}\r
                 one{"{0} cucchiaio da tè"}\r
                 other{"{0} cucchiai da tè"}\r
             }\r
@@ -1021,6 +1164,7 @@ it{
             }\r
         }\r
         compound{\r
+            10p1{"da{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1317,6 +1461,7 @@ it{
             }\r
         }\r
         compound{\r
+            10p1{"da{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1325,7 +1470,7 @@ it{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1650,9 +1795,9 @@ it{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"miglia"}\r
@@ -1741,9 +1886,9 @@ it{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 5f8e399..8c09d4f 100644 (file)
@@ -88,7 +88,49 @@ ja{
             }\r
         }\r
         compound{\r
+            1024p1{"キビ{0}"}\r
+            1024p2{"メビ{0}"}\r
+            1024p3{"ギビ{0}"}\r
+            1024p4{"テビ{0}"}\r
+            1024p5{"ペビ{0}"}\r
+            1024p6{"エクスビ{0}"}\r
+            1024p7{"ゼビ{0}"}\r
+            1024p8{"ヨビ{0}"}\r
+            10p-1{"デシ{0}"}\r
+            10p-12{"ピコ{0}"}\r
+            10p-15{"フェムト{0}"}\r
+            10p-18{"アト{0}"}\r
+            10p-2{"センチ{0}"}\r
+            10p-21{"ゼプト{0}"}\r
+            10p-24{"ヨクト{0}"}\r
+            10p-3{"ミリ{0}"}\r
+            10p-6{"マイクロ{0}"}\r
+            10p-9{"ナノ{0}"}\r
+            10p1{"デカ{0}"}\r
+            10p12{"テラ{0}"}\r
+            10p15{"ペタ{0}"}\r
+            10p18{"エクサ{0}"}\r
+            10p2{"ヘクト{0}"}\r
+            10p21{"ゼタ{0}"}\r
+            10p24{"ヨタ{0}"}\r
+            10p3{"キロ{0}"}\r
+            10p6{"メガ{0}"}\r
+            10p9{"ギガ{0}"}\r
             per{"{0}毎{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"平方{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"立方{0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -96,7 +138,7 @@ ja{
                 dnam{"金"}\r
                 other{"{0} 金"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ミリグラム毎デシリットル"}\r
                 other{"{0} ミリグラム毎デシリットル"}\r
             }\r
@@ -852,6 +894,14 @@ ja{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -931,7 +981,7 @@ ja{
                 per{"{0}/時間"}\r
             }\r
             microsecond{\r
-                dnam{"µs"}\r
+                dnam{"μs"}\r
                 other{"{0}μs"}\r
             }\r
             millisecond{\r
@@ -1061,7 +1111,7 @@ ja{
             }\r
             micrometer{\r
                 dnam{"マイクロメートル"}\r
-                other{"{0}µm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"マイル"}\r
@@ -1122,7 +1172,7 @@ ja{
                 other{"{0}MT"}\r
             }\r
             microgram{\r
-                other{"{0}µg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 other{"{0}mg"}\r
@@ -1376,6 +1426,14 @@ ja{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1384,7 +1442,7 @@ ja{
                 dnam{"金"}\r
                 other{"{0} 金"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ミリグラム毎デシリットル"}\r
                 other{"{0} mg/dL"}\r
             }\r
@@ -1711,7 +1769,7 @@ ja{
             }\r
             micrometer{\r
                 dnam{"マイクロメートル"}\r
-                other{"{0} µm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"マイル"}\r
@@ -1805,7 +1863,7 @@ ja{
             }\r
             microgram{\r
                 dnam{"マイクログラム"}\r
-                other{"{0} µg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index a3999c0..834ca03 100644 (file)
@@ -84,14 +84,56 @@ jv{
             }\r
         }\r
         compound{\r
+            1024p1{"Kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} saben {1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"pesagi {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"kubik {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"karat"}\r
                 other{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligram saben desiliter"}\r
                 other{"{0} miligram saben desiliter"}\r
             }\r
@@ -784,6 +826,7 @@ jv{
     }\r
     unitsNarrow{\r
         compound{\r
+            10p-9{"n{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -963,6 +1006,7 @@ jv{
             }\r
         }\r
         compound{\r
+            10p-9{"n{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -970,7 +1014,7 @@ jv{
                 dnam{"karat"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 other{"{0} mg/dL"}\r
             }\r
@@ -1262,8 +1306,8 @@ jv{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmeter"}\r
-                other{"{0} µm"}\r
+                dnam{"μmeter"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mil"}\r
index 04051a4..b96779e 100644 (file)
@@ -105,7 +105,59 @@ ka{
             }\r
         }\r
         compound{\r
+            1024p1{"კიბი{0}"}\r
+            1024p2{"მები{0}"}\r
+            1024p3{"გიბი{0}"}\r
+            1024p4{"ტები{0}"}\r
+            1024p5{"პები{0}"}\r
+            1024p6{"ექსბი{0}"}\r
+            1024p7{"ზები{0}"}\r
+            1024p8{"იობი{0}"}\r
+            10p-1{"დეცი{0}"}\r
+            10p-12{"პიკო{0}"}\r
+            10p-15{"ფემტო{0}"}\r
+            10p-18{"ატო{0}"}\r
+            10p-2{"სანტი{0}"}\r
+            10p-21{"ზეპტო{0}"}\r
+            10p-24{"იოქტო{0}"}\r
+            10p-3{"მილი{0}"}\r
+            10p-6{"მიკრო{0}"}\r
+            10p-9{"ნანო{0}"}\r
+            10p1{"დეკა{0}"}\r
+            10p12{"ტერა{0}"}\r
+            10p15{"პეტა{0}"}\r
+            10p18{"ექსა{0}"}\r
+            10p2{"ჰეკტო{0}"}\r
+            10p21{"ზეტა{0}"}\r
+            10p24{"იოტა{0}"}\r
+            10p3{"კილო{0}"}\r
+            10p6{"მეგა{0}"}\r
+            10p9{"გიგა{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"კვადრატული {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"კვადრატული {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"კუბური {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"კუბური {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ ka{
                 one{"{0} კარატი"}\r
                 other{"{0} კარატი"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"მილიგრამი დეცილიტრზე"}\r
                 one{"{0} მილიგრამი დეცილიტრზე"}\r
                 other{"{0} მილიგრამი დეცილიტრზე"}\r
@@ -1013,7 +1065,59 @@ ka{
             }\r
         }\r
         compound{\r
+            1024p1{"კი{0}"}\r
+            1024p2{"მე{0}"}\r
+            1024p3{"გი{0}"}\r
+            1024p4{"ტე{0}"}\r
+            1024p5{"პე{0}"}\r
+            1024p6{"ექს{0}"}\r
+            1024p7{"ზე{0}"}\r
+            1024p8{"იო{0}"}\r
+            10p-1{"დ{0}"}\r
+            10p-12{"პკ{0}"}\r
+            10p-15{"ფ{0}"}\r
+            10p-18{"ა{0}"}\r
+            10p-2{"ს{0}"}\r
+            10p-21{"ზეპტო{0}"}\r
+            10p-24{"იოქტო{0}"}\r
+            10p-3{"მ{0}"}\r
+            10p-6{"მკ{0}"}\r
+            10p-9{"ნ{0}"}\r
+            10p1{"დეკა{0}"}\r
+            10p12{"ტ{0}"}\r
+            10p15{"პტ{0}"}\r
+            10p18{"ექსა{0}"}\r
+            10p2{"ჰ{0}"}\r
+            10p21{"ზეტა{0}"}\r
+            10p24{"ი{0}"}\r
+            10p3{"კ{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"გ{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1312,7 +1416,59 @@ ka{
             }\r
         }\r
         compound{\r
+            1024p1{"კი{0}"}\r
+            1024p2{"მე{0}"}\r
+            1024p3{"გი{0}"}\r
+            1024p4{"ტე{0}"}\r
+            1024p5{"პე{0}"}\r
+            1024p6{"ექს{0}"}\r
+            1024p7{"ზე{0}"}\r
+            1024p8{"იო{0}"}\r
+            10p-1{"დ{0}"}\r
+            10p-12{"პკ{0}"}\r
+            10p-15{"ფ{0}"}\r
+            10p-18{"ა{0}"}\r
+            10p-2{"ს{0}"}\r
+            10p-21{"ზეპტო{0}"}\r
+            10p-24{"იოქტო{0}"}\r
+            10p-3{"მ{0}"}\r
+            10p-6{"მკ{0}"}\r
+            10p-9{"ნ{0}"}\r
+            10p1{"დეკა{0}"}\r
+            10p12{"ტ{0}"}\r
+            10p15{"პტ{0}"}\r
+            10p18{"ექსა{0}"}\r
+            10p2{"ჰ{0}"}\r
+            10p21{"ზეტა{0}"}\r
+            10p24{"ი{0}"}\r
+            10p3{"კ{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"გ{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1320,7 +1476,7 @@ ka{
                 one{"{0} კარ."}\r
                 other{"{0} კარ."}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"მგ/დლ"}\r
                 one{"{0} მგ/დლ"}\r
                 other{"{0} მგ/დლ"}\r
@@ -1392,9 +1548,9 @@ ka{
                 other{"{0} გბიტი"}\r
             }\r
             gigabyte{\r
-                dnam{"გბაიტი"}\r
-                one{"{0} გბაიტი"}\r
-                other{"{0} გბაიტი"}\r
+                dnam{"GB"}\r
+                one{"{0} GB"}\r
+                other{"{0} GB"}\r
             }\r
             kilobit{\r
                 dnam{"კბიტი"}\r
@@ -1412,9 +1568,9 @@ ka{
                 other{"{0} მბიტი"}\r
             }\r
             megabyte{\r
-                dnam{"მბაიტი"}\r
-                one{"{0} მბაიტი"}\r
-                other{"{0} მბაიტი"}\r
+                dnam{"MB"}\r
+                one{"{0} MB"}\r
+                other{"{0} MB"}\r
             }\r
             petabyte{\r
                 dnam{"პბაიტი"}\r
index 4efde29..257e0d5 100644 (file)
@@ -84,7 +84,41 @@ kea{
             }\r
         }\r
         compound{\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"ekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"jiga{0}"}\r
             per{"{0} pur {1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0} kuadradu"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0} kúbiku"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         concentr{\r
@@ -92,7 +126,7 @@ kea{
                 dnam{"kilati"}\r
                 other{"{0} kilati"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligrama pur desilitru"}\r
                 other{"{0} miligrama pur desilitru"}\r
             }\r
@@ -932,7 +966,7 @@ kea{
                 dnam{"kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 other{"{0} mg/dl"}\r
             }\r
@@ -1173,8 +1207,8 @@ kea{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
index a6572c0..745bccc 100644 (file)
@@ -105,7 +105,59 @@ kk{
             }\r
         }\r
         compound{\r
+            1024p1{"киби{0}"}\r
+            1024p2{"меби{0}"}\r
+            1024p3{"гиби{0}"}\r
+            1024p4{"теби{0}"}\r
+            1024p5{"пеби{0}"}\r
+            1024p6{"эксби{0}"}\r
+            1024p7{"зеби{0}"}\r
+            1024p8{"йоби{0}"}\r
+            10p-1{"{0} дециметр"}\r
+            10p-12{"{0} пикометр"}\r
+            10p-15{"{0} фемтометр"}\r
+            10p-18{"{0} аттометр"}\r
+            10p-2{"{0} сантиметр"}\r
+            10p-21{"{0} зептометр"}\r
+            10p-24{"{0} йоктометр"}\r
+            10p-3{"{0} миллиметр"}\r
+            10p-6{"{0} микрометр"}\r
+            10p-9{"{0} нанометр"}\r
+            10p1{"{0} декаметр"}\r
+            10p12{"{0} тераметр"}\r
+            10p15{"{0} петаметр"}\r
+            10p18{"{0} эксаметр"}\r
+            10p2{"{0} гектометр"}\r
+            10p21{"{0} зеттаметр"}\r
+            10p24{"{0} йоттаметр"}\r
+            10p3{"{0} километр"}\r
+            10p6{"{0} мегаметр"}\r
+            10p9{"{0} гигаметр"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"шаршы {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"квадрат {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"текше {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"текше {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ kk{
                 one{"{0} карат"}\r
                 other{"{0} карат"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"миллиграмм/децилитр"}\r
                 one{"{0} миллиграмм/децилитр"}\r
                 other{"{0} миллиграмм/децилитр"}\r
@@ -1035,6 +1087,34 @@ kk{
             }\r
         }\r
         compound{\r
+            1024p1{"Ки{0}"}\r
+            1024p2{"Ми{0}"}\r
+            1024p3{"Ги{0}"}\r
+            1024p4{"Ти{0}"}\r
+            1024p5{"Пи{0}"}\r
+            1024p6{"Эи{0}"}\r
+            1024p7{"Зи{0}"}\r
+            1024p8{"Йи{0}"}\r
+            10p-1{"{0} дм"}\r
+            10p-12{"{0} пм"}\r
+            10p-15{"{0} фм"}\r
+            10p-18{"{0} ам"}\r
+            10p-2{"{0} см"}\r
+            10p-21{"{0} зм"}\r
+            10p-24{"{0} йм"}\r
+            10p-3{"{0} мм"}\r
+            10p-6{"{0} мкм"}\r
+            10p-9{"{0} нм"}\r
+            10p1{"{0} дам"}\r
+            10p12{"{0} Тм"}\r
+            10p15{"{0} Пм"}\r
+            10p18{"{0} Эм"}\r
+            10p2{"{0} гм"}\r
+            10p21{"{0} Зм"}\r
+            10p24{"{0} Йм"}\r
+            10p3{"{0} км"}\r
+            10p6{"{0} Мм"}\r
+            10p9{"{0} Гм"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1334,6 +1414,34 @@ kk{
             }\r
         }\r
         compound{\r
+            1024p1{"Ки{0}"}\r
+            1024p2{"Ми{0}"}\r
+            1024p3{"Ги{0}"}\r
+            1024p4{"Ти{0}"}\r
+            1024p5{"Пи{0}"}\r
+            1024p6{"Эи{0}"}\r
+            1024p7{"Зи{0}"}\r
+            1024p8{"Йи{0}"}\r
+            10p-1{"{0} дм"}\r
+            10p-12{"{0} пм"}\r
+            10p-15{"{0} фм"}\r
+            10p-18{"{0} ам"}\r
+            10p-2{"{0} см"}\r
+            10p-21{"{0} зм"}\r
+            10p-24{"{0} йм"}\r
+            10p-3{"{0} мм"}\r
+            10p-6{"{0} мкм"}\r
+            10p-9{"{0} нм"}\r
+            10p1{"{0} дам"}\r
+            10p12{"{0} Тм"}\r
+            10p15{"{0} Пм"}\r
+            10p18{"{0} Эм"}\r
+            10p2{"{0} гм"}\r
+            10p21{"{0} Зм"}\r
+            10p24{"{0} Йм"}\r
+            10p3{"{0} км"}\r
+            10p6{"{0} Мм"}\r
+            10p9{"{0} Гм"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1342,7 +1450,7 @@ kk{
                 one{"{0} кар."}\r
                 other{"{0} кар."}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"мг/дл"}\r
                 one{"{0} мг/дл"}\r
                 other{"{0} мг/дл"}\r
index 90c2511..095f5a7 100644 (file)
@@ -88,14 +88,48 @@ km{
             }\r
         }\r
         compound{\r
+            10p-1{"ដេស៊ី{0}"}\r
+            10p-12{"ពីកូ{0}"}\r
+            10p-15{"ហ្វង់តូ{0}"}\r
+            10p-18{"អាត់តូ{0}"}\r
+            10p-2{"សង់ទី{0}"}\r
+            10p-21{"ហ្សិបតូ{0}"}\r
+            10p-24{"យ៉ុកតូ{0}"}\r
+            10p-3{"មីល្លី{0}"}\r
+            10p-6{"មីក្រូ{0}"}\r
+            10p-9{"ណាណូ{0}"}\r
+            10p1{"ដេកា{0}"}\r
+            10p12{"តេរ៉ា{0}"}\r
+            10p15{"ប៉េតា{0}"}\r
+            10p18{"អ៊ិចសា{0}"}\r
+            10p2{"ហិកតូ{0}"}\r
+            10p21{"ហ្សិតតា{0}"}\r
+            10p24{"យ៉ុតតា{0}"}\r
+            10p3{"គីឡូ{0}"}\r
+            10p6{"មេហ្គា{0}"}\r
+            10p9{"ហ្គីហ្គា{0}"}\r
             per{"{0}​ ក្នុង​មួយ​ {1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0} ការ៉េ"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0}គូប"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"ការ៉ាត់"}\r
                 other{"{0} ការ៉ាត់"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"មិល្លីក្រាមក្នុងមួយដេស៊ីលីត្រ"}\r
                 other{"{0} មិល្លីក្រាមក្នុងមួយដេស៊ីលីត្រ"}\r
             }\r
@@ -773,6 +807,26 @@ km{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1016,6 +1070,26 @@ km{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1023,7 +1097,7 @@ km{
                 dnam{"ការ៉ាត់"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 other{"{0} mg/dL"}\r
             }\r
@@ -1290,7 +1364,7 @@ km{
             }\r
             micrometer{\r
                 dnam{"មីក្រូ​ម៉ែត្រ"}\r
-                other{"{0} µm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"ម៉ាយ"}\r
@@ -1359,8 +1433,8 @@ km{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 4c8fb13..ab3edbb 100644 (file)
@@ -105,7 +105,59 @@ kn{
             }\r
         }\r
         compound{\r
+            1024p1{"ಕಿಬಿ {0}"}\r
+            1024p2{"ಮೆಬಿ {0}"}\r
+            1024p3{"ಜಿಬಿ {0}"}\r
+            1024p4{"ಟೆಬಿ {0}"}\r
+            1024p5{"ಪೆಬಿ {0}"}\r
+            1024p6{"ಎಕ್ಸ್ ಬಿ{0}"}\r
+            1024p7{"ಝೆಬಿ{0}"}\r
+            1024p8{"ಯೋಬ್ {0}"}\r
+            10p-1{"ಡೆಸಿ {0}"}\r
+            10p-12{"ಪಿಕೋ {0}"}\r
+            10p-15{"ಫೆಮ್ಟೋ {0}"}\r
+            10p-18{"ಅಟ್ಟೋ {0}"}\r
+            10p-2{"ಸೆಂಟಿ {0}"}\r
+            10p-21{"ಝೆಪ್ಟೋ {0}"}\r
+            10p-24{"ಯೊಕ್ಟೋ {0}"}\r
+            10p-3{"ಮಿಲಿ {0}"}\r
+            10p-6{"ಮೈಕ್ರೋ {0}"}\r
+            10p-9{"ನ್ಯಾನೋ {0}"}\r
+            10p1{"ಡೆಕಾ {0}"}\r
+            10p12{"ಟೆರಾ {0}"}\r
+            10p15{"ಪೆಟಾ {0}"}\r
+            10p18{"ಎಕ್ಸಾ {0}"}\r
+            10p2{"ಹೆಕ್ಟೋ {0}"}\r
+            10p21{"ಝೆಟ್ಟಾ {0}"}\r
+            10p24{"ಯೊಟ್ಟಾ {0}"}\r
+            10p3{"ಕಿಲೋ {0}"}\r
+            10p6{"ಮೆಗಾ {0}"}\r
+            10p9{"ಗಿಗಾ {0}"}\r
             per{"ಪ್ರತಿ {1} ಗೆ {0}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"ಚದರ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ಚ. {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"ಕ್ಯೂಬಿಕ್ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ಕ್ಯೂ {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ kn{
                 one{"{0} ಕಾರಟ್‌"}\r
                 other{"{0} ಕಾರಟ್‌ಗಳು"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ಪ್ರತಿ ಡೆಸಿಲೀಟರ್‌ಗೆ ಮಿಲಿಗ್ರಾಂಗಳು"}\r
                 one{"{0} ಪ್ರತಿ ಡೆಸಿಲೀಟರ್‌ಗೆ ಮಿಲಿಗ್ರಾಂ"}\r
                 other{"{0} ಪ್ರತಿ ಡೆಸಿಲೀಟರ್‌ಗೆ ಮಿಲಿಗ್ರಾಂಗಳು"}\r
@@ -1031,6 +1083,34 @@ kn{
             }\r
         }\r
         compound{\r
+            1024p1{"ಕಿ{0}"}\r
+            1024p2{"ಮೆ{0}"}\r
+            1024p3{"ಜಿ{0}"}\r
+            1024p4{"ಟಿ{0}"}\r
+            1024p5{"ಪಿಐ{0}"}\r
+            1024p6{"ಇಐ{0}"}\r
+            1024p7{"ಝಡ್ ಐ{0}"}\r
+            1024p8{"ವೈಐ{0}"}\r
+            10p-1{"ಡೆ. {0}"}\r
+            10p-12{"ಪಿ. {0}"}\r
+            10p-15{"ಫೆ. {0}"}\r
+            10p-18{"ಅ. {0}"}\r
+            10p-2{"ಸೆಂ. {0}"}\r
+            10p-21{"ಝೆ. {0}"}\r
+            10p-24{"ಯೊ. {0}"}\r
+            10p-3{"ಮಿ. {0}"}\r
+            10p-6{"ಮೈ. {0}"}\r
+            10p-9{"ನ್ಯಾ. {0}"}\r
+            10p1{"ಡೆ. {0}"}\r
+            10p12{"ಟೆ. {0}"}\r
+            10p15{"ಪೆ. {0}"}\r
+            10p18{"ಎ. {0}"}\r
+            10p2{"ಹೆ. {0}"}\r
+            10p21{"ಝೆಟ್. {0}"}\r
+            10p24{"ಯೊ. {0}"}\r
+            10p3{"ಕಿ. {0}"}\r
+            10p6{"ಮೆ. {0}"}\r
+            10p9{"ಗಿ. {0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1391,7 +1471,47 @@ kn{
             }\r
         }\r
         compound{\r
+            1024p1{"ಕಿಬಿ{0}"}\r
+            1024p2{"ಮೆಬಿ{0}"}\r
+            1024p3{"ಜಿ{0}"}\r
+            1024p4{"ಟಿ{0}"}\r
+            1024p5{"ಪಿಐ{0}"}\r
+            1024p6{"ಇಐ{0}"}\r
+            1024p7{"ಝಡ್ ಐ{0}"}\r
+            1024p8{"ವೈಐ{0}"}\r
+            10p-1{"ಡೆ {0}"}\r
+            10p-12{"ಪಿ {0}"}\r
+            10p-15{"ಫೆ {0}"}\r
+            10p-18{"ಅ {0}"}\r
+            10p-2{"ಸೆಂ {0}"}\r
+            10p-21{"ಝೆ {0}"}\r
+            10p-24{"ಯೊ {0}"}\r
+            10p-3{"ಮಿ {0}"}\r
+            10p-6{"ಮೈ {0}"}\r
+            10p-9{"ನ್ಯಾ {0}"}\r
+            10p1{"ಡೆಟ್ {0}"}\r
+            10p12{"ಟೆ {0}"}\r
+            10p15{"ಪೆ {0}"}\r
+            10p18{"ಎ {0}"}\r
+            10p2{"ಹೆ {0}"}\r
+            10p21{"ಝೆಟ್ {0}"}\r
+            10p24{"ಯೊಟ್ {0}"}\r
+            10p3{"ಕಿ {0}"}\r
+            10p6{"ಮೆ {0}"}\r
+            10p9{"ಗಿ {0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1400,7 +1520,7 @@ kn{
                 one{"{0} ಕಾರ."}\r
                 other{"{0} ಕಾರ."}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ಮಿಗ್ರಾಂ/ಡೆಲೀ"}\r
                 one{"{0} ಮಿಗ್ರಾಂ/ಡೆಲೀ"}\r
                 other{"{0} ಮಿಗ್ರಾಂ/ಡೆಲೀ"}\r
@@ -1702,12 +1822,12 @@ kn{
             }\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                one{"{0} dpcm"}\r
+                one{"{0} ppcm"}\r
                 other{"{0} dpcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                one{"{0} dpi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
             }\r
             em{\r
@@ -1798,9 +1918,9 @@ kn{
                 per{"{0}/ಮೀ"}\r
             }\r
             micrometer{\r
-                dnam{"µmeters"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmeters"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"ಮೈಲುಗಳು"}\r
index 15ba664..0507c01 100644 (file)
@@ -88,14 +88,56 @@ ko{
             }\r
         }\r
         compound{\r
+            1024p1{"키비{0}"}\r
+            1024p2{"메비{0}"}\r
+            1024p3{"기비{0}"}\r
+            1024p4{"테비{0}"}\r
+            1024p5{"페비{0}"}\r
+            1024p6{"엑스비{0}"}\r
+            1024p7{"제비{0}"}\r
+            1024p8{"요비{0}"}\r
+            10p-1{"데시{0}"}\r
+            10p-12{"피코{0}"}\r
+            10p-15{"펨토{0}"}\r
+            10p-18{"아토{0}"}\r
+            10p-2{"센티{0}"}\r
+            10p-21{"젭토{0}"}\r
+            10p-24{"욕토{0}"}\r
+            10p-3{"밀리{0}"}\r
+            10p-6{"마이크로{0}"}\r
+            10p-9{"나노{0}"}\r
+            10p1{"데카{0}"}\r
+            10p12{"테라{0}"}\r
+            10p15{"페타{0}"}\r
+            10p18{"엑사{0}"}\r
+            10p2{"헥토{0}"}\r
+            10p21{"제타{0}"}\r
+            10p24{"요타{0}"}\r
+            10p3{"킬로{0}"}\r
+            10p6{"메가{0}"}\r
+            10p9{"기가{0}"}\r
             per{"{1}당 {0}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"제곱{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"세제곱{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"캐럿"}\r
                 other{"{0}캐럿"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"데시리터당 밀리그램"}\r
                 other{"데시리터당 {0}밀리그램"}\r
             }\r
@@ -951,8 +993,8 @@ ko{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                other{"{0}µm"}\r
+                dnam{"μm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1011,8 +1053,8 @@ ko{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0}µg"}\r
+                dnam{"μg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -1212,7 +1254,7 @@ ko{
                 dnam{"kt"}\r
                 other{"{0}kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 other{"{0}mg/dL"}\r
             }\r
@@ -1530,8 +1572,8 @@ ko{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                other{"{0}µm"}\r
+                dnam{"μm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1620,8 +1662,8 @@ ko{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0}µg"}\r
+                dnam{"μg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 8572cad..afcc54a 100644 (file)
@@ -88,7 +88,49 @@ kok{
             }\r
         }\r
         compound{\r
+            1024p1{"किबी{0}"}\r
+            1024p2{"मेबी{0}"}\r
+            1024p3{"जीबी{0}"}\r
+            1024p4{"टेबी{0}"}\r
+            1024p5{"पेबी{0}"}\r
+            1024p6{"एक्सबी{0}"}\r
+            1024p7{"जेबी{0}"}\r
+            1024p8{"योबे{0}"}\r
+            10p-1{"डेसी{0}"}\r
+            10p-12{"पिको{0}"}\r
+            10p-15{"फॅम्टो{0}"}\r
+            10p-18{"ऑटो{0}"}\r
+            10p-2{"सँटी{0}"}\r
+            10p-21{"जॅप्टो{0}"}\r
+            10p-24{"यॉक्टो{0}"}\r
+            10p-3{"मिली{0}"}\r
+            10p-6{"मायक्रो{0}"}\r
+            10p-9{"नॅनो{0}"}\r
+            10p1{"डॅका{0}"}\r
+            10p12{"टेरा{0}"}\r
+            10p15{"पेटा{0}"}\r
+            10p18{"ऍक्सा{0}"}\r
+            10p2{"हॅक्टो{0}"}\r
+            10p21{"झॅटा{0}"}\r
+            10p24{"योटा{0}"}\r
+            10p3{"किलो{0}"}\r
+            10p6{"मॅगा{0}"}\r
+            10p9{"गिगा{0}"}\r
             per{"{0} दर {1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"चवकोण {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"घनाकार {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         concentr{\r
@@ -96,7 +138,7 @@ kok{
                 dnam{"कॅरट्स"}\r
                 other{"{0} कॅरट्स"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"मिलिग्राम/डेसिलिटर"}\r
                 other{"{0} मिलिग्राम/डेसिलिटर"}\r
             }\r
@@ -789,7 +831,49 @@ kok{
     }\r
     unitsNarrow{\r
         compound{\r
+            1024p1{"कि {0}"}\r
+            1024p2{"मे {0}"}\r
+            1024p3{"जी {0}"}\r
+            1024p4{"टी {0}"}\r
+            1024p5{"पी {0}"}\r
+            1024p6{"इ {0}"}\r
+            1024p7{"जे {0}"}\r
+            1024p8{"यो {0}"}\r
+            10p-1{"डी{0}"}\r
+            10p-12{"पि {0}"}\r
+            10p-15{"फॅ{0}"}\r
+            10p-18{"अ {0}"}\r
+            10p-2{"सँ{0}"}\r
+            10p-21{"जे{0}"}\r
+            10p-24{"यॉ{0}"}\r
+            10p-3{"मि {0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"नॅ{0}"}\r
+            10p1{"डा{0}"}\r
+            10p12{"टे {0}"}\r
+            10p15{"पे {0}"}\r
+            10p18{"ए {0}"}\r
+            10p2{"हे {0}"}\r
+            10p21{"झॅ{0}"}\r
+            10p24{"यो {0}"}\r
+            10p3{"कि {0}"}\r
+            10p6{"मॅ{0}"}\r
+            10p9{"गि{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         coordinate{\r
@@ -961,7 +1045,49 @@ kok{
             }\r
         }\r
         compound{\r
+            1024p1{"क{0}"}\r
+            1024p2{"मे{0}"}\r
+            1024p3{"जी{0}"}\r
+            1024p4{"टी{0}"}\r
+            1024p5{"पी{0}"}\r
+            1024p6{"इ{0}"}\r
+            1024p7{"ज{0}"}\r
+            1024p8{"य{0}"}\r
+            10p-1{"डी{0}"}\r
+            10p-12{"पि{0}"}\r
+            10p-15{"फॅ{0}"}\r
+            10p-18{"अ{0}"}\r
+            10p-2{"सँ{0}"}\r
+            10p-21{"जे{0}"}\r
+            10p-24{"यॉ{0}"}\r
+            10p-3{"मि{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"नॅ{0}"}\r
+            10p1{"डा{0}"}\r
+            10p12{"टे{0}"}\r
+            10p15{"पे{0}"}\r
+            10p18{"ए{0}"}\r
+            10p2{"हे{0}"}\r
+            10p21{"झॅ{0}"}\r
+            10p24{"यो{0}"}\r
+            10p3{"कि{0}"}\r
+            10p6{"मॅ{0}"}\r
+            10p9{"गि{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -969,7 +1095,7 @@ kok{
                 dnam{"कॅरट्स"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"मिग्रा/डेलि"}\r
                 other{"{0} मिग्रा/डेलि"}\r
             }\r
@@ -1295,8 +1421,8 @@ kok{
                 per{"{0}/मी"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"मायल्स"}\r
@@ -1389,8 +1515,8 @@ kok{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"मिग्रा"}\r
index 054d586..aea5c49 100644 (file)
@@ -105,7 +105,51 @@ ky{
             }\r
         }\r
         compound{\r
+            10p-1{"деци{0}"}\r
+            10p-12{"пико{0}"}\r
+            10p-15{"фемто{0}"}\r
+            10p-18{"атто{0}"}\r
+            10p-2{"центи{0}"}\r
+            10p-21{"зепто{0}"}\r
+            10p-24{"йокто{0}"}\r
+            10p-3{"милли{0}"}\r
+            10p-6{"микро{0}"}\r
+            10p-9{"нано{0}"}\r
+            10p1{"дека{0}"}\r
+            10p12{"тера{0}"}\r
+            10p15{"пета{0}"}\r
+            10p18{"экза{0}"}\r
+            10p2{"гекто{0}"}\r
+            10p21{"зетта{0}"}\r
+            10p24{"йотта{0}"}\r
+            10p3{"кило{0}"}\r
+            10p6{"мега{0}"}\r
+            10p9{"гига{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"чарчы {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"чарчы {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"кубик {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"кубик {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +157,7 @@ ky{
                 one{"{0} карат"}\r
                 other{"{0} карат"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"децилитрга миллиграмм"}\r
                 one{"децилитрга {0} миллиграмм"}\r
                 other{"децилитрга {0} миллиграмм"}\r
@@ -957,6 +1001,25 @@ ky{
             }\r
         }\r
         compound{\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"ц{0}"}\r
+            10p-21{"з{0}"}\r
+            10p-24{"й{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"да{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"г{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"Й{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1255,6 +1318,25 @@ ky{
             }\r
         }\r
         compound{\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"ц{0}"}\r
+            10p-21{"з{0}"}\r
+            10p-24{"й{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"да{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"г{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"Й{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1263,7 +1345,7 @@ ky{
                 one{"{0} кт"}\r
                 other{"{0} кт"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"мг/дл"}\r
                 one{"{0} мг/дл"}\r
                 other{"{0} мг/дл"}\r
@@ -1611,9 +1693,9 @@ ky{
                 per{"{0}/м"}\r
             }\r
             micrometer{\r
-                dnam{"µметр"}\r
-                one{"{0} µм"}\r
-                other{"{0} µм"}\r
+                dnam{"μметр"}\r
+                one{"{0} μм"}\r
+                other{"{0} μм"}\r
             }\r
             mile{\r
                 dnam{"миля"}\r
index d18bbb5..7460c00 100644 (file)
@@ -795,8 +795,8 @@ lb{
                 other{"{0} m"}\r
             }\r
             micrometer{\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 one{"{0} mi"}\r
@@ -848,8 +848,8 @@ lb{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 one{"{0} mg"}\r
@@ -1371,9 +1371,9 @@ lb{
                 other{"{0} m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1440,9 +1440,9 @@ lb{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 3e082be..799fa11 100644 (file)
@@ -88,14 +88,55 @@ lo{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            10p-1{"ເດຊີ{0}"}\r
+            10p-12{"ປິໂກ{0}"}\r
+            10p-15{"ເຟມໂຕ{0}"}\r
+            10p-18{"ອັດໂຕ{0}"}\r
+            10p-2{"ຊັງຕີ{0}"}\r
+            10p-21{"ເຊັບໂຕ{0}"}\r
+            10p-24{"ຢັອກໂຕ{0}"}\r
+            10p-3{"ມິນລິ{0}"}\r
+            10p-6{"ໄມໂຄຣ{0}"}\r
+            10p-9{"ນາໂນ{0}"}\r
+            10p1{"ເດກາ{0}"}\r
+            10p12{"ເທຣາ{0}"}\r
+            10p15{"ເພຕາ{0}"}\r
+            10p18{"ເອັກຊາ{0}"}\r
+            10p2{"ເຮັກໂຕ{0}"}\r
+            10p21{"ເຊັດຕາ{0}"}\r
+            10p24{"ຢັອດຕາ{0}"}\r
+            10p3{"ກິໂລ{0}"}\r
+            10p6{"ເມກາ{0}"}\r
+            10p9{"ກິກາ{0}"}\r
             per{"{0} ຕໍ່ {1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"ຕາ{0}​"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0}ກ້ອນ"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"ກະຣັດ"}\r
                 other{"{0} ກະຣັດ"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ມິລິກຣັມຕໍ່ເດຊິລິດ"}\r
                 other{"{0} mg/dL"}\r
             }\r
@@ -475,8 +516,8 @@ lo{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"ມິນລີກຣາມ"}\r
@@ -770,7 +811,34 @@ lo{
             }\r
         }\r
         compound{\r
+            10p-1{"ດຊ{0}"}\r
+            10p-12{"ປກ{0}"}\r
+            10p-15{"ຟຕ{0}"}\r
+            10p-18{"ອຕ{0}"}\r
+            10p-2{"ຊມ{0}"}\r
+            10p-21{"ຊຕ{0}"}\r
+            10p-24{"ຢຕ{0}"}\r
+            10p-3{"ມມ{0}"}\r
+            10p-6{"ມຄ{0}"}\r
+            10p-9{"ນນ{0}"}\r
+            10p1{"ດກ{0}"}\r
+            10p12{"ທຣ{0}"}\r
+            10p15{"ເພຕາ{0}"}\r
+            10p18{"ອຊ{0}"}\r
+            10p2{"ຮຕ{0}"}\r
+            10p21{"ຊ{0}"}\r
+            10p24{"ຢ{0}"}\r
+            10p3{"ກມ{0}"}\r
+            10p6{"ມກ{0}"}\r
+            10p9{"ກກ{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1023,6 +1091,26 @@ lo{
             }\r
         }\r
         compound{\r
+            10p-1{"ດຊ{0}"}\r
+            10p-12{"ປກ{0}"}\r
+            10p-15{"ຟຕ{0}"}\r
+            10p-18{"ອຕ{0}"}\r
+            10p-2{"ຊມ{0}"}\r
+            10p-21{"ຊຕ{0}"}\r
+            10p-24{"ຢຕ{0}"}\r
+            10p-3{"ມມ{0}"}\r
+            10p-6{"ມຄ{0}"}\r
+            10p-9{"ນນ{0}"}\r
+            10p1{"ດກ{0}"}\r
+            10p12{"ທຣ{0}"}\r
+            10p15{"ເພຕາ{0}"}\r
+            10p18{"ອຊ{0}"}\r
+            10p2{"ຮຕ{0}"}\r
+            10p21{"ຊ{0}"}\r
+            10p24{"ຢ{0}"}\r
+            10p3{"ກມ{0}"}\r
+            10p6{"ມກ{0}"}\r
+            10p9{"ກກ{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1030,7 +1118,7 @@ lo{
                 dnam{"ກະຣັດ"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 other{"{0} mg/dL"}\r
             }\r
@@ -1290,8 +1378,8 @@ lo{
                 per{"{0}/ມ"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"ໄມລ໌"}\r
@@ -1360,8 +1448,8 @@ lo{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"ມກ"}\r
index f59fd49..e85ef6f 100644 (file)
@@ -139,7 +139,79 @@ lt{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"jokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zeta{0}"}\r
+            10p24{"jota{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0} kvadratu"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} kvadratu"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} kvadratu"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} kvadratu"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0} kubu"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} kubu"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} kubu"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} kubu"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -149,7 +221,7 @@ lt{
                 one{"{0} karatas"}\r
                 other{"{0} karatų"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramai decilitre"}\r
                 few{"{0} miligramai decilitre"}\r
                 many{"{0} miligramo decilitre"}\r
@@ -1388,6 +1460,14 @@ lt{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1948,6 +2028,14 @@ lt{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1958,7 +2046,7 @@ lt{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 few{"{0} mg/dl"}\r
                 many{"{0} mg/dl"}\r
@@ -2444,11 +2532,11 @@ lt{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                many{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                many{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -2576,11 +2664,11 @@ lt{
                 other{"{0} mt"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                many{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                many{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 76d6b91..4dfb458 100644 (file)
@@ -121,7 +121,69 @@ lv{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"jobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"jokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zeta{0}"}\r
+            10p24{"jota{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"kvadrāt{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kvadrāt{0}"}\r
+                    }\r
+                }\r
+                zero{\r
+                    _{\r
+                        _{"kvadrāt{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                }\r
+                zero{\r
+                    _{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -130,7 +192,7 @@ lv{
                 other{"{0} karāti"}\r
                 zero{"{0} karātu"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligrami uz decilitru"}\r
                 one{"{0} miligrams uz decilitru"}\r
                 other{"{0} miligrami uz decilitru"}\r
@@ -491,7 +553,7 @@ lv{
                 dnam{"punkti collā"}\r
                 one{"{0} punkts collā"}\r
                 other{"{0} punkti collā"}\r
-                zero{"{0} dpi"}\r
+                zero{"{0} ppi"}\r
             }\r
             megapixel{\r
                 dnam{"megapikseļi"}\r
@@ -1216,6 +1278,7 @@ lv{
             }\r
         }\r
         compound{\r
+            10p-24{"j{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1643,6 +1706,7 @@ lv{
             }\r
         }\r
         compound{\r
+            10p-24{"j{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1652,7 +1716,7 @@ lv{
                 other{"{0} kt"}\r
                 zero{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1996,7 +2060,7 @@ lv{
                 dnam{"punkts"}\r
                 one{"{0} p."}\r
                 other{"{0} p."}\r
-                zero{"{0} p."}\r
+                zero{"{0} px"}\r
             }\r
             dot-per-centimeter{\r
                 dnam{"dpc"}\r
@@ -2072,10 +2136,10 @@ lv{
                 zero{"{0} m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
-                zero{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
+                zero{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"jūdzes"}\r
@@ -2203,10 +2267,10 @@ lv{
                 zero{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
-                zero{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
+                zero{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 9750bb6..58a4fca 100644 (file)
@@ -105,7 +105,59 @@ mk{
             }\r
         }\r
         compound{\r
+            1024p1{"киби{0}"}\r
+            1024p2{"меби{0}"}\r
+            1024p3{"гиби{0}"}\r
+            1024p4{"теби{0}"}\r
+            1024p5{"пеби{0}"}\r
+            1024p6{"ексби{0}"}\r
+            1024p7{"зеби{0}"}\r
+            1024p8{"јобе{0}"}\r
+            10p-1{"деци{0}"}\r
+            10p-12{"пико{0}"}\r
+            10p-15{"фемто{0}"}\r
+            10p-18{"ато{0}"}\r
+            10p-2{"центи{0}"}\r
+            10p-21{"зепто{0}"}\r
+            10p-24{"јокто{0}"}\r
+            10p-3{"мили{0}"}\r
+            10p-6{"микро{0}"}\r
+            10p-9{"нано{0}"}\r
+            10p1{"дека{0}"}\r
+            10p12{"тера{0}"}\r
+            10p15{"пета{0}"}\r
+            10p18{"екса{0}"}\r
+            10p2{"хекто{0}"}\r
+            10p21{"зета{0}"}\r
+            10p24{"јота{0}"}\r
+            10p3{"кило{0}"}\r
+            10p6{"мега{0}"}\r
+            10p9{"гига{0}"}\r
             per{"{0} на {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} квадратен"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} квадратни"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} кубен"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} кубни"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -114,7 +166,7 @@ mk{
                 one{"{0} карат"}\r
                 other{"{0} карати"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"милиграм по децилитар"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1012,7 +1064,34 @@ mk{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-3{"m{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1214,8 +1293,8 @@ mk{
                 per{"{0}/м"}\r
             }\r
             micrometer{\r
-                one{"{0} µм"}\r
-                other{"{0} µм"}\r
+                one{"{0} μм"}\r
+                other{"{0} μм"}\r
             }\r
             mile{\r
                 dnam{"ми"}\r
@@ -1288,8 +1367,8 @@ mk{
                 other{"{0} т"}\r
             }\r
             microgram{\r
-                one{"{0} µг"}\r
-                other{"{0} µг"}\r
+                one{"{0} μг"}\r
+                other{"{0} μг"}\r
             }\r
             milligram{\r
                 dnam{"мг"}\r
@@ -1579,7 +1658,34 @@ mk{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-3{"m{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1588,7 +1694,7 @@ mk{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1885,17 +1991,17 @@ mk{
         graphics{\r
             dot{\r
                 dnam{"тчк."}\r
-                one{"{0} тчк."}\r
+                one{"{0} px"}\r
                 other{"{0} тчк."}\r
             }\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                one{"{0} dpcm"}\r
+                one{"{0} ppcm"}\r
                 other{"{0} dpcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                one{"{0} dpi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
             }\r
             em{\r
@@ -1981,9 +2087,9 @@ mk{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"милји"}\r
@@ -2087,9 +2193,9 @@ mk{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 71c9e81..36f1ad7 100644 (file)
@@ -105,7 +105,57 @@ ml{
             }\r
         }\r
         compound{\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"ഡെസി{0}"}\r
+            10p-12{"പിക്കോ{0}"}\r
+            10p-15{"ഫെംറ്റോ{0}"}\r
+            10p-18{"ആറ്റോ{0}"}\r
+            10p-2{"സെന്റി{0}"}\r
+            10p-21{"സെപ്റ്റോ{0}"}\r
+            10p-24{"യോക്റ്റോ{0}"}\r
+            10p-3{"മില്ലി{0}"}\r
+            10p-6{"മൈക്രോ{0}"}\r
+            10p-9{"നാനോ{0}"}\r
+            10p1{"ഡെകാ{0}"}\r
+            10p12{"ടെറാ{0}"}\r
+            10p18{"എക്സാ{0}"}\r
+            10p2{"ഹെക്റ്റോ{0}"}\r
+            10p21{"സെറ്റാ{0}"}\r
+            10p24{"യൊറ്റാ{0}"}\r
+            10p3{"കിലോ{0}"}\r
+            10p6{"മെഗാ{0}"}\r
+            10p9{"ഗിഗ{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"വർഗ്ഗം {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"വർഗ്ഗം {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"ക്യുബിക് {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ക്യുബിക് {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +163,7 @@ ml{
                 one{"{0} ക്യാരറ്റ്"}\r
                 other{"{0} ക്യാരറ്റ്"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"മില്ലിഗ്രാം / ഡെസിലിറ്റർ"}\r
                 one{"{0} മില്ലിഗ്രാം / ഡെസിലിറ്റർ"}\r
                 other{"{0} മില്ലിഗ്രാം / ഡെസിലിറ്റർ"}\r
@@ -936,6 +986,8 @@ ml{
             }\r
         }\r
         compound{\r
+            10p-12{"പി{0}"}\r
+            10p-24{"യോ{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1080,9 +1132,9 @@ ml{
                 per{"{0}/മീ."}\r
             }\r
             micrometer{\r
-                dnam{"µമീ."}\r
-                one{"{0}µമീ."}\r
-                other{"{0}µമീ."}\r
+                dnam{"μമീ."}\r
+                one{"{0}μമീ."}\r
+                other{"{0}μമീ."}\r
             }\r
             mile{\r
                 dnam{"മൈൽ"}\r
@@ -1154,9 +1206,9 @@ ml{
                 other{"{0}ട."}\r
             }\r
             microgram{\r
-                dnam{"µ.ഗ്രാം."}\r
-                one{"{0}µ.ഗ്രാം."}\r
-                other{"{0}µ.ഗ്രാം."}\r
+                dnam{"μ.ഗ്രാം."}\r
+                one{"{0}μ.ഗ്രാം."}\r
+                other{"{0}μ.ഗ്രാം."}\r
             }\r
             milligram{\r
                 dnam{"മി.ഗ്രാം."}\r
@@ -1382,6 +1434,8 @@ ml{
             }\r
         }\r
         compound{\r
+            10p-12{"പി{0}"}\r
+            10p-24{"യോ{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1391,7 +1445,7 @@ ml{
                 one{"{0} ക്യാ."}\r
                 other{"{0} ക്യാ."}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"മി.ഗ്രാം/ഡെ.ലി."}\r
                 one{"{0} മി.ഗ്രാം/ഡെ.ലി."}\r
                 other{"{0} മി.ഗ്രാം/ഡെ.ലി."}\r
@@ -1678,12 +1732,12 @@ ml{
         graphics{\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                one{"{0} dpcm"}\r
+                one{"{0} ppcm"}\r
                 other{"{0} dpcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                one{"{0} dpi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
             }\r
             em{\r
@@ -1769,9 +1823,9 @@ ml{
                 per{"{0}/മീ."}\r
             }\r
             micrometer{\r
-                dnam{"µമീറ്റർ"}\r
-                one{"µമീ."}\r
-                other{"{0} µമീ."}\r
+                dnam{"μമീറ്റർ"}\r
+                one{"μമീ."}\r
+                other{"{0} μമീ."}\r
             }\r
             mile{\r
                 dnam{"മൈൽ"}\r
@@ -1866,9 +1920,9 @@ ml{
                 other{"{0} ട."}\r
             }\r
             microgram{\r
-                dnam{"µ.ഗ്രാം."}\r
-                one{"{0} µ.ഗ്രാം."}\r
-                other{"{0} µ.ഗ്രാം."}\r
+                dnam{"μ.ഗ്രാം."}\r
+                one{"{0} μ.ഗ്രാം."}\r
+                other{"{0} μ.ഗ്രാം."}\r
             }\r
             milligram{\r
                 dnam{"മി.ഗ്രാം."}\r
index 95a8d40..c05a3c2 100644 (file)
@@ -105,7 +105,59 @@ mn{
             }\r
         }\r
         compound{\r
+            1024p1{"киби{0}"}\r
+            1024p2{"мэби{0}"}\r
+            1024p3{"гиби{0}"}\r
+            1024p4{"тэби{0}"}\r
+            1024p5{"пэби{0}"}\r
+            1024p6{"эксби{0}"}\r
+            1024p7{"зэби{0}"}\r
+            1024p8{"яиобэ{0}"}\r
+            10p-1{"деси{0}"}\r
+            10p-12{"пико{0}"}\r
+            10p-15{"фемто{0}"}\r
+            10p-18{"атто{0}"}\r
+            10p-2{"сенти{0}"}\r
+            10p-21{"зепто{0}"}\r
+            10p-24{"ёокто{0}"}\r
+            10p-3{"мили{0}"}\r
+            10p-6{"микро{0}"}\r
+            10p-9{"нано{0}"}\r
+            10p1{"дека{0}"}\r
+            10p12{"тера{0}"}\r
+            10p15{"пета{0}"}\r
+            10p18{"экса{0}"}\r
+            10p2{"хекто{0}"}\r
+            10p21{"зетта{0}"}\r
+            10p24{"ёотта{0}"}\r
+            10p3{"кило{0}"}\r
+            10p6{"мега{0}"}\r
+            10p9{"гига{0}"}\r
             per{"{1} тутамд {0}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"квадрат {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"квадрат {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"куб {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"куб {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ mn{
                 one{"{0} карат"}\r
                 other{"{0} карат"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"мг/дл"}\r
                 one{"{0} мг/дл"}\r
                 other{"{0} мг/дл"}\r
@@ -1008,7 +1060,59 @@ mn{
             }\r
         }\r
         compound{\r
+            1024p1{"Ки{0}"}\r
+            1024p2{"Ми{0}"}\r
+            1024p3{"Ги{0}"}\r
+            1024p4{"Ти{0}"}\r
+            1024p5{"Пи{0}"}\r
+            1024p6{"Эи{0}"}\r
+            1024p7{"Зи{0}"}\r
+            1024p8{"Яи{0}"}\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"а{0}"}\r
+            10p-2{"с{0}"}\r
+            10p-21{"з{0}"}\r
+            10p-24{"ё{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"да{0}"}\r
+            10p12{"Т{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"Э{0}"}\r
+            10p2{"х{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"Ё{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"М{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1307,7 +1411,59 @@ mn{
             }\r
         }\r
         compound{\r
+            1024p1{"Ки{0}"}\r
+            1024p2{"Ми{0}"}\r
+            1024p3{"Ги{0}"}\r
+            1024p4{"Ти{0}"}\r
+            1024p5{"Пи{0}"}\r
+            1024p6{"Эи{0}"}\r
+            1024p7{"Зи{0}"}\r
+            1024p8{"Яи{0}"}\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"а{0}"}\r
+            10p-2{"с{0}"}\r
+            10p-21{"з{0}"}\r
+            10p-24{"ё{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"да{0}"}\r
+            10p12{"Т{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"Э{0}"}\r
+            10p2{"х{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"Ё{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"М{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1315,7 +1471,7 @@ mn{
                 one{"{0} кар"}\r
                 other{"{0} кар"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"мг/дл"}\r
                 one{"{0} мг/дл"}\r
                 other{"{0} мг/дл"}\r
@@ -1668,9 +1824,9 @@ mn{
                 per{"{0}/м"}\r
             }\r
             micrometer{\r
-                dnam{"µметр"}\r
-                one{"{0} µм"}\r
-                other{"{0} µм"}\r
+                dnam{"μметр"}\r
+                one{"{0} μм"}\r
+                other{"{0} μм"}\r
             }\r
             mile{\r
                 dnam{"миль"}\r
@@ -1768,9 +1924,9 @@ mn{
                 other{"{0} т"}\r
             }\r
             microgram{\r
-                dnam{"µг"}\r
-                one{"{0} µг"}\r
-                other{"{0} µг"}\r
+                dnam{"μг"}\r
+                one{"{0} μг"}\r
+                other{"{0} μг"}\r
             }\r
             milligram{\r
                 dnam{"мг"}\r
index 2024a99..ea8cb2c 100644 (file)
@@ -105,7 +105,59 @@ mr{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"डेसी{0}"}\r
+            10p-12{"पिको{0}"}\r
+            10p-15{"फेमिटो{0}"}\r
+            10p-18{"अ‍ॅटॉ{0}"}\r
+            10p-2{"सेंटी{0}"}\r
+            10p-21{"झेपटो{0}"}\r
+            10p-24{"योक्टो{0}"}\r
+            10p-3{"मिलि{0}"}\r
+            10p-6{"मायक्रो{0}"}\r
+            10p-9{"नॅनो{0}"}\r
+            10p1{"डेका{0}"}\r
+            10p12{"टेरा{0}"}\r
+            10p15{"पेटा{0}"}\r
+            10p18{"एक्सा{0}"}\r
+            10p2{"हेक्टो{0}"}\r
+            10p21{"झेट{0}"}\r
+            10p24{"योटा{0}"}\r
+            10p3{"किलो{0}"}\r
+            10p6{"मेगा{0}"}\r
+            10p9{"गीगा{0}"}\r
             per{"{0} प्रति {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"चौरस {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"चौरस {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"घन{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"घन{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ mr{
                 one{"{0} कॅरेट"}\r
                 other{"{0} कॅरेट्स"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"मिलीग्रामस् पर डेसीलिटर"}\r
                 one{"{0} मिलीग्राम पर डेसीलिटर"}\r
                 other{"{0} मिलीग्रामस् पर डेसीलिटर"}\r
@@ -1034,7 +1086,52 @@ mr{
             }\r
         }\r
         compound{\r
+            1024p5{"Pi{0}"}\r
+            10p-1{"डे{0}"}\r
+            10p-12{"पि{0}"}\r
+            10p-15{"फे{0}"}\r
+            10p-18{"अ‍ॅ{0}"}\r
+            10p-2{"से{0}"}\r
+            10p-21{"झे{0}"}\r
+            10p-24{"यो{0}"}\r
+            10p-3{"मि{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"नॅ{0}"}\r
+            10p1{"डे{0}"}\r
+            10p12{"टे{0}"}\r
+            10p15{"पे{0}"}\r
+            10p18{"ए{0}"}\r
+            10p2{"हे{0}"}\r
+            10p21{"झे{0}"}\r
+            10p24{"यो{0}"}\r
+            10p3{"कि{0}"}\r
+            10p6{"मे{0}"}\r
+            10p9{"गी{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1164,8 +1261,8 @@ mr{
             }\r
             micrometer{\r
                 dnam{"मायक्रोमीटर"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"मैल"}\r
@@ -1438,7 +1535,51 @@ mr{
             }\r
         }\r
         compound{\r
+            10p-1{"डेस{0}"}\r
+            10p-12{"पि{0}"}\r
+            10p-15{"फे{0}"}\r
+            10p-18{"अ‍ॅ{0}"}\r
+            10p-2{"से{0}"}\r
+            10p-21{"झेप{0}"}\r
+            10p-24{"योक{0}"}\r
+            10p-3{"मि{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"नॅ{0}"}\r
+            10p1{"डे{0}"}\r
+            10p12{"टे{0}"}\r
+            10p15{"पे{0}"}\r
+            10p18{"ए{0}"}\r
+            10p2{"हे{0}"}\r
+            10p21{"झेटा.{0}"}\r
+            10p24{"योट{0}"}\r
+            10p3{"कि{0}"}\r
+            10p6{"मे{0}"}\r
+            10p9{"गी{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1446,7 +1587,7 @@ mr{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1825,8 +1966,8 @@ mr{
             }\r
             micrometer{\r
                 dnam{"मायक्रोमीटर"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"मैल"}\r
@@ -1934,9 +2075,9 @@ mr{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"मिग्रॅ"}\r
index 84051c9..ae23ead 100644 (file)
@@ -84,14 +84,56 @@ ms{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} per {1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0} persegi"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0} padu"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"karat"}\r
                 other{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligram setiap desiliter"}\r
                 other{"{0} miligram setiap desiliter"}\r
             }\r
@@ -943,8 +985,8 @@ ms{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"bt"}\r
@@ -1003,8 +1045,8 @@ ms{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -1198,7 +1240,7 @@ ms{
                 dnam{"karat"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 other{"{0} mg/dL"}\r
             }\r
@@ -1492,8 +1534,8 @@ ms{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmeter"}\r
-                other{"{0} µm"}\r
+                dnam{"μmeter"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"batu"}\r
@@ -1561,8 +1603,8 @@ ms{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index a47217e..d3d1e62 100644 (file)
@@ -88,14 +88,55 @@ my{
             }\r
         }\r
         compound{\r
+            1024p1{"{0}ကီဘီ"}\r
+            1024p2{"{0}မက်ဘီ"}\r
+            1024p3{"{0}ဂီဘီ"}\r
+            1024p4{"{0}တယ်ဘီ"}\r
+            1024p5{"{0}ပယ်ဘီ"}\r
+            1024p6{"{0}အိတ်ဇ်ဘီ"}\r
+            1024p7{"{0}ဇက်ဘီ"}\r
+            10p-1{"ဒက်စီ {0}"}\r
+            10p-12{"ပီကို {0}"}\r
+            10p-15{"ဖမ်တို {0}"}\r
+            10p-18{"အက်တို {0}"}\r
+            10p-2{"စင်တီ {0}"}\r
+            10p-21{"ဇက်ပ်တို {0}"}\r
+            10p-24{"ယောက်တို {0}"}\r
+            10p-3{"မီလီ {0}"}\r
+            10p-6{"မိုက်ခရို {0}"}\r
+            10p-9{"နာနို {0}"}\r
+            10p1{"ဒက်ကာ {0}"}\r
+            10p12{"တယ်ရာ {0}"}\r
+            10p15{"ပက်တာ {0}"}\r
+            10p18{"အိတ်စ်ဆာ {0}"}\r
+            10p2{"ဟက်တို {0}"}\r
+            10p21{"ဇက်တာ {0}"}\r
+            10p24{"ယိုဒါ {0}"}\r
+            10p3{"ကီလို {0}"}\r
+            10p6{"မီဂါ {0}"}\r
+            10p9{"ဂစ်ဂါ{0}"}\r
             per{"တစ်{1} လျှင် {0}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"နှစ်ထပ်ကိန်း {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"ကုဗ {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"ကာရက်"}\r
                 other{"{0} ကာရက်"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"တစ်ဒက်စီလီတာရှိ မီလီဂရမ်"}\r
                 other{"တစ်ဒက်စီလီတာရှိ {0} မီလီဂရမ်"}\r
             }\r
@@ -813,6 +854,15 @@ my{
             }\r
         }\r
         compound{\r
+            1024p1{"{0}ကီဘီ"}\r
+            1024p2{"{0}မက်ဘီ"}\r
+            1024p3{"{0}ဂီဘီ"}\r
+            1024p4{"{0}တယ်ဘီ"}\r
+            1024p5{"{0}ပယ်ဘီ"}\r
+            1024p6{"{0}အိတ်ဇ်ဘီ"}\r
+            1024p7{"{0}ဇက်ဘီ"}\r
+            10p21{"Z {0}"}\r
+            10p24{"Y {0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1057,6 +1107,16 @@ my{
             }\r
         }\r
         compound{\r
+            1024p1{"{0}ကီဘီ"}\r
+            1024p2{"{0}မက်ဘီ"}\r
+            1024p3{"{0}ဂီဘီ"}\r
+            1024p4{"{0}တယ်ဘီ"}\r
+            1024p5{"{0}ပယ်ဘီ"}\r
+            1024p6{"{0}အိတ်ဇ်ဘီ"}\r
+            1024p7{"{0}ဇက်ဘီ"}\r
+            1024p8{"{0}ယိုဘီ"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1064,7 +1124,7 @@ my{
                 dnam{"ကာရက်"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 other{"{0} mg/dL"}\r
             }\r
@@ -1362,7 +1422,7 @@ my{
             }\r
             micrometer{\r
                 dnam{"မိုက်ခရိုမီတာ"}\r
-                other{"{0} µm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"မိုင်"}\r
@@ -1454,8 +1514,8 @@ my{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"မီလီဂရမ်"}\r
index 19b1614..7d88315 100644 (file)
@@ -762,7 +762,7 @@ mzn{
             }\r
             microgram{\r
                 dnam{"میکروگرم"}\r
-                other{"{0} µg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"میلی‌گرم"}\r
index 9ca374b..eedd825 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nb{\r
-    durationUnits{\r
-        hm{"h:mm"}\r
-        hms{"h:mm:ss"}\r
-        ms{"m:ss"}\r
-    }\r
-    units{\r
-        acceleration{\r
-            g-force{\r
-                dnam{"g-kraft"}\r
-                one{"{0} g-kraft"}\r
-                other{"{0} g-kraft"}\r
-            }\r
-            meter-per-square-second{\r
-                dnam{"meter per sekund²"}\r
-                one{"{0} meter per sekund²"}\r
-                other{"{0} meter per sekund²"}\r
-            }\r
-        }\r
-        angle{\r
-            arc-minute{\r
-                dnam{"bueminutter"}\r
-                one{"{0} bueminutt"}\r
-                other{"{0} bueminutter"}\r
-            }\r
-            arc-second{\r
-                dnam{"buesekunder"}\r
-                one{"{0} buesekund"}\r
-                other{"{0} buesekunder"}\r
-            }\r
-            degree{\r
-                dnam{"grader"}\r
-                one{"{0} grad"}\r
-                other{"{0} grader"}\r
-            }\r
-            radian{\r
-                dnam{"radianer"}\r
-                one{"{0} radian"}\r
-                other{"{0} radianer"}\r
-            }\r
-            revolution{\r
-                dnam{"omdreininger"}\r
-                one{"{0} omdreining"}\r
-                other{"{0} omdreininger"}\r
-            }\r
-        }\r
-        area{\r
-            acre{\r
-                dnam{"acre"}\r
-                one{"{0} acre"}\r
-                other{"{0} acre"}\r
-            }\r
-            hectare{\r
-                dnam{"hektar"}\r
-                one{"{0} hektar"}\r
-                other{"{0} hektar"}\r
-            }\r
-            square-centimeter{\r
-                dnam{"kvadratcentimeter"}\r
-                one{"{0} kvadratcentimeter"}\r
-                other{"{0} kvadratcentimeter"}\r
-                per{"{0} per kvadratcentimeter"}\r
-            }\r
-            square-foot{\r
-                dnam{"kvadratfot"}\r
-                one{"{0} kvadratfot"}\r
-                other{"{0} kvadratfot"}\r
-            }\r
-            square-inch{\r
-                dnam{"kvadrattommer"}\r
-                one{"{0} kvadrattomme"}\r
-                other{"{0} kvadrattommer"}\r
-                per{"{0} per kvadrattomme"}\r
-            }\r
-            square-kilometer{\r
-                dnam{"kvadratkilometer"}\r
-                one{"{0} kvadratkilometer"}\r
-                other{"{0} kvadratkilometer"}\r
-                per{"{0} per kvadratkilometer"}\r
-            }\r
-            square-meter{\r
-                dnam{"kvadratmeter"}\r
-                one{"{0} kvadratmeter"}\r
-                other{"{0} kvadratmeter"}\r
-                per{"{0} per kvadratmeter"}\r
-            }\r
-            square-mile{\r
-                dnam{"engelske kvadratmil"}\r
-                one{"{0} engelsk kvadratmil"}\r
-                other{"{0} engelske kvadratmil"}\r
-                per{"{0} per engelsk kvadratmil"}\r
-            }\r
-            square-yard{\r
-                dnam{"kvadratyard"}\r
-                one{"{0} kvadratyard"}\r
-                other{"{0} kvadratyard"}\r
-            }\r
-        }\r
-        compound{\r
-            per{"{0} per {1}"}\r
-        }\r
-        concentr{\r
-            karat{\r
-                dnam{"karat"}\r
-                one{"{0} karat"}\r
-                other{"{0} karat"}\r
-            }\r
-            milligram-per-deciliter{\r
-                dnam{"milligram per desiliter"}\r
-                one{"{0} milligram per desiliter"}\r
-                other{"{0} milligram per desiliter"}\r
-            }\r
-            millimole-per-liter{\r
-                dnam{"millimol per liter"}\r
-                one{"{0} millimol per liter"}\r
-                other{"{0} millimol per liter"}\r
-            }\r
-            percent{\r
-                dnam{"prosent"}\r
-                one{"{0} prosent"}\r
-                other{"{0} prosent"}\r
-            }\r
-            permille{\r
-                dnam{"promille"}\r
-                one{"{0} promille"}\r
-                other{"{0} promille"}\r
-            }\r
-            permillion{\r
-                dnam{"deler per million"}\r
-                one{"{0} del per million"}\r
-                other{"{0} deler per million"}\r
-            }\r
-            permyriad{\r
-                dnam{"promyriade"}\r
-                one{"{0} promyriade"}\r
-                other{"{0} promyriade"}\r
-            }\r
-        }\r
-        consumption{\r
-            liter-per-100-kilometer{\r
-                dnam{"liter per 100 kilometer"}\r
-                one{"{0} liter per 100 kilometer"}\r
-                other{"{0} liter per 100 kilometer"}\r
-            }\r
-            liter-per-kilometer{\r
-                dnam{"liter per kilometer"}\r
-                one{"{0} liter per kilometer"}\r
-                other{"{0} liter per kilometer"}\r
-            }\r
-            mile-per-gallon{\r
-                dnam{"engelske mil per gallon"}\r
-                one{"{0} engelsk mil per gallon"}\r
-                other{"{0} engelske mil per gallon"}\r
-            }\r
-            mile-per-gallon-imperial{\r
-                dnam{"engelske mil per britiske gallon"}\r
-                one{"{0} engelsk mil per britisk gallon"}\r
-                other{"{0} engelske mil per britiske gallon"}\r
-            }\r
-        }\r
-        coordinate{\r
-            dnam{"himmelretning"}\r
-            east{"{0} øst"}\r
-            north{"{0} nord"}\r
-            south{"{0} sør"}\r
-            west{"{0} vest"}\r
-        }\r
-        digital{\r
-            bit{\r
-                dnam{"bit"}\r
-                one{"{0} bit"}\r
-                other{"{0} bit"}\r
-            }\r
-            byte{\r
-                dnam{"byte"}\r
-                one{"{0} byte"}\r
-                other{"{0} byte"}\r
-            }\r
-            gigabit{\r
-                dnam{"gigabit"}\r
-                one{"{0} gigabit"}\r
-                other{"{0} gigabit"}\r
-            }\r
-            gigabyte{\r
-                dnam{"gigabyte"}\r
-                one{"{0} gigabyte"}\r
-                other{"{0} gigabyte"}\r
-            }\r
-            kilobit{\r
-                dnam{"kilobit"}\r
-                one{"{0} kilobit"}\r
-                other{"{0} kilobit"}\r
-            }\r
-            kilobyte{\r
-                dnam{"kilobyte"}\r
-                one{"{0} kilobyte"}\r
-                other{"{0} kilobyte"}\r
-            }\r
-            megabit{\r
-                dnam{"megabit"}\r
-                one{"{0} megabit"}\r
-                other{"{0} megabit"}\r
-            }\r
-            megabyte{\r
-                dnam{"megabyte"}\r
-                one{"{0} megabyte"}\r
-                other{"{0} megabyte"}\r
-            }\r
-            petabyte{\r
-                dnam{"petabyte"}\r
-                one{"{0} petabyte"}\r
-                other{"{0} petabyte"}\r
-            }\r
-            terabit{\r
-                dnam{"terabit"}\r
-                one{"{0} terabit"}\r
-                other{"{0} terabit"}\r
-            }\r
-            terabyte{\r
-                dnam{"terabyte"}\r
-                one{"{0} terabyte"}\r
-                other{"{0} terabyte"}\r
-            }\r
-        }\r
-        duration{\r
-            century{\r
-                dnam{"århundrer"}\r
-                one{"{0} århundre"}\r
-                other{"{0} århundrer"}\r
-            }\r
-            day{\r
-                dnam{"døgn"}\r
-                one{"{0} døgn"}\r
-                other{"{0} døgn"}\r
-                per{"{0} per døgn"}\r
-            }\r
-            decade{\r
-                dnam{"tiår"}\r
-                one{"{0} tiår"}\r
-                other{"{0} tiår"}\r
-            }\r
-            hour{\r
-                dnam{"timer"}\r
-                one{"{0} time"}\r
-                other{"{0} timer"}\r
-                per{"{0} per time"}\r
-            }\r
-            microsecond{\r
-                dnam{"mikrosekunder"}\r
-                one{"{0} mikrosekund"}\r
-                other{"{0} mikrosekunder"}\r
-            }\r
-            millisecond{\r
-                dnam{"millisekunder"}\r
-                one{"{0} millisekund"}\r
-                other{"{0} millisekunder"}\r
-            }\r
-            minute{\r
-                dnam{"minutter"}\r
-                one{"{0} minutt"}\r
-                other{"{0} minutter"}\r
-                per{"{0} per minutt"}\r
-            }\r
-            month{\r
-                dnam{"måneder"}\r
-                one{"{0} måned"}\r
-                other{"{0} måneder"}\r
-                per{"{0} per måned"}\r
-            }\r
-            nanosecond{\r
-                dnam{"nanosekunder"}\r
-                one{"{0} nanosekund"}\r
-                other{"{0} nanosekunder"}\r
-            }\r
-            second{\r
-                dnam{"sekunder"}\r
-                one{"{0} sekund"}\r
-                other{"{0} sekunder"}\r
-                per{"{0} per sekund"}\r
-            }\r
-            week{\r
-                dnam{"uker"}\r
-                one{"{0} uke"}\r
-                other{"{0} uker"}\r
-                per{"{0} per uke"}\r
-            }\r
-            year{\r
-                dnam{"år"}\r
-                one{"{0} år"}\r
-                other{"{0} år"}\r
-                per{"{0} per år"}\r
-            }\r
-        }\r
-        electric{\r
-            ampere{\r
-                dnam{"ampere"}\r
-                one{"{0} ampere"}\r
-                other{"{0} ampere"}\r
-            }\r
-            milliampere{\r
-                dnam{"milliampere"}\r
-                one{"{0} milliampere"}\r
-                other{"{0} milliampere"}\r
-            }\r
-            ohm{\r
-                dnam{"ohm"}\r
-                one{"{0} ohm"}\r
-                other{"{0} ohm"}\r
-            }\r
-            volt{\r
-                dnam{"volt"}\r
-                one{"{0} volt"}\r
-                other{"{0} volt"}\r
-            }\r
-        }\r
-        energy{\r
-            british-thermal-unit{\r
-                dnam{"British thermal unit"}\r
-            }\r
-            calorie{\r
-                dnam{"kalorier"}\r
-                one{"{0} kalori"}\r
-                other{"{0} kalorier"}\r
-            }\r
-            electronvolt{\r
-                dnam{"elektronvolt"}\r
-                one{"{0} elektronvolt"}\r
-                other{"{0} elektronvolt"}\r
-            }\r
-            foodcalorie{\r
-                dnam{"kalorier"}\r
-                one{"{0} kalori"}\r
-                other{"{0} kalorier"}\r
-            }\r
-            joule{\r
-                dnam{"joule"}\r
-                one{"{0} joule"}\r
-                other{"{0} joule"}\r
-            }\r
-            kilocalorie{\r
-                dnam{"kilokalorier"}\r
-                one{"{0} kilokalori"}\r
-                other{"{0} kilokalorier"}\r
-            }\r
-            kilojoule{\r
-                dnam{"kilojoule"}\r
-                one{"{0} kilojoule"}\r
-                other{"{0} kilojoule"}\r
-            }\r
-            kilowatt-hour{\r
-                dnam{"kilowattimer"}\r
-                one{"{0} kilowattime"}\r
-                other{"{0} kilowattimer"}\r
-            }\r
-            therm-us{\r
-                dnam{"therm"}\r
-                one{"{0} therm"}\r
-                other{"{0} therm"}\r
-            }\r
-        }\r
-        force{\r
-            newton{\r
-                dnam{"newton"}\r
-                one{"{0} newton"}\r
-                other{"{0} newton"}\r
-            }\r
-            pound-force{\r
-                dnam{"poundforce"}\r
-                one{"{0} poundforce"}\r
-                other{"{0} poundforce"}\r
-            }\r
-        }\r
-        frequency{\r
-            gigahertz{\r
-                dnam{"gigahertz"}\r
-                one{"{0} gigahertz"}\r
-                other{"{0} gigahertz"}\r
-            }\r
-            hertz{\r
-                dnam{"hertz"}\r
-                one{"{0} hertz"}\r
-                other{"{0} hertz"}\r
-            }\r
-            kilohertz{\r
-                dnam{"kilohertz"}\r
-                one{"{0} kilohertz"}\r
-                other{"{0} kilohertz"}\r
-            }\r
-            megahertz{\r
-                dnam{"megahertz"}\r
-                one{"{0} megahertz"}\r
-                other{"{0} megahertz"}\r
-            }\r
-        }\r
-        graphics{\r
-            dot{\r
-                dnam{"punkt"}\r
-                one{"{0} punkt"}\r
-                other{"{0} punkter"}\r
-            }\r
-            dot-per-centimeter{\r
-                dnam{"punkter per centimeter"}\r
-                one{"{0} punkt per centimeter"}\r
-                other{"{0} punkter per centimeter"}\r
-            }\r
-            dot-per-inch{\r
-                dnam{"punkter per tomme"}\r
-                one{"{0} punkt per tomme"}\r
-                other{"{0} punkter per tomme"}\r
-            }\r
-            em{\r
-                dnam{"gefirt"}\r
-                one{"{0} gefirt"}\r
-                other{"{0} gefirt"}\r
-            }\r
-            megapixel{\r
-                dnam{"megapiksler"}\r
-                one{"{0} megapiksel"}\r
-                other{"{0} megapiksler"}\r
-            }\r
-            pixel{\r
-                dnam{"piksler"}\r
-                one{"{0} piksel"}\r
-                other{"{0} piksler"}\r
-            }\r
-            pixel-per-centimeter{\r
-                dnam{"piksler per centimeter"}\r
-                one{"{0} piksel per centimeter"}\r
-                other{"{0} piksler per centimeter"}\r
-            }\r
-            pixel-per-inch{\r
-                dnam{"piksler per tomme"}\r
-                one{"{0} piksel per tomme"}\r
-                other{"{0} piksler per tomme"}\r
-            }\r
-        }\r
-        length{\r
-            astronomical-unit{\r
-                dnam{"astronomiske enheter"}\r
-                one{"{0} astronomisk enhet"}\r
-                other{"{0} astronomiske enheter"}\r
-            }\r
-            centimeter{\r
-                dnam{"centimeter"}\r
-                one{"{0} centimeter"}\r
-                other{"{0} centimeter"}\r
-                per{"{0} per centimeter"}\r
-            }\r
-            decimeter{\r
-                dnam{"desimeter"}\r
-                one{"{0} desimeter"}\r
-                other{"{0} desimeter"}\r
-            }\r
-            earth-radius{\r
-                dnam{"jordradius"}\r
-                one{"{0} jordradius"}\r
-                other{"{0} jordradier"}\r
-            }\r
-            fathom{\r
-                dnam{"favner"}\r
-                one{"{0} favn"}\r
-                other{"{0} favner"}\r
-            }\r
-            foot{\r
-                dnam{"fot"}\r
-                one{"{0} fot"}\r
-                other{"{0} fot"}\r
-                per{"{0} per fot"}\r
-            }\r
-            furlong{\r
-                dnam{"furlong"}\r
-                one{"{0} furlong"}\r
-                other{"{0} furlong"}\r
-            }\r
-            inch{\r
-                dnam{"tommer"}\r
-                one{"{0} tomme"}\r
-                other{"{0} tommer"}\r
-                per{"{0} per tomme"}\r
-            }\r
-            kilometer{\r
-                dnam{"kilometer"}\r
-                one{"{0} kilometer"}\r
-                other{"{0} kilometer"}\r
-                per{"{0} per kilometer"}\r
-            }\r
-            light-year{\r
-                dnam{"lysår"}\r
-                one{"{0} lysår"}\r
-                other{"{0} lysår"}\r
-            }\r
-            meter{\r
-                dnam{"meter"}\r
-                one{"{0} meter"}\r
-                other{"{0} meter"}\r
-                per{"{0} per meter"}\r
-            }\r
-            micrometer{\r
-                dnam{"mikrometer"}\r
-                one{"{0} mikrometer"}\r
-                other{"{0} mikrometer"}\r
-            }\r
-            mile{\r
-                dnam{"engelske mil"}\r
-                one{"{0} engelsk mil"}\r
-                other{"{0} engelske mil"}\r
-            }\r
-            mile-scandinavian{\r
-                dnam{"mil"}\r
-                one{"{0} mil"}\r
-                other{"{0} mil"}\r
-            }\r
-            millimeter{\r
-                dnam{"millimeter"}\r
-                one{"{0} millimeter"}\r
-                other{"{0} millimeter"}\r
-            }\r
-            nanometer{\r
-                dnam{"nanometer"}\r
-                one{"{0} nanometer"}\r
-                other{"{0} nanometer"}\r
-            }\r
-            nautical-mile{\r
-                dnam{"nautiske mil"}\r
-                one{"{0} nautisk mil"}\r
-                other{"{0} nautiske mil"}\r
-            }\r
-            parsec{\r
-                dnam{"parsec"}\r
-                one{"{0} parsec"}\r
-                other{"{0} parsec"}\r
-            }\r
-            picometer{\r
-                dnam{"pikometer"}\r
-                one{"{0} pikometer"}\r
-                other{"{0} pikometer"}\r
-            }\r
-            point{\r
-                dnam{"typografiske punkter"}\r
-                one{"{0} typografisk punkt"}\r
-                other{"{0} typografiske punkter"}\r
-            }\r
-            solar-radius{\r
-                dnam{"solradier"}\r
-                one{"{0} solradius"}\r
-                other{"{0} solradier"}\r
-            }\r
-            yard{\r
-                dnam{"yard"}\r
-                one{"{0} yard"}\r
-                other{"{0} yard"}\r
-            }\r
-        }\r
-        light{\r
-            candela{\r
-                dnam{"candela"}\r
-                one{"{0} candela"}\r
-                other{"{0} candela"}\r
-            }\r
-            lumen{\r
-                dnam{"lumen"}\r
-                one{"{0} lumen"}\r
-                other{"{0} lumen"}\r
-            }\r
-            lux{\r
-                dnam{"lux"}\r
-                one{"{0} lux"}\r
-                other{"{0} lux"}\r
-            }\r
-            solar-luminosity{\r
-                dnam{"solluminositet"}\r
-            }\r
-        }\r
-        mass{\r
-            carat{\r
-                dnam{"karat"}\r
-                one{"{0} karat"}\r
-                other{"{0} karat"}\r
-            }\r
-            dalton{\r
-                dnam{"dalton"}\r
-                one{"{0} dalton"}\r
-                other{"{0} dalton"}\r
-            }\r
-            earth-mass{\r
-                dnam{"jordmasser"}\r
-                one{"{0} jordmasse"}\r
-                other{"{0} jordmasser"}\r
-            }\r
-            grain{\r
-                one{"{0} grain"}\r
-                other{"{0} grain"}\r
-            }\r
-            gram{\r
-                dnam{"gram"}\r
-                one{"{0} gram"}\r
-                other{"{0} gram"}\r
-                per{"{0} per gram"}\r
-            }\r
-            kilogram{\r
-                dnam{"kilogram"}\r
-                one{"{0} kilogram"}\r
-                other{"{0} kilogram"}\r
-                per{"{0} per kilogram"}\r
-            }\r
-            metric-ton{\r
-                dnam{"tonn"}\r
-                one{"{0} tonn"}\r
-                other{"{0} tonn"}\r
-            }\r
-            microgram{\r
-                dnam{"mikrogram"}\r
-                one{"{0} mikrogram"}\r
-                other{"{0} mikrogram"}\r
-            }\r
-            milligram{\r
-                dnam{"milligram"}\r
-                one{"{0} milligram"}\r
-                other{"{0} milligram"}\r
-            }\r
-            ounce{\r
-                dnam{"unser"}\r
-                one{"{0} unse"}\r
-                other{"{0} unser"}\r
-                per{"{0} per unse"}\r
-            }\r
-            ounce-troy{\r
-                dnam{"troy ounce"}\r
-                one{"{0} troy ounce"}\r
-                other{"{0} troy ounce"}\r
-            }\r
-            pound{\r
-                dnam{"pund"}\r
-                one{"{0} pund"}\r
-                other{"{0} pund"}\r
-                per{"{0} per pund"}\r
-            }\r
-            solar-mass{\r
-                dnam{"solmasser"}\r
-                one{"{0} solmasse"}\r
-                other{"{0} solmasser"}\r
-            }\r
-            stone{\r
-                dnam{"stone"}\r
-                one{"{0} stone"}\r
-                other{"{0} stone"}\r
-            }\r
-            ton{\r
-                dnam{"amerikanske tonn"}\r
-                one{"{0} amerikansk tonn"}\r
-                other{"{0} amerikanske tonn"}\r
-            }\r
-        }\r
-        power{\r
-            gigawatt{\r
-                dnam{"gigawatt"}\r
-                one{"{0} gigawatt"}\r
-                other{"{0} gigawatt"}\r
-            }\r
-            horsepower{\r
-                dnam{"hestekrefter"}\r
-                one{"{0} hestekraft"}\r
-                other{"{0} hestekrefter"}\r
-            }\r
-            kilowatt{\r
-                dnam{"kilowatt"}\r
-                one{"{0} kilowatt"}\r
-                other{"{0} kilowatt"}\r
-            }\r
-            megawatt{\r
-                dnam{"megawatt"}\r
-                one{"{0} megawatt"}\r
-                other{"{0} megawatt"}\r
-            }\r
-            milliwatt{\r
-                dnam{"milliwatt"}\r
-                one{"{0} milliwatt"}\r
-                other{"{0} milliwatt"}\r
-            }\r
-            watt{\r
-                dnam{"watt"}\r
-                one{"{0} watt"}\r
-                other{"{0} watt"}\r
-            }\r
-        }\r
-        pressure{\r
-            atmosphere{\r
-                dnam{"atmosfærer"}\r
-                one{"{0} atmosfære"}\r
-                other{"{0} atmosfærer"}\r
-            }\r
-            hectopascal{\r
-                dnam{"hektopascal"}\r
-                one{"{0} hektopascal"}\r
-                other{"{0} hektopascal"}\r
-            }\r
-            inch-ofhg{\r
-                dnam{"tommer kvikksølv"}\r
-                one{"{0} tomme kvikksølv"}\r
-                other{"{0} tommer kvikksølv"}\r
-            }\r
-            kilopascal{\r
-                dnam{"kilopascal"}\r
-                one{"{0} kilopascal"}\r
-                other{"{0} kilopascal"}\r
-            }\r
-            megapascal{\r
-                dnam{"megapascal"}\r
-                one{"{0} megapascal"}\r
-                other{"{0} megapascal"}\r
-            }\r
-            millibar{\r
-                dnam{"millibar"}\r
-                one{"{0} millibar"}\r
-                other{"{0} millibar"}\r
-            }\r
-            millimeter-ofhg{\r
-                dnam{"millimeter kvikksølv"}\r
-                one{"{0} millimeter kvikksølv"}\r
-                other{"{0} millimeter kvikksølv"}\r
-            }\r
-            pascal{\r
-                dnam{"pascal"}\r
-                one{"{0} pascal"}\r
-                other{"{0} pascal"}\r
-            }\r
-            pound-force-per-square-inch{\r
-                dnam{"pund per kvadrattomme"}\r
-                one{"{0} pund per kvadrattomme"}\r
-                other{"{0} pund per kvadrattomme"}\r
-            }\r
-        }\r
-        speed{\r
-            kilometer-per-hour{\r
-                dnam{"kilometer per time"}\r
-                one{"{0} kilometer per time"}\r
-                other{"{0} kilometer per time"}\r
-            }\r
-            knot{\r
-                dnam{"knop"}\r
-                one{"{0} knop"}\r
-                other{"{0} knop"}\r
-            }\r
-            meter-per-second{\r
-                dnam{"meter per sekund"}\r
-                one{"{0} meter per sekund"}\r
-                other{"{0} meter per sekund"}\r
-            }\r
-            mile-per-hour{\r
-                dnam{"engelske mil per time"}\r
-                one{"{0} engelsk mil per time"}\r
-                other{"{0} engelske mil per time"}\r
-            }\r
-        }\r
-        temperature{\r
-            celsius{\r
-                dnam{"grader celsius"}\r
-                one{"{0} grad celsius"}\r
-                other{"{0} grader celsius"}\r
-            }\r
-            fahrenheit{\r
-                dnam{"grader fahrenheit"}\r
-                one{"{0} grad fahrenheit"}\r
-                other{"{0} grader fahrenheit"}\r
-            }\r
-            generic{\r
-                dnam{"grader"}\r
-                one{"{0} grad"}\r
-                other{"{0} grader"}\r
-            }\r
-            kelvin{\r
-                dnam{"kelvin"}\r
-                one{"{0} kelvin"}\r
-                other{"{0} kelvin"}\r
-            }\r
-        }\r
-        torque{\r
-            newton-meter{\r
-                dnam{"newtonmeter"}\r
-                one{"{0} Nm"}\r
-                other{"{0} Nm"}\r
-            }\r
-            pound-force-foot{\r
-                dnam{"pound-foot"}\r
-                one{"{0} pound-foot"}\r
-                other{"{0} pound-foot"}\r
-            }\r
-        }\r
-        volume{\r
-            acre-foot{\r
-                dnam{"acre-fot"}\r
-                one{"{0} acre-fot"}\r
-                other{"{0} acre-fot"}\r
-            }\r
-            barrel{\r
-                dnam{"fat"}\r
-                one{"{0} fat"}\r
-                other{"{0} fat"}\r
-            }\r
-            bushel{\r
-                dnam{"bushel"}\r
-                one{"{0} bushel"}\r
-                other{"{0} bushels"}\r
-            }\r
-            centiliter{\r
-                dnam{"centiliter"}\r
-                one{"{0} centiliter"}\r
-                other{"{0} centiliter"}\r
-            }\r
-            cubic-centimeter{\r
-                dnam{"kubikkcentimeter"}\r
-                one{"{0} kubikkcentimeter"}\r
-                other{"{0} kubikkcentimeter"}\r
-                per{"{0} per kubikkcentimeter"}\r
-            }\r
-            cubic-foot{\r
-                dnam{"kubikkfot"}\r
-                one{"{0} kubikkfot"}\r
-                other{"{0} kubikkfot"}\r
-            }\r
-            cubic-inch{\r
-                dnam{"kubikktommer"}\r
-                one{"{0} kubikktomme"}\r
-                other{"{0} kubikktommer"}\r
-            }\r
-            cubic-kilometer{\r
-                dnam{"kubikkilometer"}\r
-                one{"{0} kubikkilometer"}\r
-                other{"{0} kubikkilometer"}\r
-            }\r
-            cubic-meter{\r
-                dnam{"kubikkmeter"}\r
-                one{"{0} kubikkmeter"}\r
-                other{"{0} kubikkmeter"}\r
-                per{"{0} per kubikkmeter"}\r
-            }\r
-            cubic-mile{\r
-                dnam{"engelske kubikkmil"}\r
-                one{"{0} engelsk kubikkmil"}\r
-                other{"{0} engelske kubikkmil"}\r
-            }\r
-            cubic-yard{\r
-                dnam{"kubikkyard"}\r
-                one{"{0} kubikkyard"}\r
-                other{"{0} kubikkyard"}\r
-            }\r
-            cup{\r
-                dnam{"kopper"}\r
-                one{"{0} kopp"}\r
-                other{"{0} kopper"}\r
-            }\r
-            cup-metric{\r
-                dnam{"metriske kopper"}\r
-                one{"{0} metrisk kopp"}\r
-                other{"{0} metriske kopper"}\r
-            }\r
-            deciliter{\r
-                dnam{"desiliter"}\r
-                one{"{0} desiliter"}\r
-                other{"{0} desiliter"}\r
-            }\r
-            dessert-spoon{\r
-                dnam{"barneskje"}\r
-                one{"{0} barneskje"}\r
-                other{"{0} barneskjeer"}\r
-            }\r
-            dessert-spoon-imperial{\r
-                dnam{"britisk barneskje"}\r
-                one{"{0} britisk barneskje"}\r
-                other{"{0} britiske barneskjeer"}\r
-            }\r
-            dram{\r
-                dnam{"dram"}\r
-                one{"{0} dram"}\r
-                other{"{0} dram"}\r
-            }\r
-            drop{\r
-                dnam{"dråpe"}\r
-                one{"{0} dråpe"}\r
-                other{"{0} dråper"}\r
-            }\r
-            fluid-ounce{\r
-                dnam{"væskeunser"}\r
-                one{"{0} væskeunse"}\r
-                other{"{0} væskeunser"}\r
-            }\r
-            fluid-ounce-imperial{\r
-                dnam{"britiske væskeunser"}\r
-                one{"{0} britisk væskeunse"}\r
-                other{"{0} britiske væskeunser"}\r
-            }\r
-            gallon{\r
-                dnam{"gallon"}\r
-                one{"{0} gallon"}\r
-                other{"{0} gallon"}\r
-                per{"{0} per gallon"}\r
-            }\r
-            gallon-imperial{\r
-                dnam{"britiske gallon"}\r
-                one{"{0} britisk gallon"}\r
-                other{"{0} britiske gallon"}\r
-                per{"{0} per britisk gallon"}\r
-            }\r
-            hectoliter{\r
-                dnam{"hektoliter"}\r
-                one{"{0} hektoliter"}\r
-                other{"{0} hektoliter"}\r
-            }\r
-            jigger{\r
-                dnam{"shot"}\r
-                one{"{0} shot"}\r
-                other{"{0} shot"}\r
-            }\r
-            liter{\r
-                dnam{"liter"}\r
-                one{"{0} liter"}\r
-                other{"{0} liter"}\r
-                per{"{0} per liter"}\r
-            }\r
-            megaliter{\r
-                dnam{"megaliter"}\r
-                one{"{0} megaliter"}\r
-                other{"{0} megaliter"}\r
-            }\r
-            milliliter{\r
-                dnam{"milliliter"}\r
-                one{"{0} milliliter"}\r
-                other{"{0} milliliter"}\r
-            }\r
-            pinch{\r
-                dnam{"klype"}\r
-                one{"{0} klype"}\r
-                other{"{0} klyper"}\r
-            }\r
-            pint{\r
-                dnam{"pint"}\r
-                one{"{0} pint"}\r
-                other{"{0} pint"}\r
-            }\r
-            pint-metric{\r
-                dnam{"metriske pint"}\r
-                one{"{0} metrisk pint"}\r
-                other{"{0} metriske pint"}\r
-            }\r
-            quart{\r
-                dnam{"quart"}\r
-                one{"{0} quart"}\r
-                other{"{0} quart"}\r
-            }\r
-            quart-imperial{\r
-                dnam{"britisk quart"}\r
-                one{"{0} britisk quart"}\r
-                other{"{0} britiske quart"}\r
-            }\r
-            tablespoon{\r
-                dnam{"spiseskjeer"}\r
-                one{"{0} spiseskje"}\r
-                other{"{0} spiseskjeer"}\r
-            }\r
-            teaspoon{\r
-                dnam{"teskjeer"}\r
-                one{"{0} teskje"}\r
-                other{"{0} teskjeer"}\r
-            }\r
-        }\r
-    }\r
-    unitsNarrow{\r
-        acceleration{\r
-            g-force{\r
-                dnam{"G"}\r
-                one{"{0}G"}\r
-                other{"{0}G"}\r
-            }\r
-            meter-per-square-second{\r
-                one{"{0}m/s²"}\r
-                other{"{0}m/s²"}\r
-            }\r
-        }\r
-        angle{\r
-            arc-minute{\r
-                one{"{0}′"}\r
-                other{"{0}′"}\r
-            }\r
-            arc-second{\r
-                one{"{0}″"}\r
-                other{"{0}″"}\r
-            }\r
-            degree{\r
-                one{"{0}°"}\r
-                other{"{0}°"}\r
-            }\r
-        }\r
-        area{\r
-            acre{\r
-                one{"{0} ac"}\r
-                other{"{0} ac"}\r
-            }\r
-            hectare{\r
-                one{"{0}ha"}\r
-                other{"{0}ha"}\r
-            }\r
-            square-foot{\r
-                one{"{0}fot²"}\r
-                other{"{0}fot²"}\r
-            }\r
-            square-kilometer{\r
-                one{"{0}km²"}\r
-                other{"{0}km²"}\r
-            }\r
-            square-meter{\r
-                one{"{0}m²"}\r
-                other{"{0}m²"}\r
-            }\r
-            square-mile{\r
-                one{"{0} eng mil²"}\r
-                other{"{0} eng mil²"}\r
-            }\r
-        }\r
-        compound{\r
-            per{"{0}/{1}"}\r
-        }\r
-        concentr{\r
-            percent{\r
-                dnam{"%"}\r
-                one{"{0} %"}\r
-                other{"{0} %"}\r
-            }\r
-        }\r
-        consumption{\r
-            liter-per-100-kilometer{\r
-                dnam{"l/100km"}\r
-                one{"{0} l/100km"}\r
-                other{"{0} l/100km"}\r
-            }\r
-        }\r
-        coordinate{\r
-            dnam{"retning"}\r
-            east{"{0}Ø"}\r
-            north{"{0}N"}\r
-            south{"{0}S"}\r
-            west{"{0}V"}\r
-        }\r
-        duration{\r
-            century{\r
-                dnam{"årh."}\r
-                one{"{0} årh."}\r
-                other{"{0} årh."}\r
-            }\r
-            day{\r
-                dnam{"døgn"}\r
-                one{"{0}d"}\r
-                other{"{0}d"}\r
-                per{"{0}/d"}\r
-            }\r
-            hour{\r
-                dnam{"time"}\r
-                one{"{0}t"}\r
-                other{"{0}t"}\r
-                per{"{0}/t"}\r
-            }\r
-            microsecond{\r
-                dnam{"μs"}\r
-                one{"{0}μs"}\r
-                other{"{0}μs"}\r
-            }\r
-            millisecond{\r
-                dnam{"ms"}\r
-                one{"{0}ms"}\r
-                other{"{0}ms"}\r
-            }\r
-            minute{\r
-                dnam{"min"}\r
-                one{"{0}m"}\r
-                other{"{0}m"}\r
-                per{"{0}/m"}\r
-            }\r
-            month{\r
-                dnam{"måned"}\r
-                one{"{0} m"}\r
-                other{"{0} m"}\r
-                per{"{0}/m"}\r
-            }\r
-            nanosecond{\r
-                dnam{"ns"}\r
-                one{"{0}ns"}\r
-                other{"{0}ns"}\r
-            }\r
-            second{\r
-                dnam{"sek"}\r
-                one{"{0}s"}\r
-                other{"{0}s"}\r
-                per{"{0}/s"}\r
-            }\r
-            week{\r
-                dnam{"uke"}\r
-                one{"{0}u"}\r
-                other{"{0}u"}\r
-                per{"{0}/u"}\r
-            }\r
-            year{\r
-                dnam{"år"}\r
-                one{"{0}å"}\r
-                other{"{0}å"}\r
-                per{"{0}/år"}\r
-            }\r
-        }\r
-        length{\r
-            astronomical-unit{\r
-                one{"{0}au"}\r
-                other{"{0}au"}\r
-            }\r
-            centimeter{\r
-                dnam{"cm"}\r
-                one{"{0}cm"}\r
-                other{"{0}cm"}\r
-            }\r
-            decimeter{\r
-                one{"{0}dm"}\r
-                other{"{0}dm"}\r
-            }\r
-            foot{\r
-                dnam{"fot"}\r
-                one{"{0} fot"}\r
-                other{"{0} fot"}\r
-            }\r
-            inch{\r
-                dnam{"to"}\r
-                one{"{0} tomme"}\r
-                other{"{0} tommer"}\r
-                per{"{0}to"}\r
-            }\r
-            kilometer{\r
-                dnam{"km"}\r
-                one{"{0}km"}\r
-                other{"{0}km"}\r
-            }\r
-            light-year{\r
-                one{"{0} lysår"}\r
-                other{"{0} lysår"}\r
-            }\r
-            meter{\r
-                dnam{"m"}\r
-                one{"{0}m"}\r
-                other{"{0}m"}\r
-            }\r
-            micrometer{\r
-                one{"{0}µm"}\r
-                other{"{0}µm"}\r
-            }\r
-            mile{\r
-                dnam{"mile"}\r
-                one{"{0} eng mil"}\r
-                other{"{0} eng mil"}\r
-            }\r
-            mile-scandinavian{\r
-                dnam{"mil"}\r
-                one{"{0}mil"}\r
-                other{"{0}mil"}\r
-            }\r
-            millimeter{\r
-                dnam{"mm"}\r
-                one{"{0}mm"}\r
-                other{"{0}mm"}\r
-            }\r
-            nanometer{\r
-                one{"{0}nm"}\r
-                other{"{0}nm"}\r
-            }\r
-            nautical-mile{\r
-                one{"{0}nmi"}\r
-                other{"{0}nmi"}\r
-            }\r
-            parsec{\r
-                one{"{0}pc"}\r
-                other{"{0}pc"}\r
-            }\r
-            picometer{\r
-                one{"{0}pm"}\r
-                other{"{0}pm"}\r
-            }\r
-            point{\r
-                one{"{0}pt"}\r
-                other{"{0}pt"}\r
-            }\r
-            yard{\r
-                one{"{0} yard"}\r
-                other{"{0} yard"}\r
-            }\r
-        }\r
-        mass{\r
-            gram{\r
-                dnam{"gram"}\r
-                one{"{0}g"}\r
-                other{"{0}g"}\r
-            }\r
-            kilogram{\r
-                dnam{"kg"}\r
-                one{"{0}kg"}\r
-                other{"{0}kg"}\r
-            }\r
-            metric-ton{\r
-                one{"{0}t"}\r
-                other{"{0}t"}\r
-            }\r
-            microgram{\r
-                one{"{0}µg"}\r
-                other{"{0}µg"}\r
-            }\r
-            milligram{\r
-                one{"{0}mg"}\r
-                other{"{0}mg"}\r
-            }\r
-            ounce{\r
-                dnam{"unse"}\r
-                one{"{0} unse"}\r
-                other{"{0} unser"}\r
-            }\r
-            pound{\r
-                dnam{"pund"}\r
-                one{"{0} pund"}\r
-                other{"{0} pund"}\r
-                per{"{0}/pund"}\r
-            }\r
-        }\r
-        power{\r
-            horsepower{\r
-                one{"{0}hk"}\r
-                other{"{0}hk"}\r
-            }\r
-            kilowatt{\r
-                one{"{0}kW"}\r
-                other{"{0}kW"}\r
-            }\r
-            watt{\r
-                one{"{0}W"}\r
-                other{"{0}W"}\r
-            }\r
-        }\r
-        pressure{\r
-            hectopascal{\r
-                one{"{0}hPa"}\r
-                other{"{0}hPa"}\r
-            }\r
-            inch-ofhg{\r
-                one{"{0}ʹʹ Hg"}\r
-                other{"{0}ʹʹ Hg"}\r
-            }\r
-            millibar{\r
-                one{"{0}mbar"}\r
-                other{"{0}mbar"}\r
-            }\r
-            millimeter-ofhg{\r
-                one{"{0}mmHg"}\r
-                other{"{0}mmHg"}\r
-            }\r
-            pound-force-per-square-inch{\r
-                one{"{0}psi"}\r
-                other{"{0}psi"}\r
-            }\r
-        }\r
-        speed{\r
-            kilometer-per-hour{\r
-                dnam{"km/t"}\r
-                one{"{0}km/t"}\r
-                other{"{0}km/t"}\r
-            }\r
-            knot{\r
-                one{"{0}kn"}\r
-                other{"{0}kn"}\r
-            }\r
-            meter-per-second{\r
-                one{"{0}m/s"}\r
-                other{"{0}m/s"}\r
-            }\r
-            mile-per-hour{\r
-                dnam{"mile/t"}\r
-                one{"{0} eng mil/t"}\r
-                other{"{0} eng mil/t"}\r
-            }\r
-        }\r
-        temperature{\r
-            celsius{\r
-                dnam{"°C"}\r
-                one{"{0} °C"}\r
-                other{"{0} °C"}\r
-            }\r
-            fahrenheit{\r
-                one{"{0}°F"}\r
-                other{"{0}°F"}\r
-            }\r
-            kelvin{\r
-                one{"{0}K"}\r
-                other{"{0}K"}\r
-            }\r
-        }\r
-        volume{\r
-            cubic-kilometer{\r
-                one{"{0}km³"}\r
-                other{"{0}km³"}\r
-            }\r
-            cubic-mile{\r
-                one{"{0} eng mil³"}\r
-                other{"{0} eng mil³"}\r
-            }\r
-            liter{\r
-                dnam{"l"}\r
-                one{"{0}l"}\r
-                other{"{0}l"}\r
-            }\r
-        }\r
-    }\r
-    unitsShort{\r
-        acceleration{\r
-            g-force{\r
-                dnam{"g-kraft"}\r
-                one{"{0} G"}\r
-                other{"{0} G"}\r
-            }\r
-            meter-per-square-second{\r
-                dnam{"meter/s²"}\r
-                one{"{0} m/s²"}\r
-                other{"{0} m/s²"}\r
-            }\r
-        }\r
-        angle{\r
-            arc-minute{\r
-                dnam{"bueminutter"}\r
-                one{"{0}′"}\r
-                other{"{0}′"}\r
-            }\r
-            arc-second{\r
-                dnam{"buesek"}\r
-                one{"{0}″"}\r
-                other{"{0}″"}\r
-            }\r
-            degree{\r
-                dnam{"grader"}\r
-                one{"{0}°"}\r
-                other{"{0}°"}\r
-            }\r
-            radian{\r
-                dnam{"radianer"}\r
-                one{"{0} rad"}\r
-                other{"{0} rad"}\r
-            }\r
-            revolution{\r
-                dnam{"omdr."}\r
-                one{"{0} omdr."}\r
-                other{"{0} omdr."}\r
-            }\r
-        }\r
-        area{\r
-            acre{\r
-                dnam{"acre"}\r
-                one{"{0} ac"}\r
-                other{"{0} ac"}\r
-            }\r
-            hectare{\r
-                dnam{"hektar"}\r
-                one{"{0} ha"}\r
-                other{"{0} ha"}\r
-            }\r
-            square-centimeter{\r
-                dnam{"cm²"}\r
-                one{"{0} cm²"}\r
-                other{"{0} cm²"}\r
-                per{"{0}/cm²"}\r
-            }\r
-            square-foot{\r
-                dnam{"kvadratfot"}\r
-                one{"{0} fot²"}\r
-                other{"{0} fot²"}\r
-            }\r
-            square-inch{\r
-                dnam{"tommer²"}\r
-                one{"{0} tomme²"}\r
-                other{"{0} tommer²"}\r
-                per{"{0}/tommer²"}\r
-            }\r
-            square-kilometer{\r
-                dnam{"km²"}\r
-                one{"{0} km²"}\r
-                other{"{0} km²"}\r
-                per{"{0}/km²"}\r
-            }\r
-            square-meter{\r
-                dnam{"m²"}\r
-                one{"{0} m²"}\r
-                other{"{0} m²"}\r
-                per{"{0}/m²"}\r
-            }\r
-            square-mile{\r
-                dnam{"miles²"}\r
-                one{"{0} mile²"}\r
-                other{"{0} miles²"}\r
-                per{"{0}/mile²"}\r
-            }\r
-            square-yard{\r
-                dnam{"yd²"}\r
-                one{"{0} yd²"}\r
-                other{"{0} yd²"}\r
-            }\r
-        }\r
-        compound{\r
-            per{"{0}/{1}"}\r
-        }\r
-        concentr{\r
-            karat{\r
-                dnam{"karat"}\r
-                one{"{0} kt"}\r
-                other{"{0} kt"}\r
-            }\r
-            milligram-per-deciliter{\r
-                dnam{"mg/dl"}\r
-                one{"{0} mg/dl"}\r
-                other{"{0} mg/dl"}\r
-            }\r
-            millimole-per-liter{\r
-                dnam{"mmol/liter"}\r
-                one{"{0} mmol/l"}\r
-                other{"{0} mmol/l"}\r
-            }\r
-            percent{\r
-                dnam{"prosent"}\r
-                one{"{0} %"}\r
-                other{"{0} %"}\r
-            }\r
-            permille{\r
-                dnam{"promille"}\r
-                one{"{0} ‰"}\r
-                other{"{0} ‰"}\r
-            }\r
-            permillion{\r
-                dnam{"ppm"}\r
-                one{"{0} ppm"}\r
-                other{"{0} ppm"}\r
-            }\r
-            permyriad{\r
-                dnam{"promyriade"}\r
-                one{"{0} ‱"}\r
-                other{"{0} ‱"}\r
-            }\r
-        }\r
-        consumption{\r
-            liter-per-100-kilometer{\r
-                dnam{"l/100 km"}\r
-                one{"{0} l/100 km"}\r
-                other{"{0} l/100 km"}\r
-            }\r
-            liter-per-kilometer{\r
-                dnam{"liter/km"}\r
-                one{"{0} l/km"}\r
-                other{"{0} l/km"}\r
-            }\r
-            mile-per-gallon{\r
-                dnam{"miles/gal"}\r
-                one{"{0} mpg"}\r
-                other{"{0} mpg"}\r
-            }\r
-            mile-per-gallon-imperial{\r
-                dnam{"miles/brit. gal"}\r
-                one{"{0} mpg brit."}\r
-                other{"{0} mpg brit."}\r
-            }\r
-        }\r
-        coordinate{\r
-            dnam{"retning"}\r
-            east{"{0} Ø"}\r
-            north{"{0} N"}\r
-            south{"{0} S"}\r
-            west{"{0} V"}\r
-        }\r
-        digital{\r
-            bit{\r
-                dnam{"bit"}\r
-                one{"{0} bit"}\r
-                other{"{0} bit"}\r
-            }\r
-            byte{\r
-                dnam{"byte"}\r
-                one{"{0} B"}\r
-                other{"{0} B"}\r
-            }\r
-            gigabit{\r
-                dnam{"Gbit"}\r
-                one{"{0} Gb"}\r
-                other{"{0} Gb"}\r
-            }\r
-            gigabyte{\r
-                dnam{"GB"}\r
-                one{"{0} GB"}\r
-                other{"{0} GB"}\r
-            }\r
-            kilobit{\r
-                dnam{"kbit"}\r
-                one{"{0} kb"}\r
-                other{"{0} kb"}\r
-            }\r
-            kilobyte{\r
-                dnam{"kB"}\r
-                one{"{0} kB"}\r
-                other{"{0} kB"}\r
-            }\r
-            megabit{\r
-                dnam{"Mbit"}\r
-                one{"{0} Mb"}\r
-                other{"{0} Mb"}\r
-            }\r
-            megabyte{\r
-                dnam{"MB"}\r
-                one{"{0} MB"}\r
-                other{"{0} MB"}\r
-            }\r
-            petabyte{\r
-                dnam{"PB"}\r
-                one{"{0} PB"}\r
-                other{"{0} PB"}\r
-            }\r
-            terabit{\r
-                dnam{"Tbit"}\r
-                one{"{0} Tb"}\r
-                other{"{0} Tb"}\r
-            }\r
-            terabyte{\r
-                dnam{"TB"}\r
-                one{"{0} TB"}\r
-                other{"{0} TB"}\r
-            }\r
-        }\r
-        duration{\r
-            century{\r
-                dnam{"årh."}\r
-                one{"{0} årh."}\r
-                other{"{0} årh."}\r
-            }\r
-            day{\r
-                dnam{"døgn"}\r
-                one{"{0} d"}\r
-                other{"{0} d"}\r
-                per{"{0}/d"}\r
-            }\r
-            decade{\r
-                dnam{"tiår"}\r
-                one{"{0} tiår"}\r
-                other{"{0} tiår"}\r
-            }\r
-            hour{\r
-                dnam{"timer"}\r
-                one{"{0} t"}\r
-                other{"{0} t"}\r
-                per{"{0}/t"}\r
-            }\r
-            microsecond{\r
-                dnam{"μs"}\r
-                one{"{0} μs"}\r
-                other{"{0} μs"}\r
-            }\r
-            millisecond{\r
-                dnam{"ms"}\r
-                one{"{0} ms"}\r
-                other{"{0} ms"}\r
-            }\r
-            minute{\r
-                dnam{"min"}\r
-                one{"{0} min"}\r
-                other{"{0} min"}\r
-                per{"{0}/min"}\r
-            }\r
-            month{\r
-                dnam{"måneder"}\r
-                one{"{0} md."}\r
-                other{"{0} md."}\r
-                per{"{0}/md."}\r
-            }\r
-            nanosecond{\r
-                dnam{"ns"}\r
-                one{"{0} ns"}\r
-                other{"{0} ns"}\r
-            }\r
-            second{\r
-                dnam{"sek"}\r
-                one{"{0} sek"}\r
-                other{"{0} sek"}\r
-                per{"{0}/s"}\r
-            }\r
-            week{\r
-                dnam{"uker"}\r
-                one{"{0} u"}\r
-                other{"{0} u"}\r
-                per{"{0}/u"}\r
-            }\r
-            year{\r
-                dnam{"år"}\r
-                one{"{0} år"}\r
-                other{"{0} år"}\r
-                per{"{0}/år"}\r
-            }\r
-        }\r
-        electric{\r
-            ampere{\r
-                dnam{"ampere"}\r
-                one{"{0} A"}\r
-                other{"{0} A"}\r
-            }\r
-            milliampere{\r
-                dnam{"milliampere"}\r
-                one{"{0} mA"}\r
-                other{"{0} mA"}\r
-            }\r
-            ohm{\r
-                dnam{"ohm"}\r
-                one{"{0} Ω"}\r
-                other{"{0} Ω"}\r
-            }\r
-            volt{\r
-                dnam{"volt"}\r
-                one{"{0} V"}\r
-                other{"{0} V"}\r
-            }\r
-        }\r
-        energy{\r
-            calorie{\r
-                dnam{"cal"}\r
-                one{"{0} cal"}\r
-                other{"{0} cal"}\r
-            }\r
-            electronvolt{\r
-                dnam{"elektronvolt"}\r
-                one{"{0} eV"}\r
-                other{"{0} eV"}\r
-            }\r
-            foodcalorie{\r
-                dnam{"cal"}\r
-                one{"{0} cal"}\r
-                other{"{0} cal"}\r
-            }\r
-            joule{\r
-                dnam{"joule"}\r
-                one{"{0} J"}\r
-                other{"{0} J"}\r
-            }\r
-            kilocalorie{\r
-                dnam{"kcal"}\r
-                one{"{0} kcal"}\r
-                other{"{0} kcal"}\r
-            }\r
-            kilojoule{\r
-                dnam{"kilojoule"}\r
-                one{"{0} kJ"}\r
-                other{"{0} kJ"}\r
-            }\r
-            kilowatt-hour{\r
-                dnam{"kWh"}\r
-                one{"{0} kWh"}\r
-                other{"{0} kWh"}\r
-            }\r
-            therm-us{\r
-                dnam{"therm"}\r
-                one{"{0} therm"}\r
-                other{"{0} therm"}\r
-            }\r
-        }\r
-        force{\r
-            newton{\r
-                dnam{"newton"}\r
-            }\r
-            pound-force{\r
-                dnam{"poundforce"}\r
-                one{"{0} lbf"}\r
-                other{"{0} lbf"}\r
-            }\r
-        }\r
-        frequency{\r
-            gigahertz{\r
-                dnam{"GHz"}\r
-                one{"{0} GHz"}\r
-                other{"{0} GHz"}\r
-            }\r
-            hertz{\r
-                dnam{"Hz"}\r
-                one{"{0} Hz"}\r
-                other{"{0} Hz"}\r
-            }\r
-            kilohertz{\r
-                dnam{"kHz"}\r
-                one{"{0} kHz"}\r
-                other{"{0} kHz"}\r
-            }\r
-            megahertz{\r
-                dnam{"MHz"}\r
-                one{"{0} MHz"}\r
-                other{"{0} MHz"}\r
-            }\r
-        }\r
-        graphics{\r
-            dot{\r
-                dnam{"pkt"}\r
-                one{"{0} pkt"}\r
-                other{"{0} pkt"}\r
-            }\r
-            dot-per-centimeter{\r
-                dnam{"dpcm"}\r
-            }\r
-            em{\r
-                dnam{"gefirt"}\r
-                one{"{0} gefirt"}\r
-                other{"{0} gefirt"}\r
-            }\r
-            megapixel{\r
-                dnam{"megapiksler"}\r
-                one{"{0} MP"}\r
-                other{"{0} MP"}\r
-            }\r
-            pixel{\r
-                dnam{"piksler"}\r
-                one{"{0} px"}\r
-                other{"{0} px"}\r
-            }\r
-            pixel-per-centimeter{\r
-                one{"{0} ppcm"}\r
-                other{"{0} ppcm"}\r
-            }\r
-            pixel-per-inch{\r
-                dnam{"ppi"}\r
-                one{"{0} ppi"}\r
-                other{"{0} ppi"}\r
-            }\r
-        }\r
-        length{\r
-            astronomical-unit{\r
-                dnam{"AU"}\r
-                one{"{0} AU"}\r
-                other{"{0} AU"}\r
-            }\r
-            centimeter{\r
-                dnam{"cm"}\r
-                one{"{0} cm"}\r
-                other{"{0} cm"}\r
-                per{"{0}/cm"}\r
-            }\r
-            decimeter{\r
-                dnam{"dm"}\r
-                one{"{0} dm"}\r
-                other{"{0} dm"}\r
-            }\r
-            fathom{\r
-                dnam{"favner"}\r
-                one{"{0} fm"}\r
-                other{"{0} fm"}\r
-            }\r
-            foot{\r
-                dnam{"fot"}\r
-                one{"{0} fot"}\r
-                other{"{0} fot"}\r
-                per{"{0}/fot"}\r
-            }\r
-            furlong{\r
-                dnam{"furlong"}\r
-                one{"{0} fur"}\r
-                other{"{0} fur"}\r
-            }\r
-            inch{\r
-                dnam{"tommer"}\r
-                one{"{0} tomme"}\r
-                other{"{0} tommer"}\r
-                per{"{0}/tomme"}\r
-            }\r
-            kilometer{\r
-                dnam{"km"}\r
-                one{"{0} km"}\r
-                other{"{0} km"}\r
-                per{"{0}/km"}\r
-            }\r
-            light-year{\r
-                dnam{"lysår"}\r
-                one{"{0} ly"}\r
-                other{"{0} ly"}\r
-            }\r
-            meter{\r
-                dnam{"meter"}\r
-                one{"{0} m"}\r
-                other{"{0} m"}\r
-                per{"{0}/m"}\r
-            }\r
-            micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
-            }\r
-            mile{\r
-                dnam{"miles"}\r
-                one{"{0} mile"}\r
-                other{"{0} miles"}\r
-            }\r
-            mile-scandinavian{\r
-                dnam{"mil"}\r
-                one{"{0} mil"}\r
-                other{"{0} mil"}\r
-            }\r
-            millimeter{\r
-                dnam{"mm"}\r
-                one{"{0} mm"}\r
-                other{"{0} mm"}\r
-            }\r
-            nanometer{\r
-                dnam{"nm"}\r
-                one{"{0} nm"}\r
-                other{"{0} nm"}\r
-            }\r
-            nautical-mile{\r
-                dnam{"nmi"}\r
-                one{"{0} nmi"}\r
-                other{"{0} nmi"}\r
-            }\r
-            parsec{\r
-                dnam{"parsec"}\r
-                one{"{0} pc"}\r
-                other{"{0} pc"}\r
-            }\r
-            picometer{\r
-                dnam{"pm"}\r
-                one{"{0} pm"}\r
-                other{"{0} pm"}\r
-            }\r
-            point{\r
-                dnam{"punkter"}\r
-                one{"{0} pt"}\r
-                other{"{0} pt"}\r
-            }\r
-            solar-radius{\r
-                dnam{"solradius"}\r
-            }\r
-            yard{\r
-                dnam{"yard"}\r
-                one{"{0} yard"}\r
-                other{"{0} yard"}\r
-            }\r
-        }\r
-        light{\r
-            candela{\r
-                dnam{"cd"}\r
-                one{"{0} cd"}\r
-                other{"{0} cd"}\r
-            }\r
-            lumen{\r
-                dnam{"lm"}\r
-                one{"{0} lm"}\r
-                other{"{0} lm"}\r
-            }\r
-            lux{\r
-                dnam{"lux"}\r
-                one{"{0} lx"}\r
-                other{"{0} lx"}\r
-            }\r
-            solar-luminosity{\r
-                dnam{"solluminositet"}\r
-            }\r
-        }\r
-        mass{\r
-            carat{\r
-                dnam{"karat"}\r
-                one{"{0} c"}\r
-                other{"{0} c"}\r
-            }\r
-            dalton{\r
-                dnam{"dalton"}\r
-                one{"{0} Da"}\r
-                other{"{0} Da"}\r
-            }\r
-            earth-mass{\r
-                dnam{"jordmasser"}\r
-                one{"{0} M⊕"}\r
-                other{"{0} M⊕"}\r
-            }\r
-            gram{\r
-                dnam{"gram"}\r
-                one{"{0} g"}\r
-                other{"{0} g"}\r
-                per{"{0}/g"}\r
-            }\r
-            kilogram{\r
-                dnam{"kg"}\r
-                one{"{0} kg"}\r
-                other{"{0} kg"}\r
-                per{"{0}/kg"}\r
-            }\r
-            metric-ton{\r
-                dnam{"tonn"}\r
-                one{"{0} tonn"}\r
-                other{"{0} tonn"}\r
-            }\r
-            microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
-            }\r
-            milligram{\r
-                dnam{"mg"}\r
-                one{"{0} mg"}\r
-                other{"{0} mg"}\r
-            }\r
-            ounce{\r
-                dnam{"unser"}\r
-                one{"{0} unse"}\r
-                other{"{0} unser"}\r
-                per{"{0}/unse"}\r
-            }\r
-            ounce-troy{\r
-                dnam{"oz tr"}\r
-                one{"{0} oz tr"}\r
-                other{"{0} oz tr"}\r
-            }\r
-            pound{\r
-                dnam{"pund"}\r
-                one{"{0} pund"}\r
-                other{"{0} pund"}\r
-                per{"{0}/pund"}\r
-            }\r
-            solar-mass{\r
-                dnam{"solmasser"}\r
-                one{"{0} M☉"}\r
-                other{"{0} M☉"}\r
-            }\r
-            stone{\r
-                dnam{"stone"}\r
-            }\r
-            ton{\r
-                dnam{"am. tonn"}\r
-                one{"{0} am. tonn"}\r
-                other{"{0} am. tonn"}\r
-            }\r
-        }\r
-        power{\r
-            gigawatt{\r
-                dnam{"GW"}\r
-                one{"{0} GW"}\r
-                other{"{0} GW"}\r
-            }\r
-            horsepower{\r
-                dnam{"hk"}\r
-                one{"{0} hk"}\r
-                other{"{0} hk"}\r
-            }\r
-            kilowatt{\r
-                dnam{"kW"}\r
-                one{"{0} kW"}\r
-                other{"{0} kW"}\r
-            }\r
-            megawatt{\r
-                dnam{"MW"}\r
-                one{"{0} MW"}\r
-                other{"{0} MW"}\r
-            }\r
-            milliwatt{\r
-                dnam{"mW"}\r
-                one{"{0} mW"}\r
-                other{"{0} mW"}\r
-            }\r
-            watt{\r
-                dnam{"watt"}\r
-                one{"{0} W"}\r
-                other{"{0} W"}\r
-            }\r
-        }\r
-        pressure{\r
-            atmosphere{\r
-                dnam{"atm"}\r
-                one{"{0} atm"}\r
-                other{"{0} atm"}\r
-            }\r
-            bar{\r
-                one{"{0} bar"}\r
-                other{"{0} bar"}\r
-            }\r
-            hectopascal{\r
-                dnam{"hPa"}\r
-                one{"{0} hPa"}\r
-                other{"{0} hPa"}\r
-            }\r
-            inch-ofhg{\r
-                dnam{"inHg"}\r
-                one{"{0} inHg"}\r
-                other{"{0} inHg"}\r
-            }\r
-            millibar{\r
-                dnam{"mbar"}\r
-                one{"{0} mbar"}\r
-                other{"{0} mbar"}\r
-            }\r
-            millimeter-ofhg{\r
-                dnam{"mmHg"}\r
-                one{"{0} mmHg"}\r
-                other{"{0} mmHg"}\r
-            }\r
-            pascal{\r
-                one{"{0} Pa"}\r
-                other{"{0} Pa"}\r
-            }\r
-            pound-force-per-square-inch{\r
-                dnam{"psi"}\r
-                one{"{0} psi"}\r
-                other{"{0} psi"}\r
-            }\r
-        }\r
-        speed{\r
-            kilometer-per-hour{\r
-                dnam{"km/time"}\r
-                one{"{0} km/t"}\r
-                other{"{0} km/t"}\r
-            }\r
-            knot{\r
-                dnam{"kn"}\r
-                one{"{0} kn"}\r
-                other{"{0} kn"}\r
-            }\r
-            meter-per-second{\r
-                dnam{"meter/s"}\r
-                one{"{0} m/s"}\r
-                other{"{0} m/s"}\r
-            }\r
-            mile-per-hour{\r
-                dnam{"miles/t"}\r
-                one{"{0} mile/t"}\r
-                other{"{0} miles/t"}\r
-            }\r
-        }\r
-        temperature{\r
-            celsius{\r
-                dnam{"°C"}\r
-                one{"{0} °C"}\r
-                other{"{0} °C"}\r
-            }\r
-            fahrenheit{\r
-                dnam{"°F"}\r
-                one{"{0} °F"}\r
-                other{"{0} °F"}\r
-            }\r
-            generic{\r
-                dnam{"°"}\r
-                one{"{0}°"}\r
-                other{"{0}°"}\r
-            }\r
-            kelvin{\r
-                dnam{"K"}\r
-                one{"{0} K"}\r
-                other{"{0} K"}\r
-            }\r
-        }\r
-        torque{\r
-            newton-meter{\r
-                dnam{"Nm"}\r
-                one{"{0} Nm"}\r
-                other{"{0} Nm"}\r
-            }\r
-        }\r
-        volume{\r
-            acre-foot{\r
-                dnam{"acre-fot"}\r
-                one{"{0} ac-fot"}\r
-                other{"{0} ac-fot"}\r
-            }\r
-            barrel{\r
-                dnam{"fat"}\r
-                one{"{0} fat"}\r
-                other{"{0} fat"}\r
-            }\r
-            bushel{\r
-                dnam{"bushel"}\r
-                one{"{0} bu"}\r
-                other{"{0} bu"}\r
-            }\r
-            centiliter{\r
-                dnam{"cl"}\r
-                one{"{0} cl"}\r
-                other{"{0} cl"}\r
-            }\r
-            cubic-centimeter{\r
-                dnam{"cm³"}\r
-                one{"{0} cm³"}\r
-                other{"{0} cm³"}\r
-                per{"{0}/cm³"}\r
-            }\r
-            cubic-foot{\r
-                dnam{"fot³"}\r
-                one{"{0} fot³"}\r
-                other{"{0} fot³"}\r
-            }\r
-            cubic-inch{\r
-                dnam{"tommer³"}\r
-                one{"{0} tomme³"}\r
-                other{"{0} tommer³"}\r
-            }\r
-            cubic-kilometer{\r
-                dnam{"km³"}\r
-                one{"{0} km³"}\r
-                other{"{0} km³"}\r
-            }\r
-            cubic-meter{\r
-                dnam{"m³"}\r
-                one{"{0} m³"}\r
-                other{"{0} m³"}\r
-                per{"{0}/m³"}\r
-            }\r
-            cubic-mile{\r
-                dnam{"miles³"}\r
-                one{"{0} mile³"}\r
-                other{"{0} miles³"}\r
-            }\r
-            cubic-yard{\r
-                dnam{"yard³"}\r
-                one{"{0} yard³"}\r
-                other{"{0} yard³"}\r
-            }\r
-            cup{\r
-                dnam{"kopper"}\r
-                one{"{0} k"}\r
-                other{"{0} k"}\r
-            }\r
-            cup-metric{\r
-                dnam{"m. kopper"}\r
-                one{"{0} m. kopp"}\r
-                other{"{0} m. kopper"}\r
-            }\r
-            deciliter{\r
-                dnam{"dl"}\r
-                one{"{0} dl"}\r
-                other{"{0} dl"}\r
-            }\r
-            dessert-spoon{\r
-                dnam{"bs"}\r
-                one{"{0} bs"}\r
-                other{"{0} bs"}\r
-            }\r
-            dessert-spoon-imperial{\r
-                dnam{"imp. bs"}\r
-                one{"{0} imp. bs"}\r
-                other{"{0} imp. bs"}\r
-            }\r
-            dram{\r
-                dnam{"dram fluid"}\r
-                one{"{0} dram fl"}\r
-                other{"{0} dram fl"}\r
-            }\r
-            drop{\r
-                dnam{"dråpe"}\r
-                one{"{0} dråpe"}\r
-                other{"{0} dråpe"}\r
-            }\r
-            fluid-ounce{\r
-                dnam{"væskeunse"}\r
-                one{"{0} fl oz"}\r
-                other{"{0} fl oz"}\r
-            }\r
-            fluid-ounce-imperial{\r
-                dnam{"imp. fl oz"}\r
-                one{"{0} imp. fl oz"}\r
-                other{"{0} imp. fl oz"}\r
-            }\r
-            gallon{\r
-                dnam{"gal"}\r
-                one{"{0} gal"}\r
-                other{"{0} gal"}\r
-                per{"{0}/gal"}\r
-            }\r
-            gallon-imperial{\r
-                dnam{"brit. gal"}\r
-                one{"{0} brit. gal"}\r
-                other{"{0} brit. gal"}\r
-                per{"{0}/brit. gal"}\r
-            }\r
-            hectoliter{\r
-                dnam{"hl"}\r
-                one{"{0} hl"}\r
-                other{"{0} hl"}\r
-            }\r
-            jigger{\r
-                dnam{"shot"}\r
-                one{"{0} shot"}\r
-                other{"{0} shot"}\r
-            }\r
-            liter{\r
-                dnam{"liter"}\r
-                one{"{0} l"}\r
-                other{"{0} l"}\r
-                per{"{0}/l"}\r
-            }\r
-            megaliter{\r
-                dnam{"Ml"}\r
-                one{"{0} Ml"}\r
-                other{"{0} Ml"}\r
-            }\r
-            milliliter{\r
-                dnam{"ml"}\r
-                one{"{0} ml"}\r
-                other{"{0} ml"}\r
-            }\r
-            pinch{\r
-                dnam{"klype"}\r
-                one{"{0} klype"}\r
-                other{"{0} klype"}\r
-            }\r
-            pint{\r
-                dnam{"pint"}\r
-                one{"{0} pt"}\r
-                other{"{0} pt"}\r
-            }\r
-            pint-metric{\r
-                dnam{"mpt"}\r
-                one{"{0} mpt"}\r
-                other{"{0} mpt"}\r
-            }\r
-            quart{\r
-                dnam{"qt"}\r
-                one{"{0} qt"}\r
-                other{"{0} qt"}\r
-            }\r
-            quart-imperial{\r
-                dnam{"imp. quart"}\r
-                one{"{0} imp. quart"}\r
-                other{"{0} imp. quart"}\r
-            }\r
-            tablespoon{\r
-                dnam{"ss"}\r
-                one{"{0} ss"}\r
-                other{"{0} ss"}\r
-            }\r
-            teaspoon{\r
-                dnam{"ts"}\r
-                one{"{0} ts"}\r
-                other{"{0} ts"}\r
-            }\r
-        }\r
-    }\r
+    %%Parent{"no"}\r
 }\r
diff --git a/source/data/unit/nb_NO.txt b/source/data/unit/nb_NO.txt
deleted file mode 100644 (file)
index 3307fc3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html\r
-// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
-/**\r
- * generated alias target\r
- */\r
-nb_NO{\r
-    ___{""}\r
-}\r
index fab2d5f..2e7ff75 100644 (file)
@@ -105,7 +105,59 @@ ne{
             }\r
         }\r
         compound{\r
+            1024p1{"किबी{0}"}\r
+            1024p2{"मेबी{0}"}\r
+            1024p3{"जिबि{0}"}\r
+            1024p4{"टेबि{0}"}\r
+            1024p5{"पेबि{0}"}\r
+            1024p6{"एक्‍सबि{0}"}\r
+            1024p7{"जेबि{0}"}\r
+            1024p8{"योबे{0}"}\r
+            10p-1{"डेसि{0}"}\r
+            10p-12{"पिको{0}"}\r
+            10p-15{"फेमटो{0}"}\r
+            10p-18{"अटो{0}"}\r
+            10p-2{"सेन्टी{0}"}\r
+            10p-21{"जेप्टो{0}"}\r
+            10p-24{"योक्टो{0}"}\r
+            10p-3{"मिली{0}"}\r
+            10p-6{"माइक्रो{0}"}\r
+            10p-9{"नानो{0}"}\r
+            10p1{"डेका{0}"}\r
+            10p12{"टेरा{0}"}\r
+            10p15{"पेटा{0}"}\r
+            10p18{"एक्सा{0}"}\r
+            10p2{"हेक्टो{0}"}\r
+            10p21{"जेटा{0}"}\r
+            10p24{"योटा{0}"}\r
+            10p3{"किलो{0}"}\r
+            10p6{"मेगा{0}"}\r
+            10p9{"गिगा{0}"}\r
             per{"{0}प्रति{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"वर्ग {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"वर्ग {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"घन {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"घन {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ ne{
                 one{"{0}कराट"}\r
                 other{"{0}कराट"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1033,7 +1085,47 @@ ne{
             }\r
         }\r
         compound{\r
+            1024p1{"केआइ{0}"}\r
+            1024p2{"एमआइ{0}"}\r
+            1024p3{"जीआइ{0}"}\r
+            1024p4{"टिआइ{0}"}\r
+            1024p5{"पिआइ{0}"}\r
+            1024p6{"इआइ{0}"}\r
+            1024p7{"जेडआइ{0}"}\r
+            1024p8{"वाइआइ{0}"}\r
+            10p-1{"डेसि{0}"}\r
+            10p-12{"पिको{0}"}\r
+            10p-15{"फेमटो{0}"}\r
+            10p-18{"अटो{0}"}\r
+            10p-2{"सेन्टी{0}"}\r
+            10p-21{"जेप्टो{0}"}\r
+            10p-24{"योक्टो{0}"}\r
+            10p-3{"मिली{0}"}\r
+            10p-6{"माइक्रो{0}"}\r
+            10p-9{"नानो{0}"}\r
+            10p1{"डेका{0}"}\r
+            10p12{"टेरा{0}"}\r
+            10p15{"पेटा{0}"}\r
+            10p18{"एक्सा{0}"}\r
+            10p2{"हेक्टो{0}"}\r
+            10p21{"जेटा{0}"}\r
+            10p24{"योटा{0}"}\r
+            10p3{"किलो{0}"}\r
+            10p6{"मेगा{0}"}\r
+            10p9{"गिगा{0}"}\r
             per{"{0}प्रति {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1334,7 +1426,47 @@ ne{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"डे.{0}"}\r
+            10p-12{"पि.{0}"}\r
+            10p-15{"फे.{0}"}\r
+            10p-18{"अ.{0}"}\r
+            10p-2{"से.{0}"}\r
+            10p-21{"जे.{0}"}\r
+            10p-24{"यो.{0}"}\r
+            10p-3{"मि.{0}"}\r
+            10p-6{"मा.{0}"}\r
+            10p-9{"ना.{0}"}\r
+            10p1{"डेका{0}"}\r
+            10p12{"टे.{0}"}\r
+            10p15{"पे.{0}"}\r
+            10p18{"ए.{0}"}\r
+            10p2{"हे.{0}"}\r
+            10p21{"जेटा{0}"}\r
+            10p24{"योटा{0}"}\r
+            10p3{"कि.{0}"}\r
+            10p6{"मे.{0}"}\r
+            10p9{"गि.{0}"}\r
             per{"{0}प्रति {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1343,7 +1475,7 @@ ne{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1643,12 +1775,12 @@ ne{
             }\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                one{"{0} dpcm"}\r
+                one{"{0} ppcm"}\r
                 other{"{0} dpcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                one{"{0} dpi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
             }\r
             em{\r
@@ -1739,9 +1871,9 @@ ne{
                 per{"{0} प्रति मिटर"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"माइल"}\r
@@ -1851,9 +1983,9 @@ ne{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"मिलिग्राम"}\r
index 000881a..a5a75cf 100644 (file)
@@ -11,11 +11,13 @@ nl{
         acceleration{\r
             g-force{\r
                 dnam{"G-krachten"}\r
+                gender{"common"}\r
                 one{"{0} G-kracht"}\r
                 other{"{0} G-krachten"}\r
             }\r
             meter-per-square-second{\r
                 dnam{"meter per seconde kwadraat"}\r
+                gender{"common"}\r
                 one{"{0} meter per seconde kwadraat"}\r
                 other{"{0} meter per seconde kwadraat"}\r
             }\r
@@ -50,22 +52,26 @@ nl{
         area{\r
             acre{\r
                 dnam{"acre"}\r
+                gender{"common"}\r
                 one{"{0} acre"}\r
                 other{"{0} acres"}\r
             }\r
             hectare{\r
                 dnam{"hectare"}\r
+                gender{"common"}\r
                 one{"{0} hectare"}\r
                 other{"{0} hectare"}\r
             }\r
             square-centimeter{\r
                 dnam{"vierkante centimeter"}\r
+                gender{"common"}\r
                 one{"{0} vierkante centimeter"}\r
                 other{"{0} vierkante centimeter"}\r
                 per{"{0} per vierkante centimeter"}\r
             }\r
             square-foot{\r
                 dnam{"vierkante voet"}\r
+                gender{"common"}\r
                 one{"{0} vierkante voet"}\r
                 other{"{0} vierkante voet"}\r
             }\r
@@ -77,6 +83,7 @@ nl{
             }\r
             square-kilometer{\r
                 dnam{"vierkante kilometer"}\r
+                gender{"common"}\r
                 one{"{0} vierkante kilometer"}\r
                 other{"{0} vierkante kilometer"}\r
                 per{"{0} per vierkante kilometer"}\r
@@ -89,6 +96,7 @@ nl{
             }\r
             square-mile{\r
                 dnam{"vierkante mijl"}\r
+                gender{"common"}\r
                 one{"{0} vierkante mijl"}\r
                 other{"{0} vierkante mijl"}\r
                 per{"{0} per vierkante mijl"}\r
@@ -100,7 +108,63 @@ nl{
             }\r
         }\r
         compound{\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deca{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} per {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"vierkante {0}"}\r
+                    }\r
+                    common{\r
+                        _{"vierkante {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"vierkante {0}"}\r
+                    }\r
+                    common{\r
+                        _{"vierkante {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kubieke {0}"}\r
+                    }\r
+                    common{\r
+                        _{"kubieke {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubieke {0}"}\r
+                    }\r
+                    common{\r
+                        _{"kubieke {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}{1}"}\r
         }\r
         concentr{\r
@@ -109,7 +173,7 @@ nl{
                 one{"{0} karaat"}\r
                 other{"{0} karaat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligram per deciliter"}\r
                 one{"{0} milligram per deciliter"}\r
                 other{"{0} milligram per deciliter"}\r
@@ -121,6 +185,7 @@ nl{
             }\r
             percent{\r
                 dnam{"procent"}\r
+                gender{"common"}\r
                 one{"{0} procent"}\r
                 other{"{0} procent"}\r
             }\r
@@ -143,6 +208,7 @@ nl{
         consumption{\r
             liter-per-100-kilometer{\r
                 dnam{"liter per 100 kilometer"}\r
+                gender{"common"}\r
                 one{"{0} liter per 100 kilometer"}\r
                 other{"{0} liter per 100 kilometer"}\r
             }\r
@@ -153,11 +219,13 @@ nl{
             }\r
             mile-per-gallon{\r
                 dnam{"mijl per gallon"}\r
+                gender{"common"}\r
                 one{"{0} mijl per gallon"}\r
                 other{"{0} mijl per gallon"}\r
             }\r
             mile-per-gallon-imperial{\r
                 dnam{"mijl per imp. gallon"}\r
+                gender{"common"}\r
                 one{"{0} mijl per imp. gallon"}\r
                 other{"{0} mijl per imp. gallon"}\r
             }\r
@@ -234,6 +302,7 @@ nl{
             }\r
             day{\r
                 dnam{"dagen"}\r
+                gender{"common"}\r
                 one{"{0} dag"}\r
                 other{"{0} dagen"}\r
                 per{"{0} per dag"}\r
@@ -245,6 +314,7 @@ nl{
             }\r
             hour{\r
                 dnam{"uur"}\r
+                gender{"neuter"}\r
                 one{"{0} uur"}\r
                 other{"{0} uur"}\r
                 per{"{0} per uur"}\r
@@ -261,12 +331,14 @@ nl{
             }\r
             minute{\r
                 dnam{"minuten"}\r
+                gender{"common"}\r
                 one{"{0} minuut"}\r
                 other{"{0} minuten"}\r
                 per{"{0} per minuut"}\r
             }\r
             month{\r
                 dnam{"maanden"}\r
+                gender{"common"}\r
                 one{"{0} maand"}\r
                 other{"{0} maanden"}\r
                 per{"{0} per maand"}\r
@@ -278,18 +350,21 @@ nl{
             }\r
             second{\r
                 dnam{"seconden"}\r
+                gender{"common"}\r
                 one{"{0} seconde"}\r
                 other{"{0} seconden"}\r
                 per{"{0} per seconde"}\r
             }\r
             week{\r
                 dnam{"weken"}\r
+                gender{"common"}\r
                 one{"{0} week"}\r
                 other{"{0} weken"}\r
                 per{"{0} per week"}\r
             }\r
             year{\r
                 dnam{"jaar"}\r
+                gender{"neuter"}\r
                 one{"{0} jaar"}\r
                 other{"{0} jaar"}\r
                 per{"{0} per jaar"}\r
@@ -335,6 +410,7 @@ nl{
             }\r
             foodcalorie{\r
                 dnam{"kilocalorie"}\r
+                gender{"common"}\r
                 one{"{0} kilocalorie"}\r
                 other{"{0} kilocalorieën"}\r
             }\r
@@ -345,6 +421,7 @@ nl{
             }\r
             kilocalorie{\r
                 dnam{"kilocalorie"}\r
+                gender{"common"}\r
                 one{"{0} kilocalorie"}\r
                 other{"{0} kilocalorieën"}\r
             }\r
@@ -448,6 +525,7 @@ nl{
             }\r
             centimeter{\r
                 dnam{"centimeter"}\r
+                gender{"common"}\r
                 one{"{0} centimeter"}\r
                 other{"{0} centimeter"}\r
                 per{"{0} per centimeter"}\r
@@ -464,6 +542,7 @@ nl{
             }\r
             foot{\r
                 dnam{"voet"}\r
+                gender{"common"}\r
                 one{"{0} voet"}\r
                 other{"{0} voet"}\r
                 per{"{0} per voet"}\r
@@ -475,12 +554,14 @@ nl{
             }\r
             inch{\r
                 dnam{"inches"}\r
+                gender{"common"}\r
                 one{"{0} inch"}\r
                 other{"{0} inches"}\r
                 per{"{0} per inch"}\r
             }\r
             kilometer{\r
                 dnam{"kilometer"}\r
+                gender{"common"}\r
                 one{"{0} kilometer"}\r
                 other{"{0} kilometer"}\r
                 per{"{0} per kilometer"}\r
@@ -492,6 +573,7 @@ nl{
             }\r
             meter{\r
                 dnam{"meter"}\r
+                gender{"common"}\r
                 one{"{0} meter"}\r
                 other{"{0} meter"}\r
                 per{"{0} per meter"}\r
@@ -503,6 +585,7 @@ nl{
             }\r
             mile{\r
                 dnam{"mijl"}\r
+                gender{"common"}\r
                 one{"{0} mijl"}\r
                 other{"{0} mijl"}\r
             }\r
@@ -513,6 +596,7 @@ nl{
             }\r
             millimeter{\r
                 dnam{"millimeter"}\r
+                gender{"common"}\r
                 one{"{0} millimeter"}\r
                 other{"{0} millimeter"}\r
             }\r
@@ -528,11 +612,13 @@ nl{
             }\r
             parsec{\r
                 dnam{"parsec"}\r
+                gender{"common"}\r
                 one{"{0} parsec"}\r
                 other{"{0} parsecs"}\r
             }\r
             picometer{\r
                 dnam{"picometer"}\r
+                gender{"common"}\r
                 one{"{0} picometer"}\r
                 other{"{0} picometer"}\r
             }\r
@@ -543,11 +629,13 @@ nl{
             }\r
             solar-radius{\r
                 dnam{"solar radii"}\r
+                gender{"common"}\r
                 one{"{0} solar radius"}\r
                 other{"{0} solar radii"}\r
             }\r
             yard{\r
                 dnam{"yards"}\r
+                gender{"common"}\r
                 one{"{0} yard"}\r
                 other{"{0} yards"}\r
             }\r
@@ -560,6 +648,7 @@ nl{
             }\r
             solar-luminosity{\r
                 dnam{"solar luminosity"}\r
+                gender{"common"}\r
                 one{"{0} solar luminosity"}\r
                 other{"{0} solar luminosity"}\r
             }\r
@@ -572,27 +661,32 @@ nl{
             }\r
             dalton{\r
                 dnam{"dalton"}\r
+                gender{"common"}\r
                 one{"{0} dalton"}\r
                 other{"{0} dalton"}\r
             }\r
             earth-mass{\r
                 dnam{"aardmassa"}\r
+                gender{"common"}\r
                 one{"{0} aardmassa"}\r
                 other{"{0} aardmassa"}\r
             }\r
             grain{\r
                 dnam{"grein"}\r
+                gender{"common"}\r
                 one{"{0} grein"}\r
                 other{"{0} grein"}\r
             }\r
             gram{\r
                 dnam{"gram"}\r
+                gender{"common"}\r
                 one{"{0} gram"}\r
                 other{"{0} gram"}\r
                 per{"{0} per gram"}\r
             }\r
             kilogram{\r
                 dnam{"kilogram"}\r
+                gender{"common"}\r
                 one{"{0} kilogram"}\r
                 other{"{0} kilogram"}\r
                 per{"{0} per kilogram"}\r
@@ -609,11 +703,13 @@ nl{
             }\r
             milligram{\r
                 dnam{"milligram"}\r
+                gender{"common"}\r
                 one{"{0} milligram"}\r
                 other{"{0} milligram"}\r
             }\r
             ounce{\r
                 dnam{"ounce"}\r
+                gender{"common"}\r
                 one{"{0} ounce"}\r
                 other{"{0} ounce"}\r
                 per{"{0} per ounce"}\r
@@ -625,12 +721,14 @@ nl{
             }\r
             pound{\r
                 dnam{"pound"}\r
+                gender{"common"}\r
                 one{"{0} pound"}\r
                 other{"{0} pound"}\r
                 per{"{0} per pound"}\r
             }\r
             solar-mass{\r
                 dnam{"zonnemassa"}\r
+                gender{"common"}\r
                 one{"{0} zonnemassa"}\r
                 other{"{0} zonnemassa"}\r
             }\r
@@ -700,6 +798,7 @@ nl{
             }\r
             kilopascal{\r
                 dnam{"kilopascal"}\r
+                gender{"common"}\r
                 one{"{0} kilopascal"}\r
                 other{"{0} kilopascal"}\r
             }\r
@@ -732,6 +831,7 @@ nl{
         speed{\r
             kilometer-per-hour{\r
                 dnam{"kilometer per uur"}\r
+                gender{"common"}\r
                 one{"{0} kilometer per uur"}\r
                 other{"{0} kilometer per uur"}\r
             }\r
@@ -742,11 +842,13 @@ nl{
             }\r
             meter-per-second{\r
                 dnam{"meter per seconde"}\r
+                gender{"common"}\r
                 one{"{0} meter per seconde"}\r
                 other{"{0} meter per seconde"}\r
             }\r
             mile-per-hour{\r
                 dnam{"mijl per uur"}\r
+                gender{"common"}\r
                 one{"{0} mijl per uur"}\r
                 other{"{0} mijl per uur"}\r
             }\r
@@ -754,21 +856,25 @@ nl{
         temperature{\r
             celsius{\r
                 dnam{"graden Celsius"}\r
+                gender{"common"}\r
                 one{"{0} graad Celsius"}\r
                 other{"{0} graden Celsius"}\r
             }\r
             fahrenheit{\r
                 dnam{"graden Fahrenheit"}\r
+                gender{"common"}\r
                 one{"{0} graad Fahrenheit"}\r
                 other{"{0} graden Fahrenheit"}\r
             }\r
             generic{\r
                 dnam{"°"}\r
+                gender{"common"}\r
                 one{"{0}°"}\r
                 other{"{0}°"}\r
             }\r
             kelvin{\r
                 dnam{"kelvin"}\r
+                gender{"common"}\r
                 one{"{0} kelvin"}\r
                 other{"{0} kelvin"}\r
             }\r
@@ -803,17 +909,20 @@ nl{
             }\r
             centiliter{\r
                 dnam{"centiliter"}\r
+                gender{"common"}\r
                 one{"{0} centiliter"}\r
                 other{"{0} centiliter"}\r
             }\r
             cubic-centimeter{\r
                 dnam{"kubieke centimeter"}\r
+                gender{"common"}\r
                 one{"{0} kubieke centimeter"}\r
                 other{"{0} kubieke centimeter"}\r
                 per{"{0} per kubieke centimeter"}\r
             }\r
             cubic-foot{\r
                 dnam{"kubieke voet"}\r
+                gender{"common"}\r
                 one{"{0} kubieke voet"}\r
                 other{"{0} kubieke voet"}\r
             }\r
@@ -835,6 +944,7 @@ nl{
             }\r
             cubic-mile{\r
                 dnam{"kubieke mijl"}\r
+                gender{"common"}\r
                 one{"{0} kubieke mijl"}\r
                 other{"{0} kubieke mijl"}\r
             }\r
@@ -845,6 +955,7 @@ nl{
             }\r
             cup{\r
                 dnam{"cup"}\r
+                gender{"common"}\r
                 one{"{0} cup"}\r
                 other{"{0} cup"}\r
             }\r
@@ -855,47 +966,56 @@ nl{
             }\r
             deciliter{\r
                 dnam{"deciliter"}\r
+                gender{"common"}\r
                 one{"{0} deciliter"}\r
                 other{"{0} deciliter"}\r
             }\r
             dessert-spoon{\r
                 dnam{"dessertlepel"}\r
+                gender{"common"}\r
                 one{"{0} dessertlepel"}\r
                 other{"{0} dessertlepels"}\r
             }\r
             dessert-spoon-imperial{\r
                 dnam{"imp. dessertlepel"}\r
+                gender{"common"}\r
                 one{"{0} imp. dessertlepel"}\r
                 other{"{0} imp. dessertlepels"}\r
             }\r
             dram{\r
                 dnam{"drachme"}\r
+                gender{"neuter"}\r
                 one{"{0} drachme"}\r
                 other{"{0} drachme"}\r
             }\r
             drop{\r
                 dnam{"druppel"}\r
+                gender{"common"}\r
                 one{"{0} druppel"}\r
                 other{"{0} druppels"}\r
             }\r
             fluid-ounce{\r
                 dnam{"fluid ounce"}\r
+                gender{"common"}\r
                 one{"{0} fluid ounce"}\r
                 other{"{0} fluid ounce"}\r
             }\r
             fluid-ounce-imperial{\r
                 dnam{"Imp. fluid ounce"}\r
+                gender{"common"}\r
                 one{"{0} Imp. fluid ounce"}\r
                 other{"{0} Imp. fluid ounce"}\r
             }\r
             gallon{\r
                 dnam{"gallon"}\r
+                gender{"common"}\r
                 one{"{0} gallon"}\r
                 other{"{0} gallon"}\r
                 per{"{0} per gallon"}\r
             }\r
             gallon-imperial{\r
                 dnam{"imp. gallon"}\r
+                gender{"common"}\r
                 one{"{0} imp. gallon"}\r
                 other{"{0} imp. gallon"}\r
                 per{"{0} per imp. gallon"}\r
@@ -906,11 +1026,13 @@ nl{
                 other{"{0} hectoliter"}\r
             }\r
             jigger{\r
+                gender{"common"}\r
                 one{"{0} jigger"}\r
                 other{"{0} jiggers"}\r
             }\r
             liter{\r
                 dnam{"liter"}\r
+                gender{"common"}\r
                 one{"{0} liter"}\r
                 other{"{0} liter"}\r
                 per{"{0} per liter"}\r
@@ -922,16 +1044,19 @@ nl{
             }\r
             milliliter{\r
                 dnam{"milliliter"}\r
+                gender{"common"}\r
                 one{"{0} milliliter"}\r
                 other{"{0} milliliter"}\r
             }\r
             pinch{\r
                 dnam{"snufje"}\r
+                gender{"neuter"}\r
                 one{"{0} snufje"}\r
                 other{"{0} snufjes"}\r
             }\r
             pint{\r
                 dnam{"pint"}\r
+                gender{"common"}\r
                 one{"{0} pint"}\r
                 other{"{0} pint"}\r
             }\r
@@ -942,21 +1067,25 @@ nl{
             }\r
             quart{\r
                 dnam{"quart"}\r
+                gender{"common"}\r
                 one{"{0} quart"}\r
                 other{"{0} quart"}\r
             }\r
             quart-imperial{\r
                 dnam{"imp. quart"}\r
+                gender{"common"}\r
                 one{"{0} imp. quart"}\r
                 other{"{0} imp. quarts"}\r
             }\r
             tablespoon{\r
                 dnam{"eetlepel"}\r
+                gender{"common"}\r
                 one{"{0} eetlepel"}\r
                 other{"{0} eetlepels"}\r
             }\r
             teaspoon{\r
                 dnam{"theelepel"}\r
+                gender{"common"}\r
                 one{"{0} theelepel"}\r
                 other{"{0} theelepels"}\r
             }\r
@@ -1064,7 +1193,7 @@ nl{
                 one{"{0} K"}\r
                 other{"{0} K"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -1381,9 +1510,9 @@ nl{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1462,9 +1591,9 @@ nl{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -1846,7 +1975,7 @@ nl{
                 one{"{0} K"}\r
                 other{"{0} K"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -2111,7 +2240,7 @@ nl{
         graphics{\r
             dot{\r
                 one{"{0} dot"}\r
-                other{"{0} dot"}\r
+                other{"{0} px"}\r
             }\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
@@ -2206,9 +2335,9 @@ nl{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -2292,9 +2421,9 @@ nl{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 324e54e..3656639 100644 (file)
@@ -2,20 +2,14 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nn{\r
-    durationUnits{\r
-        hm{"h:mm"}\r
-        hms{"h:mm:ss"}\r
-        ms{"m:ss"}\r
-    }\r
+    %%Parent{"no"}\r
     units{\r
         acceleration{\r
             g-force{\r
-                dnam{"g-kraft"}\r
                 one{"{0} g-kraft"}\r
                 other{"{0} g-krefter"}\r
             }\r
             meter-per-square-second{\r
-                dnam{"meter per sekund²"}\r
                 one{"{0} meter per sekund²"}\r
                 other{"{0} meter per sekund²"}\r
             }\r
@@ -31,11 +25,6 @@ nn{
                 one{"{0} bogesekund"}\r
                 other{"{0} bogesekund"}\r
             }\r
-            degree{\r
-                dnam{"grader"}\r
-                one{"{0} grad"}\r
-                other{"{0} grader"}\r
-            }\r
             radian{\r
                 dnam{"radianar"}\r
                 one{"{0} radian"}\r
@@ -48,183 +37,33 @@ nn{
             }\r
         }\r
         area{\r
-            acre{\r
-                dnam{"acre"}\r
-                one{"{0} acre"}\r
-                other{"{0} acre"}\r
-            }\r
-            hectare{\r
-                dnam{"hektar"}\r
-                one{"{0} hektar"}\r
-                other{"{0} hektar"}\r
-            }\r
-            square-centimeter{\r
-                dnam{"kvadratcentimeter"}\r
-                one{"{0} kvadratcentimeter"}\r
-                other{"{0} kvadratcentimeter"}\r
-                per{"{0} per kvadratcentimeter"}\r
-            }\r
-            square-foot{\r
-                dnam{"kvadratfot"}\r
-                one{"{0} kvadratfot"}\r
-                other{"{0} kvadratfot"}\r
-            }\r
             square-inch{\r
                 dnam{"kvadrattommar"}\r
                 one{"{0} kvadrattomme"}\r
                 other{"{0} kvadrattommar"}\r
-                per{"{0} per kvadrattomme"}\r
-            }\r
-            square-kilometer{\r
-                dnam{"kvadratkilometer"}\r
-                one{"{0} kvadratkilometer"}\r
-                other{"{0} kvadratkilometer"}\r
-                per{"{0} per kvadratkilometer"}\r
-            }\r
-            square-meter{\r
-                dnam{"kvadratmeter"}\r
-                one{"{0} kvadratmeter"}\r
-                other{"{0} kvadratmeter"}\r
-                per{"{0} per kvadratmeter"}\r
             }\r
             square-mile{\r
-                dnam{"engelske kvadratmil"}\r
-                one{"{0} engelsk kvadratmil"}\r
-                other{"{0} engelske kvadratmil"}\r
                 per{"{0} per engelske kvadratmil"}\r
             }\r
-            square-yard{\r
-                dnam{"kvadratyard"}\r
-                one{"{0} kvadratyard"}\r
-                other{"{0} kvadratyard"}\r
-            }\r
         }\r
         compound{\r
-            per{"{0} per {1}"}\r
             times{"{0}{1}"}\r
         }\r
         concentr{\r
-            karat{\r
-                dnam{"karat"}\r
-                one{"{0} karat"}\r
-                other{"{0} karat"}\r
-            }\r
-            milligram-per-deciliter{\r
-                dnam{"milligram per desiliter"}\r
-                one{"{0} milligram per desiliter"}\r
-                other{"{0} milligram per desiliter"}\r
-            }\r
-            millimole-per-liter{\r
-                dnam{"millimol per liter"}\r
-                one{"{0} millimol per liter"}\r
-                other{"{0} millimol per liter"}\r
-            }\r
-            percent{\r
-                dnam{"prosent"}\r
-                one{"{0} prosent"}\r
-                other{"{0} prosent"}\r
-            }\r
-            permille{\r
-                dnam{"promille"}\r
-                one{"{0} promille"}\r
-                other{"{0} promille"}\r
-            }\r
             permillion{\r
                 dnam{"milliondelar"}\r
                 one{"{0} milliondel"}\r
                 other{"{0} milliondelar"}\r
             }\r
-            permyriad{\r
-                dnam{"promyriade"}\r
-                one{"{0} promyriade"}\r
-                other{"{0} promyriade"}\r
-            }\r
         }\r
         consumption{\r
-            liter-per-100-kilometer{\r
-                dnam{"liter per 100 kilometer"}\r
-                one{"{0} liter per 100 kilometer"}\r
-                other{"{0} liter per 100 kilometer"}\r
-            }\r
-            liter-per-kilometer{\r
-                dnam{"liter per kilometer"}\r
-                one{"{0} liter per kilometer"}\r
-                other{"{0} liter per kilometer"}\r
-            }\r
-            mile-per-gallon{\r
-                dnam{"engelske mil per gallon"}\r
-                one{"{0} engelsk mil per gallon"}\r
-                other{"{0} engelske mil per gallon"}\r
-            }\r
             mile-per-gallon-imperial{\r
-                dnam{"engelske mil per britiske gallon"}\r
                 one{"{0} engelsk mil per britiske gallon"}\r
                 other{"{0} engelske mil per britiske gallon"}\r
             }\r
         }\r
         coordinate{\r
-            dnam{"himmelretning"}\r
             east{"{0} aust"}\r
-            north{"{0} nord"}\r
-            south{"{0} sør"}\r
-            west{"{0} vest"}\r
-        }\r
-        digital{\r
-            bit{\r
-                dnam{"bit"}\r
-                one{"{0} bit"}\r
-                other{"{0} bit"}\r
-            }\r
-            byte{\r
-                dnam{"byte"}\r
-                one{"{0} byte"}\r
-                other{"{0} byte"}\r
-            }\r
-            gigabit{\r
-                dnam{"gigabit"}\r
-                one{"{0} gigabit"}\r
-                other{"{0} gigabit"}\r
-            }\r
-            gigabyte{\r
-                dnam{"gigabyte"}\r
-                one{"{0} gigabyte"}\r
-                other{"{0} gigabyte"}\r
-            }\r
-            kilobit{\r
-                dnam{"kilobit"}\r
-                one{"{0} kilobit"}\r
-                other{"{0} kilobit"}\r
-            }\r
-            kilobyte{\r
-                dnam{"kilobyte"}\r
-                one{"{0} kilobyte"}\r
-                other{"{0} kilobyte"}\r
-            }\r
-            megabit{\r
-                dnam{"megabit"}\r
-                one{"{0} megabit"}\r
-                other{"{0} megabit"}\r
-            }\r
-            megabyte{\r
-                dnam{"megabyte"}\r
-                one{"{0} megabyte"}\r
-                other{"{0} megabyte"}\r
-            }\r
-            petabyte{\r
-                dnam{"petabyte"}\r
-                one{"{0} petabyte"}\r
-                other{"{0} petabyte"}\r
-            }\r
-            terabit{\r
-                dnam{"terabit"}\r
-                one{"{0} terabit"}\r
-                other{"{0} terabit"}\r
-            }\r
-            terabyte{\r
-                dnam{"terabyte"}\r
-                one{"{0} terabyte"}\r
-                other{"{0} terabyte"}\r
-            }\r
         }\r
         duration{\r
             century{\r
@@ -232,22 +71,8 @@ nn{
                 one{"{0} hundreår"}\r
                 other{"{0} hundreår"}\r
             }\r
-            day{\r
-                dnam{"døgn"}\r
-                one{"{0} døgn"}\r
-                other{"{0} døgn"}\r
-                per{"{0} per døgn"}\r
-            }\r
-            decade{\r
-                dnam{"tiår"}\r
-                one{"{0} tiår"}\r
-                other{"{0} tiår"}\r
-            }\r
             hour{\r
                 dnam{"timar"}\r
-                one{"{0} time"}\r
-                other{"{0} timer"}\r
-                per{"{0} per time"}\r
             }\r
             microsecond{\r
                 dnam{"mikrosekund"}\r
@@ -263,7 +88,6 @@ nn{
                 dnam{"minutt"}\r
                 one{"{0} minutt"}\r
                 other{"{0} minutt"}\r
-                per{"{0} per minutt"}\r
             }\r
             month{\r
                 dnam{"månadar"}\r
@@ -280,7 +104,6 @@ nn{
                 dnam{"sekund"}\r
                 one{"{0} sekund"}\r
                 other{"{0} sekund"}\r
-                per{"{0} per sekund"}\r
             }\r
             week{\r
                 dnam{"veker"}\r
@@ -288,34 +111,12 @@ nn{
                 other{"{0} veker"}\r
                 per{"{0} per veke"}\r
             }\r
-            year{\r
-                dnam{"år"}\r
-                one{"{0} år"}\r
-                other{"{0} år"}\r
-                per{"{0} per år"}\r
-            }\r
         }\r
         electric{\r
             ampere{\r
-                dnam{"ampere"}\r
                 one{"{0} ampere"}\r
                 other{"{0} ampere"}\r
             }\r
-            milliampere{\r
-                dnam{"milliampere"}\r
-                one{"{0} milliampere"}\r
-                other{"{0} milliampere"}\r
-            }\r
-            ohm{\r
-                dnam{"ohm"}\r
-                one{"{0} ohm"}\r
-                other{"{0} ohm"}\r
-            }\r
-            volt{\r
-                dnam{"volt"}\r
-                one{"{0} volt"}\r
-                other{"{0} volt"}\r
-            }\r
         }\r
         energy{\r
             british-thermal-unit{\r
@@ -328,18 +129,12 @@ nn{
                 one{"{0} kalori"}\r
                 other{"{0} kaloriar"}\r
             }\r
-            electronvolt{\r
-                dnam{"elektronvolt"}\r
-                one{"{0} elektronvolt"}\r
-                other{"{0} elektronvolt"}\r
-            }\r
             foodcalorie{\r
                 dnam{"kaloriar"}\r
                 one{"{0} kalori"}\r
                 other{"{0} kaloriar"}\r
             }\r
             joule{\r
-                dnam{"joule"}\r
                 one{"{0} joule"}\r
                 other{"{0} joule"}\r
             }\r
@@ -348,59 +143,14 @@ nn{
                 one{"{0} kilokalori"}\r
                 other{"{0} kilokaloriar"}\r
             }\r
-            kilojoule{\r
-                dnam{"kilojoule"}\r
-                one{"{0} kilojoule"}\r
-                other{"{0} kilojoule"}\r
-            }\r
             kilowatt-hour{\r
                 dnam{"kilowattimar"}\r
                 one{"{0} kilowattime"}\r
                 other{"{0} kilowattimar"}\r
             }\r
-            therm-us{\r
-                dnam{"therm"}\r
-                one{"{0} therm"}\r
-                other{"{0} therm"}\r
-            }\r
-        }\r
-        force{\r
-            newton{\r
-                dnam{"newton"}\r
-                one{"{0} newton"}\r
-                other{"{0} newton"}\r
-            }\r
-            pound-force{\r
-                dnam{"poundforce"}\r
-                one{"{0} poundforce"}\r
-                other{"{0} poundforce"}\r
-            }\r
-        }\r
-        frequency{\r
-            gigahertz{\r
-                dnam{"gigahertz"}\r
-                one{"{0} gigahertz"}\r
-                other{"{0} gigahertz"}\r
-            }\r
-            hertz{\r
-                dnam{"hertz"}\r
-                one{"{0} hertz"}\r
-                other{"{0} hertz"}\r
-            }\r
-            kilohertz{\r
-                dnam{"kilohertz"}\r
-                one{"{0} kilohertz"}\r
-                other{"{0} kilohertz"}\r
-            }\r
-            megahertz{\r
-                dnam{"megahertz"}\r
-                one{"{0} megahertz"}\r
-                other{"{0} megahertz"}\r
-            }\r
         }\r
         graphics{\r
             dot{\r
-                dnam{"punkt"}\r
                 one{"{0} punkt"}\r
                 other{"{0} punkt"}\r
             }\r
@@ -414,11 +164,6 @@ nn{
                 one{"{0} punkt per tomme"}\r
                 other{"{0} punkt per tomme"}\r
             }\r
-            em{\r
-                dnam{"gefirt"}\r
-                one{"{0} gefirt"}\r
-                other{"{0} gefirt"}\r
-            }\r
             megapixel{\r
                 dnam{"megapikslar"}\r
                 one{"{0} megapiksel"}\r
@@ -446,19 +191,7 @@ nn{
                 one{"{0} astronomisk eining"}\r
                 other{"{0} astronomiske einingar"}\r
             }\r
-            centimeter{\r
-                dnam{"centimeter"}\r
-                one{"{0} centimeter"}\r
-                other{"{0} centimeter"}\r
-                per{"{0} per centimeter"}\r
-            }\r
-            decimeter{\r
-                dnam{"desimeter"}\r
-                one{"{0} desimeter"}\r
-                other{"{0} desimeter"}\r
-            }\r
             earth-radius{\r
-                dnam{"jordradius"}\r
                 one{"{0} jordradius"}\r
                 other{"{0} jordradius"}\r
             }\r
@@ -467,80 +200,15 @@ nn{
                 one{"{0} famn"}\r
                 other{"{0} famner"}\r
             }\r
-            foot{\r
-                dnam{"fot"}\r
-                one{"{0} fot"}\r
-                other{"{0} fot"}\r
-                per{"{0} per fot"}\r
-            }\r
-            furlong{\r
-                dnam{"furlong"}\r
-                one{"{0} furlong"}\r
-                other{"{0} furlong"}\r
-            }\r
             inch{\r
                 dnam{"tommar"}\r
                 one{"{0} tomme"}\r
                 other{"{0} tommar"}\r
-                per{"{0} per tomme"}\r
-            }\r
-            kilometer{\r
-                dnam{"kilometer"}\r
-                one{"{0} kilometer"}\r
-                other{"{0} kilometer"}\r
-                per{"{0} per kilometer"}\r
-            }\r
-            light-year{\r
-                dnam{"lysår"}\r
-                one{"{0} lysår"}\r
-                other{"{0} lysår"}\r
-            }\r
-            meter{\r
-                dnam{"meter"}\r
-                one{"{0} meter"}\r
-                other{"{0} meter"}\r
-                per{"{0} per meter"}\r
-            }\r
-            micrometer{\r
-                dnam{"mikrometer"}\r
-                one{"{0} mikrometer"}\r
-                other{"{0} mikrometer"}\r
-            }\r
-            mile{\r
-                dnam{"engelske mil"}\r
-                one{"{0} engelsk mil"}\r
-                other{"{0} engelske mil"}\r
-            }\r
-            mile-scandinavian{\r
-                dnam{"mil"}\r
-                one{"{0} mil"}\r
-                other{"{0} mil"}\r
-            }\r
-            millimeter{\r
-                dnam{"millimeter"}\r
-                one{"{0} millimeter"}\r
-                other{"{0} millimeter"}\r
             }\r
             nanometer{\r
-                dnam{"nanometer"}\r
                 one{"{0} nm"}\r
                 other{"{0} nm"}\r
             }\r
-            nautical-mile{\r
-                dnam{"nautiske mil"}\r
-                one{"{0} nautisk mil"}\r
-                other{"{0} nautiske mil"}\r
-            }\r
-            parsec{\r
-                dnam{"parsec"}\r
-                one{"{0} parsec"}\r
-                other{"{0} parsec"}\r
-            }\r
-            picometer{\r
-                dnam{"pikometer"}\r
-                one{"{0} pikometer"}\r
-                other{"{0} pikometer"}\r
-            }\r
             point{\r
                 dnam{"typografiske punkt"}\r
                 one{"{0} typografisk punkt"}\r
@@ -558,21 +226,6 @@ nn{
             }\r
         }\r
         light{\r
-            candela{\r
-                dnam{"candela"}\r
-                one{"{0} candela"}\r
-                other{"{0} candela"}\r
-            }\r
-            lumen{\r
-                dnam{"lumen"}\r
-                one{"{0} lumen"}\r
-                other{"{0} lumen"}\r
-            }\r
-            lux{\r
-                dnam{"lux"}\r
-                one{"{0} lux"}\r
-                other{"{0} lux"}\r
-            }\r
             solar-luminosity{\r
                 dnam{"solluminositetar"}\r
                 one{"{0} solluminositet"}\r
@@ -580,65 +233,11 @@ nn{
             }\r
         }\r
         mass{\r
-            carat{\r
-                dnam{"karat"}\r
-                one{"{0} karat"}\r
-                other{"{0} karat"}\r
-            }\r
-            dalton{\r
-                dnam{"dalton"}\r
-                one{"{0} dalton"}\r
-                other{"{0} dalton"}\r
-            }\r
             earth-mass{\r
                 dnam{"jordmassar"}\r
                 one{"{0} jordmasse"}\r
                 other{"{0} jordmassar"}\r
             }\r
-            gram{\r
-                dnam{"gram"}\r
-                one{"{0} gram"}\r
-                other{"{0} gram"}\r
-                per{"{0} per gram"}\r
-            }\r
-            kilogram{\r
-                dnam{"kilogram"}\r
-                one{"{0} kilogram"}\r
-                other{"{0} kilogram"}\r
-                per{"{0} per kilogram"}\r
-            }\r
-            metric-ton{\r
-                dnam{"tonn"}\r
-                one{"{0} tonn"}\r
-                other{"{0} tonn"}\r
-            }\r
-            microgram{\r
-                dnam{"mikrogram"}\r
-                one{"{0} mikrogram"}\r
-                other{"{0} mikrogram"}\r
-            }\r
-            milligram{\r
-                dnam{"milligram"}\r
-                one{"{0} milligram"}\r
-                other{"{0} milligram"}\r
-            }\r
-            ounce{\r
-                dnam{"unser"}\r
-                one{"{0} unse"}\r
-                other{"{0} unser"}\r
-                per{"{0} per unse"}\r
-            }\r
-            ounce-troy{\r
-                dnam{"troy ounce"}\r
-                one{"{0} troy ounce"}\r
-                other{"{0} troy ounce"}\r
-            }\r
-            pound{\r
-                dnam{"pund"}\r
-                one{"{0} pund"}\r
-                other{"{0} pund"}\r
-                per{"{0} per pund"}\r
-            }\r
             solar-mass{\r
                 dnam{"solmassar"}\r
                 one{"{0} solmasse"}\r
@@ -650,137 +249,37 @@ nn{
                 other{"{0} engelske stones"}\r
             }\r
             ton{\r
-                dnam{"amerikanske tonn"}\r
                 one{"{0} amerikansk tonn"}\r
                 other{"{0} amerikanske tonn"}\r
             }\r
         }\r
-        power{\r
-            gigawatt{\r
-                dnam{"gigawatt"}\r
-                one{"{0} gigawatt"}\r
-                other{"{0} gigawatt"}\r
-            }\r
-            horsepower{\r
-                dnam{"hestekrefter"}\r
-                one{"{0} hestekraft"}\r
-                other{"{0} hestekrefter"}\r
-            }\r
-            kilowatt{\r
-                dnam{"kilowatt"}\r
-                one{"{0} kilowatt"}\r
-                other{"{0} kilowatt"}\r
-            }\r
-            megawatt{\r
-                dnam{"megawatt"}\r
-                one{"{0} megawatt"}\r
-                other{"{0} megawatt"}\r
-            }\r
-            milliwatt{\r
-                dnam{"milliwatt"}\r
-                one{"{0} milliwatt"}\r
-                other{"{0} milliwatt"}\r
-            }\r
-            watt{\r
-                dnam{"watt"}\r
-                one{"{0} watt"}\r
-                other{"{0} watt"}\r
-            }\r
-        }\r
         pressure{\r
             atmosphere{\r
                 dnam{"atmosfærar"}\r
                 one{"{0} atmosfære"}\r
                 other{"{0} atmosfærar"}\r
             }\r
-            hectopascal{\r
-                dnam{"hektopascal"}\r
-                one{"{0} hektopascal"}\r
-                other{"{0} hektopascal"}\r
-            }\r
             inch-ofhg{\r
                 dnam{"tommar kvikksølv"}\r
                 one{"{0} tomme kvikksølv"}\r
                 other{"{0} tommar kvikksølv"}\r
             }\r
-            kilopascal{\r
-                dnam{"kilopascal"}\r
-                one{"{0} kilopascal"}\r
-                other{"{0} kilopascal"}\r
-            }\r
-            megapascal{\r
-                dnam{"megapascal"}\r
-                one{"{0} megapascal"}\r
-                other{"{0} megapascal"}\r
-            }\r
-            millibar{\r
-                dnam{"millibar"}\r
-                one{"{0} millibar"}\r
-                other{"{0} millibar"}\r
-            }\r
-            millimeter-ofhg{\r
-                dnam{"millimeter kvikksølv"}\r
-                one{"{0} millimeter kvikksølv"}\r
-                other{"{0} millimeter kvikksølv"}\r
-            }\r
-            pascal{\r
-                dnam{"pascal"}\r
-                one{"{0} pascal"}\r
-                other{"{0} pascal"}\r
-            }\r
-            pound-force-per-square-inch{\r
-                dnam{"pund per kvadrattomme"}\r
-                one{"{0} pund per kvadrattomme"}\r
-                other{"{0} pund per kvadrattomme"}\r
-            }\r
         }\r
         speed{\r
             kilometer-per-hour{\r
-                dnam{"kilometer per time"}\r
                 one{"{0} kilometer per time"}\r
                 other{"{0} kilomeer per time"}\r
             }\r
-            knot{\r
-                dnam{"knop"}\r
-                one{"{0} knop"}\r
-                other{"{0} knop"}\r
-            }\r
-            meter-per-second{\r
-                dnam{"meter per sekund"}\r
-                one{"{0} meter per sekund"}\r
-                other{"{0} meter per sekund"}\r
-            }\r
-            mile-per-hour{\r
-                dnam{"engelske mil per time"}\r
-                one{"{0} engelsk mil per time"}\r
-                other{"{0} engelske mil per time"}\r
-            }\r
         }\r
         temperature{\r
-            celsius{\r
-                dnam{"grader celsius"}\r
-                one{"{0} grad celsius"}\r
-                other{"{0} grader celsius"}\r
-            }\r
-            fahrenheit{\r
-                dnam{"grader fahrenheit"}\r
-                one{"{0} grad fahrenheit"}\r
-                other{"{0} grader fahrenheit"}\r
-            }\r
             generic{\r
                 dnam{"°"}\r
                 one{"{0}°"}\r
                 other{"{0}°"}\r
             }\r
-            kelvin{\r
-                dnam{"kelvin"}\r
-                one{"{0} kelvin"}\r
-                other{"{0} kelvin"}\r
-            }\r
         }\r
         torque{\r
             newton-meter{\r
-                dnam{"newtonmeter"}\r
                 one{"{0} newtonmeter"}\r
                 other{"{0} newtonmeter"}\r
             }\r
@@ -791,60 +290,19 @@ nn{
             }\r
         }\r
         volume{\r
-            acre-foot{\r
-                dnam{"acre-fot"}\r
-                one{"{0} acre-fot"}\r
-                other{"{0} acre-fot"}\r
-            }\r
-            barrel{\r
-                dnam{"fat"}\r
-                one{"{0} fat"}\r
-                other{"{0} fat"}\r
-            }\r
             bushel{\r
                 dnam{"bushels"}\r
-                one{"{0} bushel"}\r
-                other{"{0} bushels"}\r
-            }\r
-            centiliter{\r
-                dnam{"centiliter"}\r
-                one{"{0} centiliter"}\r
-                other{"{0} centiliter"}\r
-            }\r
-            cubic-centimeter{\r
-                dnam{"kubikkcentimeter"}\r
-                one{"{0} kubikkcentimeter"}\r
-                other{"{0} kubikkcentimeter"}\r
-                per{"{0} per kubikkcentimeter"}\r
-            }\r
-            cubic-foot{\r
-                dnam{"kubikkfot"}\r
-                one{"{0} kubikkfot"}\r
-                other{"{0} kubikkfot"}\r
             }\r
             cubic-inch{\r
                 dnam{"kubikktommar"}\r
                 one{"{0} kubikktomme"}\r
                 other{"{0} kubikktommar"}\r
             }\r
-            cubic-kilometer{\r
-                dnam{"kubikkilometer"}\r
-                one{"{0} kubikkilometer"}\r
-                other{"{0} kubikkilometer"}\r
-            }\r
-            cubic-meter{\r
-                dnam{"kubikkmeter"}\r
-                one{"{0} kubikkmeter"}\r
-                other{"{0} kubikkmeter"}\r
-                per{"{0} per kubikkmeter"}\r
-            }\r
             cubic-mile{\r
-                dnam{"engelske kubikkmil"}\r
                 one{"{0} engelske kubikkmil"}\r
                 other{"{0} engelske kubikkmil"}\r
             }\r
             cubic-yard{\r
-                dnam{"kubikkyard"}\r
                 one{"{0} kubikkyard"}\r
                 other{"{0} kubikkyard"}\r
             }\r
@@ -858,11 +316,6 @@ nn{
                 one{"{0} metrisk kopp"}\r
                 other{"{0} metriske koppar"}\r
             }\r
-            deciliter{\r
-                dnam{"desiliter"}\r
-                one{"{0} desiliter"}\r
-                other{"{0} desiliter"}\r
-            }\r
             dessert-spoon{\r
                 dnam{"dessertskei"}\r
                 one{"{0} dessertskei"}\r
@@ -873,89 +326,14 @@ nn{
                 one{"{0} britisk dessertskei"}\r
                 other{"{0} britisk dessertskei"}\r
             }\r
-            dram{\r
-                dnam{"dram"}\r
-                one{"{0} dram"}\r
-                other{"{0} dram"}\r
-            }\r
             drop{\r
                 dnam{"drope"}\r
                 one{"{0} drope"}\r
                 other{"{0} dropar"}\r
             }\r
-            fluid-ounce{\r
-                dnam{"væskeunser"}\r
-                one{"{0} væskeunse"}\r
-                other{"{0} væskeunser"}\r
-            }\r
-            fluid-ounce-imperial{\r
-                dnam{"britiske væskeunser"}\r
-                one{"{0} britisk væskeunse"}\r
-                other{"{0} britiske væskeunser"}\r
-            }\r
-            gallon{\r
-                dnam{"gallon"}\r
-                one{"{0} gallon"}\r
-                other{"{0} gallon"}\r
-                per{"{0} per gallon"}\r
-            }\r
             gallon-imperial{\r
-                dnam{"britiske gallon"}\r
-                one{"{0} britisk gallon"}\r
-                other{"{0} britiske gallon"}\r
                 per{"{0} per britiske gallon"}\r
             }\r
-            hectoliter{\r
-                dnam{"hektoliter"}\r
-                one{"{0} hektoliter"}\r
-                other{"{0} hektoliter"}\r
-            }\r
-            jigger{\r
-                dnam{"shot"}\r
-                one{"{0} shot"}\r
-                other{"{0} jigger"}\r
-            }\r
-            liter{\r
-                dnam{"liter"}\r
-                one{"{0} liter"}\r
-                other{"{0} liter"}\r
-                per{"{0} per liter"}\r
-            }\r
-            megaliter{\r
-                dnam{"megaliter"}\r
-                one{"{0} megaliter"}\r
-                other{"{0} megaliter"}\r
-            }\r
-            milliliter{\r
-                dnam{"milliliter"}\r
-                one{"{0} milliliter"}\r
-                other{"{0} milliliter"}\r
-            }\r
-            pinch{\r
-                dnam{"klype"}\r
-                one{"{0} klype"}\r
-                other{"{0} klyper"}\r
-            }\r
-            pint{\r
-                dnam{"pint"}\r
-                one{"{0} pint"}\r
-                other{"{0} pint"}\r
-            }\r
-            pint-metric{\r
-                dnam{"metriske pint"}\r
-                one{"{0} metrisk pint"}\r
-                other{"{0} metriske pint"}\r
-            }\r
-            quart{\r
-                dnam{"quart"}\r
-                one{"{0} quart"}\r
-                other{"{0} quart"}\r
-            }\r
-            quart-imperial{\r
-                dnam{"britisk quart"}\r
-                one{"{0} britisk quart"}\r
-                other{"{0} britiske quart"}\r
-            }\r
             tablespoon{\r
                 dnam{"matskeier"}\r
                 one{"{0} matskei"}\r
@@ -970,10 +348,6 @@ nn{
     }\r
     unitsNarrow{\r
         area{\r
-            acre{\r
-                one{"{0} ac"}\r
-                other{"{0} ac"}\r
-            }\r
             square-foot{\r
                 one{"{0} ft²"}\r
                 other{"{0} ft²"}\r
@@ -984,49 +358,22 @@ nn{
             }\r
         }\r
         compound{\r
-            per{"{0}/{1}"}\r
             times{"{0}{1}"}\r
         }\r
-        concentr{\r
-            percent{\r
-                dnam{"%"}\r
-                one{"{0} %"}\r
-                other{"{0} %"}\r
-            }\r
-        }\r
         consumption{\r
             liter-per-100-kilometer{\r
                 dnam{"l/100 km"}\r
-                one{"{0} l/100km"}\r
-                other{"{0} l/100km"}\r
             }\r
         }\r
-        coordinate{\r
-            east{"{0}Ø"}\r
-            north{"{0}N"}\r
-            south{"{0}S"}\r
-            west{"{0}V"}\r
-        }\r
         duration{\r
-            day{\r
-                dnam{"døgn"}\r
-                one{"{0}d"}\r
-                other{"{0}d"}\r
-            }\r
             hour{\r
                 dnam{"timar"}\r
-                one{"{0}t"}\r
-                other{"{0}t"}\r
             }\r
             millisecond{\r
                 dnam{"millisekund"}\r
-                one{"{0}ms"}\r
-                other{"{0}ms"}\r
             }\r
             minute{\r
                 dnam{"minutt"}\r
-                one{"{0}m"}\r
-                other{"{0}m"}\r
             }\r
             month{\r
                 dnam{"månad"}\r
@@ -1035,61 +382,23 @@ nn{
             }\r
             second{\r
                 dnam{"sekund"}\r
-                one{"{0}s"}\r
-                other{"{0}s"}\r
             }\r
             week{\r
                 dnam{"vk."}\r
                 one{"{0}v"}\r
                 other{"{0}v"}\r
             }\r
-            year{\r
-                dnam{"år"}\r
-                one{"{0}å"}\r
-                other{"{0}å"}\r
-            }\r
         }\r
         length{\r
-            centimeter{\r
-                dnam{"cm"}\r
-                one{"{0}cm"}\r
-                other{"{0}cm"}\r
-            }\r
-            kilometer{\r
-                dnam{"km"}\r
-                one{"{0}km"}\r
-                other{"{0}km"}\r
-            }\r
-            meter{\r
-                one{"{0}m"}\r
-                other{"{0}m"}\r
-            }\r
             mile{\r
                 one{"{0} mi"}\r
                 other{"{0} mi"}\r
             }\r
-            millimeter{\r
-                dnam{"mm"}\r
-                one{"{0}mm"}\r
-                other{"{0}mm"}\r
-            }\r
             yard{\r
                 one{"{0} yd"}\r
                 other{"{0} yd"}\r
             }\r
         }\r
-        mass{\r
-            gram{\r
-                dnam{"gram"}\r
-                one{"{0}g"}\r
-                other{"{0}g"}\r
-            }\r
-            kilogram{\r
-                dnam{"kg"}\r
-                one{"{0}kg"}\r
-                other{"{0}kg"}\r
-            }\r
-        }\r
         pressure{\r
             inch-ofhg{\r
                 one{"{0} inHg"}\r
@@ -1097,11 +406,6 @@ nn{
             }\r
         }\r
         speed{\r
-            kilometer-per-hour{\r
-                dnam{"km/t"}\r
-                one{"{0}km/t"}\r
-                other{"{0}km/t"}\r
-            }\r
             mile-per-hour{\r
                 one{"{0} mi/h"}\r
                 other{"{0} mi/h"}\r
@@ -1109,7 +413,6 @@ nn{
         }\r
         temperature{\r
             celsius{\r
-                dnam{"°C"}\r
                 one{"{0}°"}\r
                 other{"{0}°"}\r
             }\r
@@ -1121,159 +424,58 @@ nn{
             }\r
             liter{\r
                 dnam{"liter"}\r
-                one{"{0}l"}\r
-                other{"{0}l"}\r
             }\r
         }\r
     }\r
     unitsShort{\r
         acceleration{\r
-            g-force{\r
-                dnam{"g-kraft"}\r
-                one{"{0} G"}\r
-                other{"{0} G"}\r
-            }\r
             meter-per-square-second{\r
                 dnam{"m/s²"}\r
-                one{"{0} m/s²"}\r
-                other{"{0} m/s²"}\r
             }\r
         }\r
         angle{\r
             arc-minute{\r
                 dnam{"bogeminutt"}\r
-                one{"{0}′"}\r
-                other{"{0}′"}\r
             }\r
             arc-second{\r
                 dnam{"bogesekund"}\r
-                one{"{0}″"}\r
-                other{"{0}″"}\r
-            }\r
-            degree{\r
-                dnam{"grader"}\r
-                one{"{0}°"}\r
-                other{"{0}°"}\r
             }\r
             radian{\r
                 dnam{"radianar"}\r
-                one{"{0} rad"}\r
-                other{"{0} rad"}\r
-            }\r
-            revolution{\r
-                dnam{"omdr."}\r
-                one{"{0} omdr."}\r
-                other{"{0} omdr."}\r
             }\r
         }\r
         area{\r
             acre{\r
-                dnam{"acre"}\r
                 one{"{0} acre"}\r
                 other{"{0} acre"}\r
             }\r
-            hectare{\r
-                dnam{"hektar"}\r
-                one{"{0} ha"}\r
-                other{"{0} ha"}\r
-            }\r
-            square-centimeter{\r
-                dnam{"cm²"}\r
-                one{"{0} cm²"}\r
-                other{"{0} cm²"}\r
-                per{"{0}/cm²"}\r
-            }\r
-            square-foot{\r
-                dnam{"kvadratfot"}\r
-                one{"{0} fot²"}\r
-                other{"{0} fot²"}\r
-            }\r
             square-inch{\r
                 dnam{"tommar²"}\r
                 one{"{0} tomme²"}\r
                 other{"{0} tommar²"}\r
                 per{"{0}/tomme²"}\r
             }\r
-            square-kilometer{\r
-                dnam{"km²"}\r
-                one{"{0} km²"}\r
-                other{"{0} km²"}\r
-                per{"{0}/km²"}\r
-            }\r
-            square-meter{\r
-                dnam{"m²"}\r
-                one{"{0} m²"}\r
-                other{"{0} m²"}\r
-                per{"{0}/m²"}\r
-            }\r
             square-mile{\r
                 dnam{"engelske mil²"}\r
                 one{"{0} mi²"}\r
                 other{"{0} mi²"}\r
                 per{"{0}/mi²"}\r
             }\r
-            square-yard{\r
-                dnam{"yd²"}\r
-                one{"{0} yd²"}\r
-                other{"{0} yd²"}\r
-            }\r
         }\r
         compound{\r
-            per{"{0}/{1}"}\r
             times{"{0}{1}"}\r
         }\r
         concentr{\r
-            karat{\r
-                dnam{"karat"}\r
-                one{"{0} kt"}\r
-                other{"{0} kt"}\r
-            }\r
-            milligram-per-deciliter{\r
-                dnam{"mg/dl"}\r
-                one{"{0} mg/dl"}\r
-                other{"{0} mg/dl"}\r
-            }\r
             millimole-per-liter{\r
                 dnam{"mmol/l"}\r
-                one{"{0} mmol/l"}\r
-                other{"{0} mmol/l"}\r
-            }\r
-            percent{\r
-                dnam{"prosent"}\r
-                one{"{0} %"}\r
-                other{"{0} %"}\r
-            }\r
-            permille{\r
-                dnam{"promille"}\r
-                one{"{0} ‰"}\r
-                other{"{0} ‰"}\r
-            }\r
-            permillion{\r
-                dnam{"ppm"}\r
-                one{"{0} ppm"}\r
-                other{"{0} ppm"}\r
-            }\r
-            permyriad{\r
-                dnam{"promyriade"}\r
-                one{"{0} ‱"}\r
-                other{"{0} ‱"}\r
             }\r
         }\r
         consumption{\r
-            liter-per-100-kilometer{\r
-                dnam{"l/100 km"}\r
-                one{"{0} l/100 km"}\r
-                other{"{0} l/100 km"}\r
-            }\r
             liter-per-kilometer{\r
                 dnam{"l/km"}\r
-                one{"{0} l/km"}\r
-                other{"{0} l/km"}\r
             }\r
             mile-per-gallon{\r
                 dnam{"eng. mil/gal"}\r
-                one{"{0} mpg"}\r
-                other{"{0} mpg"}\r
             }\r
             mile-per-gallon-imperial{\r
                 dnam{"eng. mil/brit. gal"}\r
@@ -1281,125 +483,44 @@ nn{
                 other{"{0} mile/brit. gal"}\r
             }\r
         }\r
-        coordinate{\r
-            dnam{"retning"}\r
-            east{"{0} Ø"}\r
-            north{"{0} N"}\r
-            south{"{0} S"}\r
-            west{"{0} V"}\r
-        }\r
         digital{\r
-            bit{\r
-                dnam{"bit"}\r
-                one{"{0} bit"}\r
-                other{"{0} bit"}\r
-            }\r
             byte{\r
-                dnam{"byte"}\r
                 one{"{0} byte"}\r
                 other{"{0} byte"}\r
             }\r
             gigabit{\r
                 dnam{"Gb"}\r
-                one{"{0} Gb"}\r
-                other{"{0} Gb"}\r
-            }\r
-            gigabyte{\r
-                dnam{"GB"}\r
-                one{"{0} GB"}\r
-                other{"{0} GB"}\r
             }\r
             kilobit{\r
                 dnam{"kb"}\r
-                one{"{0} kb"}\r
-                other{"{0} kb"}\r
-            }\r
-            kilobyte{\r
-                dnam{"kB"}\r
-                one{"{0} kB"}\r
-                other{"{0} kB"}\r
             }\r
             megabit{\r
                 dnam{"Mb"}\r
-                one{"{0} Mb"}\r
-                other{"{0} Mb"}\r
-            }\r
-            megabyte{\r
-                dnam{"MB"}\r
-                one{"{0} MB"}\r
-                other{"{0} MB"}\r
-            }\r
-            petabyte{\r
-                dnam{"PB"}\r
-                one{"{0} PB"}\r
-                other{"{0} PB"}\r
             }\r
             terabit{\r
                 dnam{"Tb"}\r
-                one{"{0} Tb"}\r
-                other{"{0} Tb"}\r
-            }\r
-            terabyte{\r
-                dnam{"TB"}\r
-                one{"{0} TB"}\r
-                other{"{0} TB"}\r
             }\r
         }\r
         duration{\r
-            century{\r
-                dnam{"årh."}\r
-                one{"{0} årh."}\r
-                other{"{0} årh."}\r
-            }\r
-            day{\r
-                dnam{"døgn"}\r
-                one{"{0} d"}\r
-                other{"{0} d"}\r
-                per{"{0}/d"}\r
-            }\r
-            decade{\r
-                dnam{"tiår"}\r
-                one{"{0} tiår"}\r
-                other{"{0} tiår"}\r
-            }\r
             hour{\r
                 dnam{"timar"}\r
-                one{"{0} t"}\r
-                other{"{0} t"}\r
-                per{"{0}/t"}\r
             }\r
             microsecond{\r
                 dnam{"mikrosekund"}\r
-                one{"{0} μs"}\r
-                other{"{0} μs"}\r
             }\r
             millisecond{\r
                 dnam{"millisekund"}\r
-                one{"{0} ms"}\r
-                other{"{0} ms"}\r
             }\r
             minute{\r
                 dnam{"minutt"}\r
-                one{"{0} min"}\r
-                other{"{0} min"}\r
-                per{"{0}/min"}\r
             }\r
             month{\r
                 dnam{"månadar"}\r
-                one{"{0} md."}\r
-                other{"{0} md."}\r
-                per{"{0}/md."}\r
-            }\r
-            nanosecond{\r
-                dnam{"ns"}\r
-                one{"{0} ns"}\r
-                other{"{0} ns"}\r
             }\r
             second{\r
                 dnam{"sekund"}\r
                 one{"{0} s"}\r
                 other{"{0} s"}\r
-                per{"{0}/s"}\r
             }\r
             week{\r
                 dnam{"veker"}\r
@@ -1407,136 +528,23 @@ nn{
                 other{"{0} v"}\r
                 per{"{0}/v"}\r
             }\r
-            year{\r
-                dnam{"år"}\r
-                one{"{0} år"}\r
-                other{"{0} år"}\r
-                per{"{0}/år"}\r
-            }\r
-        }\r
-        electric{\r
-            ampere{\r
-                dnam{"ampere"}\r
-                one{"{0} A"}\r
-                other{"{0} A"}\r
-            }\r
-            milliampere{\r
-                dnam{"milliampere"}\r
-                one{"{0} mA"}\r
-                other{"{0} mA"}\r
-            }\r
-            ohm{\r
-                dnam{"ohm"}\r
-                one{"{0} Ω"}\r
-                other{"{0} Ω"}\r
-            }\r
-            volt{\r
-                dnam{"volt"}\r
-                one{"{0} V"}\r
-                other{"{0} V"}\r
-            }\r
-        }\r
-        energy{\r
-            calorie{\r
-                dnam{"cal"}\r
-                one{"{0} cal"}\r
-                other{"{0} cal"}\r
-            }\r
-            electronvolt{\r
-                dnam{"elektronvolt"}\r
-                one{"{0} eV"}\r
-                other{"{0} eV"}\r
-            }\r
-            foodcalorie{\r
-                dnam{"cal"}\r
-                one{"{0} cal"}\r
-                other{"{0} cal"}\r
-            }\r
-            joule{\r
-                dnam{"joule"}\r
-                one{"{0} J"}\r
-                other{"{0} J"}\r
-            }\r
-            kilocalorie{\r
-                dnam{"kcal"}\r
-                one{"{0} kcal"}\r
-                other{"{0} kcal"}\r
-            }\r
-            kilojoule{\r
-                dnam{"kilojoule"}\r
-                one{"{0} kJ"}\r
-                other{"{0} kJ"}\r
-            }\r
-            kilowatt-hour{\r
-                dnam{"kWh"}\r
-                one{"{0} kWh"}\r
-                other{"{0} kWh"}\r
-            }\r
-            therm-us{\r
-                one{"{0} therm"}\r
-                other{"{0} therm"}\r
-            }\r
-        }\r
-        force{\r
-            pound-force{\r
-                dnam{"poundforce"}\r
-            }\r
-        }\r
-        frequency{\r
-            gigahertz{\r
-                dnam{"GHz"}\r
-                one{"{0} GHz"}\r
-                other{"{0} GHz"}\r
-            }\r
-            hertz{\r
-                dnam{"Hz"}\r
-                one{"{0} Hz"}\r
-                other{"{0} Hz"}\r
-            }\r
-            kilohertz{\r
-                dnam{"kHz"}\r
-                one{"{0} kHz"}\r
-                other{"{0} kHz"}\r
-            }\r
-            megahertz{\r
-                dnam{"MHz"}\r
-                one{"{0} MHz"}\r
-                other{"{0} MHz"}\r
-            }\r
         }\r
         graphics{\r
-            dot{\r
-                dnam{"pkt"}\r
-                one{"{0} pkt"}\r
-                other{"{0} pkt"}\r
-            }\r
             dot-per-centimeter{\r
                 one{"{0} dpcm"}\r
-                other{"{0} dpcm"}\r
+                other{"{0} ppcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"ppt"}\r
                 one{"{0} ppt"}\r
                 other{"{0} ppt"}\r
             }\r
-            em{\r
-                dnam{"gefirt"}\r
-                one{"{0} gefirt"}\r
-                other{"{0} gefirt"}\r
-            }\r
             megapixel{\r
                 dnam{"megapikslar"}\r
-                one{"{0} MP"}\r
-                other{"{0} MP"}\r
             }\r
             pixel{\r
                 dnam{"pikslar"}\r
             }\r
-            pixel-per-inch{\r
-                dnam{"ppi"}\r
-                one{"{0} ppi"}\r
-                other{"{0} ppi"}\r
-            }\r
         }\r
         length{\r
             astronomical-unit{\r
@@ -1544,339 +552,66 @@ nn{
                 one{"{0} au"}\r
                 other{"{0} au"}\r
             }\r
-            centimeter{\r
-                dnam{"cm"}\r
-                one{"{0} cm"}\r
-                other{"{0} cm"}\r
-                per{"{0}/cm"}\r
-            }\r
-            decimeter{\r
-                dnam{"dm"}\r
-                one{"{0} dm"}\r
-                other{"{0} dm"}\r
-            }\r
             fathom{\r
                 dnam{"famner"}\r
                 one{"{0} fmn"}\r
                 other{"{0} fmn"}\r
             }\r
             foot{\r
-                dnam{"fot"}\r
-                one{"{0} fot"}\r
-                other{"{0} fot"}\r
                 per{"{0}/ft"}\r
             }\r
-            furlong{\r
-                dnam{"furlong"}\r
-                one{"{0} fur"}\r
-                other{"{0} fur"}\r
-            }\r
             inch{\r
                 dnam{"tommar"}\r
                 one{"{0} tomme"}\r
                 other{"{0} tommar"}\r
-                per{"{0}/tomme"}\r
-            }\r
-            kilometer{\r
-                dnam{"km"}\r
-                one{"{0} km"}\r
-                other{"{0} km"}\r
-                per{"{0}/km"}\r
             }\r
             light-year{\r
-                dnam{"lysår"}\r
                 one{"{0} lysår"}\r
                 other{"{0} lysår"}\r
             }\r
             meter{\r
                 dnam{"m"}\r
-                one{"{0} m"}\r
-                other{"{0} m"}\r
-                per{"{0}/m"}\r
-            }\r
-            micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
             }\r
             mile{\r
                 dnam{"engelske mil"}\r
                 one{"{0} mi"}\r
                 other{"{0} mi"}\r
             }\r
-            mile-scandinavian{\r
-                dnam{"mil"}\r
-                one{"{0} mil"}\r
-                other{"{0} mil"}\r
-            }\r
-            millimeter{\r
-                dnam{"mm"}\r
-                one{"{0} mm"}\r
-                other{"{0} mm"}\r
-            }\r
-            nanometer{\r
-                dnam{"nm"}\r
-                one{"{0} nm"}\r
-                other{"{0} nm"}\r
-            }\r
-            nautical-mile{\r
-                dnam{"nmi"}\r
-                one{"{0} nmi"}\r
-                other{"{0} nmi"}\r
-            }\r
-            parsec{\r
-                dnam{"parsec"}\r
-                one{"{0} pc"}\r
-                other{"{0} pc"}\r
-            }\r
             picometer{\r
                 dnam{"pikometer"}\r
-                one{"{0} pm"}\r
-                other{"{0} pm"}\r
             }\r
             point{\r
                 dnam{"pt"}\r
-                one{"{0} pt"}\r
-                other{"{0} pt"}\r
-            }\r
-            solar-radius{\r
-                dnam{"solradius"}\r
             }\r
             yard{\r
                 dnam{"engelske yard"}\r
             }\r
         }\r
         light{\r
-            lux{\r
-                dnam{"lux"}\r
-                one{"{0} lx"}\r
-                other{"{0} lx"}\r
-            }\r
             solar-luminosity{\r
                 dnam{"solluminositetar"}\r
             }\r
         }\r
         mass{\r
-            carat{\r
-                dnam{"karat"}\r
-                one{"{0} c"}\r
-                other{"{0} c"}\r
-            }\r
-            dalton{\r
-                one{"{0} Da"}\r
-                other{"{0} Da"}\r
-            }\r
-            earth-mass{\r
-                dnam{"jordmasser"}\r
-                one{"{0} M⊕"}\r
-                other{"{0} M⊕"}\r
-            }\r
-            gram{\r
-                dnam{"gram"}\r
-                one{"{0} g"}\r
-                other{"{0} g"}\r
-                per{"{0}/g"}\r
-            }\r
-            kilogram{\r
-                dnam{"kg"}\r
-                one{"{0} kg"}\r
-                other{"{0} kg"}\r
-                per{"{0}/kg"}\r
-            }\r
-            metric-ton{\r
-                dnam{"tonn"}\r
-                one{"{0} tonn"}\r
-                other{"{0} tonn"}\r
-            }\r
-            microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
-            }\r
-            milligram{\r
-                dnam{"mg"}\r
-                one{"{0} mg"}\r
-                other{"{0} mg"}\r
-            }\r
-            ounce{\r
-                dnam{"unser"}\r
-                one{"{0} unse"}\r
-                other{"{0} unser"}\r
-                per{"{0}/unse"}\r
-            }\r
-            ounce-troy{\r
-                dnam{"oz tr"}\r
-                one{"{0} oz tr"}\r
-                other{"{0} oz tr"}\r
-            }\r
-            pound{\r
-                dnam{"pund"}\r
-                one{"{0} pund"}\r
-                other{"{0} pund"}\r
-                per{"{0}/pund"}\r
-            }\r
             solar-mass{\r
                 dnam{"solmassar"}\r
-                one{"{0} M☉"}\r
-                other{"{0} M☉"}\r
             }\r
             stone{\r
                 dnam{"stones"}\r
                 one{"{0} eng. st."}\r
                 other{"{0} eng. st."}\r
             }\r
-            ton{\r
-                dnam{"am. tonn"}\r
-                one{"{0} am. tonn"}\r
-                other{"{0} am. tonn"}\r
-            }\r
-        }\r
-        power{\r
-            gigawatt{\r
-                dnam{"GW"}\r
-                one{"{0} GW"}\r
-                other{"{0} GW"}\r
-            }\r
-            horsepower{\r
-                dnam{"hk"}\r
-                one{"{0} hk"}\r
-                other{"{0} hk"}\r
-            }\r
-            kilowatt{\r
-                dnam{"kW"}\r
-                one{"{0} kW"}\r
-                other{"{0} kW"}\r
-            }\r
-            megawatt{\r
-                dnam{"MW"}\r
-                one{"{0} MW"}\r
-                other{"{0} MW"}\r
-            }\r
-            milliwatt{\r
-                dnam{"mW"}\r
-                one{"{0} mW"}\r
-                other{"{0} mW"}\r
-            }\r
-            watt{\r
-                dnam{"watt"}\r
-                one{"{0} W"}\r
-                other{"{0} W"}\r
-            }\r
-        }\r
-        pressure{\r
-            atmosphere{\r
-                dnam{"atm"}\r
-                one{"{0} atm"}\r
-                other{"{0} atm"}\r
-            }\r
-            hectopascal{\r
-                dnam{"hPa"}\r
-                one{"{0} hPa"}\r
-                other{"{0} hPa"}\r
-            }\r
-            inch-ofhg{\r
-                dnam{"inHg"}\r
-                one{"{0} inHg"}\r
-                other{"{0} inHg"}\r
-            }\r
-            millibar{\r
-                dnam{"mbar"}\r
-                one{"{0} mbar"}\r
-                other{"{0} mbar"}\r
-            }\r
-            millimeter-ofhg{\r
-                dnam{"mmHg"}\r
-                one{"{0} mmHg"}\r
-                other{"{0} mmHg"}\r
-            }\r
-            pound-force-per-square-inch{\r
-                dnam{"psi"}\r
-                one{"{0} psi"}\r
-                other{"{0} psi"}\r
-            }\r
         }\r
         speed{\r
-            kilometer-per-hour{\r
-                dnam{"km/time"}\r
-                one{"{0} km/t"}\r
-                other{"{0} km/t"}\r
-            }\r
-            knot{\r
-                dnam{"kn"}\r
-                one{"{0} kn"}\r
-                other{"{0} kn"}\r
-            }\r
-            meter-per-second{\r
-                dnam{"meter/s"}\r
-                one{"{0} m/s"}\r
-                other{"{0} m/s"}\r
-            }\r
             mile-per-hour{\r
                 dnam{"engelske mil/t"}\r
                 one{"{0} mile/t"}\r
                 other{"{0} mile/t"}\r
             }\r
         }\r
-        temperature{\r
-            celsius{\r
-                dnam{"°C"}\r
-                one{"{0} °C"}\r
-                other{"{0} °C"}\r
-            }\r
-            fahrenheit{\r
-                dnam{"°F"}\r
-                one{"{0} °F"}\r
-                other{"{0} °F"}\r
-            }\r
-            generic{\r
-                dnam{"°"}\r
-                one{"{0}°"}\r
-                other{"{0}°"}\r
-            }\r
-            kelvin{\r
-                dnam{"K"}\r
-                one{"{0} K"}\r
-                other{"{0} K"}\r
-            }\r
-        }\r
-        torque{\r
-            newton-meter{\r
-                dnam{"Nm"}\r
-                one{"{0} Nm"}\r
-                other{"{0} Nm"}\r
-            }\r
-        }\r
         volume{\r
-            acre-foot{\r
-                dnam{"acre-fot"}\r
-                one{"{0} ac-fot"}\r
-                other{"{0} ac-fot"}\r
-            }\r
-            barrel{\r
-                dnam{"fat"}\r
-                one{"{0} fat"}\r
-                other{"{0} fat"}\r
-            }\r
             bushel{\r
                 dnam{"bushels"}\r
-                one{"{0} bu"}\r
-                other{"{0} bu"}\r
-            }\r
-            centiliter{\r
-                dnam{"cl"}\r
-                one{"{0} cl"}\r
-                other{"{0} cl"}\r
-            }\r
-            cubic-centimeter{\r
-                dnam{"cm³"}\r
-                one{"{0} cm³"}\r
-                other{"{0} cm³"}\r
-                per{"{0}/cm³"}\r
-            }\r
-            cubic-foot{\r
-                dnam{"fot³"}\r
-                one{"{0} fot³"}\r
-                other{"{0} fot³"}\r
             }\r
             cubic-inch{\r
                 dnam{"tommar³"}\r
@@ -1885,40 +620,20 @@ nn{
             }\r
             cubic-kilometer{\r
                 dnam{"kubikkilometer"}\r
-                one{"{0} km³"}\r
-                other{"{0} km³"}\r
-            }\r
-            cubic-meter{\r
-                dnam{"m³"}\r
-                one{"{0} m³"}\r
-                other{"{0} m³"}\r
-                per{"{0}/m³"}\r
             }\r
             cubic-mile{\r
                 dnam{"engelske mil³"}\r
                 one{"{0} mi³"}\r
                 other{"{0} mi³"}\r
             }\r
-            cubic-yard{\r
-                dnam{"yard³"}\r
-                one{"{0} yard³"}\r
-                other{"{0} yard³"}\r
-            }\r
             cup{\r
                 dnam{"koppar"}\r
-                one{"{0} k"}\r
-                other{"{0} k"}\r
             }\r
             cup-metric{\r
                 dnam{"m. koppar"}\r
                 one{"{0} m. kopp"}\r
                 other{"{0} m. koppar"}\r
             }\r
-            deciliter{\r
-                dnam{"dl"}\r
-                one{"{0} dl"}\r
-                other{"{0} dl"}\r
-            }\r
             dessert-spoon{\r
                 dnam{"dsskei"}\r
                 one{"{0} dsskei"}\r
@@ -1932,91 +647,22 @@ nn{
             drop{\r
                 dnam{"drope"}\r
                 one{"{0} drope"}\r
-                other{"{0} drop"}\r
-            }\r
-            fluid-ounce{\r
-                dnam{"væskeunse"}\r
-                one{"{0} fl oz"}\r
-                other{"{0} fl oz"}\r
+                other{"{0} dråpe"}\r
             }\r
             fluid-ounce-imperial{\r
                 dnam{"britisk væskeunse"}\r
                 one{"{0} britisk væskeunse"}\r
                 other{"{0} britiske væskeunser"}\r
             }\r
-            gallon{\r
-                dnam{"gal"}\r
-                one{"{0} gal"}\r
-                other{"{0} gal"}\r
-                per{"{0}/gal"}\r
-            }\r
-            gallon-imperial{\r
-                dnam{"brit. gal"}\r
-                one{"{0} brit. gal"}\r
-                other{"{0} brit. gal"}\r
-                per{"{0}/brit. gal"}\r
-            }\r
-            hectoliter{\r
-                dnam{"hl"}\r
-                one{"{0} hl"}\r
-                other{"{0} hl"}\r
-            }\r
-            jigger{\r
-                dnam{"shot"}\r
-                one{"{0} shot"}\r
-                other{"{0} jigger"}\r
-            }\r
-            liter{\r
-                dnam{"liter"}\r
-                one{"{0} l"}\r
-                other{"{0} l"}\r
-                per{"{0}/l"}\r
-            }\r
-            megaliter{\r
-                dnam{"Ml"}\r
-                one{"{0} Ml"}\r
-                other{"{0} Ml"}\r
-            }\r
-            milliliter{\r
-                dnam{"ml"}\r
-                one{"{0} ml"}\r
-                other{"{0} ml"}\r
-            }\r
-            pinch{\r
-                dnam{"klype"}\r
-                one{"{0} klype"}\r
-                other{"{0} pinch"}\r
-            }\r
             pint{\r
-                dnam{"pint"}\r
                 one{"{0} pt"}\r
                 other{"{0} pt"}\r
             }\r
-            pint-metric{\r
-                dnam{"mpt"}\r
-                one{"{0} mpt"}\r
-                other{"{0} mpt"}\r
-            }\r
-            quart{\r
-                dnam{"qt"}\r
-                one{"{0} qt"}\r
-                other{"{0} qt"}\r
-            }\r
             quart-imperial{\r
                 dnam{"brit. quart"}\r
                 one{"{0} b. quart"}\r
                 other{"{0} b. quart"}\r
             }\r
-            tablespoon{\r
-                dnam{"ss"}\r
-                one{"{0} ss"}\r
-                other{"{0} ss"}\r
-            }\r
-            teaspoon{\r
-                dnam{"ts"}\r
-                one{"{0} ts"}\r
-                other{"{0} ts"}\r
-            }\r
         }\r
     }\r
 }\r
index a6eca3c..800191a 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no{\r
-    "%%ALIAS"{"nb"}\r
+    durationUnits{\r
+        hm{"h:mm"}\r
+        hms{"h:mm:ss"}\r
+        ms{"m:ss"}\r
+    }\r
+    units{\r
+        acceleration{\r
+            g-force{\r
+                dnam{"g-kraft"}\r
+                gender{"masculine"}\r
+                one{"{0} g-kraft"}\r
+                other{"{0} g-kraft"}\r
+            }\r
+            meter-per-square-second{\r
+                dnam{"meter per sekund²"}\r
+                gender{"masculine"}\r
+                one{"{0} meter per sekund²"}\r
+                other{"{0} meter per sekund²"}\r
+            }\r
+        }\r
+        angle{\r
+            arc-minute{\r
+                dnam{"bueminutter"}\r
+                one{"{0} bueminutt"}\r
+                other{"{0} bueminutter"}\r
+            }\r
+            arc-second{\r
+                dnam{"buesekunder"}\r
+                one{"{0} buesekund"}\r
+                other{"{0} buesekunder"}\r
+            }\r
+            degree{\r
+                dnam{"grader"}\r
+                one{"{0} grad"}\r
+                other{"{0} grader"}\r
+            }\r
+            radian{\r
+                dnam{"radianer"}\r
+                one{"{0} radian"}\r
+                other{"{0} radianer"}\r
+            }\r
+            revolution{\r
+                dnam{"omdreininger"}\r
+                one{"{0} omdreining"}\r
+                other{"{0} omdreininger"}\r
+            }\r
+        }\r
+        area{\r
+            acre{\r
+                dnam{"acre"}\r
+                gender{"masculine"}\r
+                one{"{0} acre"}\r
+                other{"{0} acre"}\r
+            }\r
+            hectare{\r
+                dnam{"hektar"}\r
+                gender{"neuter"}\r
+                one{"{0} hektar"}\r
+                other{"{0} hektar"}\r
+            }\r
+            square-centimeter{\r
+                dnam{"kvadratcentimeter"}\r
+                gender{"masculine"}\r
+                one{"{0} kvadratcentimeter"}\r
+                other{"{0} kvadratcentimeter"}\r
+                per{"{0} per kvadratcentimeter"}\r
+            }\r
+            square-foot{\r
+                dnam{"kvadratfot"}\r
+                gender{"masculine"}\r
+                one{"{0} kvadratfot"}\r
+                other{"{0} kvadratfot"}\r
+            }\r
+            square-inch{\r
+                dnam{"kvadrattommer"}\r
+                one{"{0} kvadrattomme"}\r
+                other{"{0} kvadrattommer"}\r
+                per{"{0} per kvadrattomme"}\r
+            }\r
+            square-kilometer{\r
+                dnam{"kvadratkilometer"}\r
+                gender{"masculine"}\r
+                one{"{0} kvadratkilometer"}\r
+                other{"{0} kvadratkilometer"}\r
+                per{"{0} per kvadratkilometer"}\r
+            }\r
+            square-meter{\r
+                dnam{"kvadratmeter"}\r
+                one{"{0} kvadratmeter"}\r
+                other{"{0} kvadratmeter"}\r
+                per{"{0} per kvadratmeter"}\r
+            }\r
+            square-mile{\r
+                dnam{"engelske kvadratmil"}\r
+                gender{"masculine"}\r
+                one{"{0} engelsk kvadratmil"}\r
+                other{"{0} engelske kvadratmil"}\r
+                per{"{0} per engelsk kvadratmil"}\r
+            }\r
+            square-yard{\r
+                dnam{"kvadratyard"}\r
+                one{"{0} kvadratyard"}\r
+                other{"{0} kvadratyard"}\r
+            }\r
+        }\r
+        compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
+            per{"{0} per {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                    masculine{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                    masculine{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kubikk{0}"}\r
+                    }\r
+                    masculine{\r
+                        _{"kubikk{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubikk{0}"}\r
+                    }\r
+                    masculine{\r
+                        _{"kubikk{0}"}\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        concentr{\r
+            karat{\r
+                dnam{"karat"}\r
+                one{"{0} karat"}\r
+                other{"{0} karat"}\r
+            }\r
+            milligram-ofglucose-per-deciliter{\r
+                dnam{"milligram per desiliter"}\r
+                one{"{0} milligram per desiliter"}\r
+                other{"{0} milligram per desiliter"}\r
+            }\r
+            millimole-per-liter{\r
+                dnam{"millimol per liter"}\r
+                one{"{0} millimol per liter"}\r
+                other{"{0} millimol per liter"}\r
+            }\r
+            percent{\r
+                dnam{"prosent"}\r
+                gender{"masculine"}\r
+                one{"{0} prosent"}\r
+                other{"{0} prosent"}\r
+            }\r
+            permille{\r
+                dnam{"promille"}\r
+                one{"{0} promille"}\r
+                other{"{0} promille"}\r
+            }\r
+            permillion{\r
+                dnam{"deler per million"}\r
+                one{"{0} del per million"}\r
+                other{"{0} deler per million"}\r
+            }\r
+            permyriad{\r
+                dnam{"promyriade"}\r
+                one{"{0} promyriade"}\r
+                other{"{0} promyriade"}\r
+            }\r
+        }\r
+        consumption{\r
+            liter-per-100-kilometer{\r
+                dnam{"liter per 100 kilometer"}\r
+                gender{"masculine"}\r
+                one{"{0} liter per 100 kilometer"}\r
+                other{"{0} liter per 100 kilometer"}\r
+            }\r
+            liter-per-kilometer{\r
+                dnam{"liter per kilometer"}\r
+                one{"{0} liter per kilometer"}\r
+                other{"{0} liter per kilometer"}\r
+            }\r
+            mile-per-gallon{\r
+                dnam{"engelske mil per gallon"}\r
+                gender{"masculine"}\r
+                one{"{0} engelsk mil per gallon"}\r
+                other{"{0} engelske mil per gallon"}\r
+            }\r
+            mile-per-gallon-imperial{\r
+                dnam{"engelske mil per britiske gallon"}\r
+                gender{"masculine"}\r
+                one{"{0} engelsk mil per britisk gallon"}\r
+                other{"{0} engelske mil per britiske gallon"}\r
+            }\r
+        }\r
+        coordinate{\r
+            dnam{"himmelretning"}\r
+            east{"{0} øst"}\r
+            north{"{0} nord"}\r
+            south{"{0} sør"}\r
+            west{"{0} vest"}\r
+        }\r
+        digital{\r
+            bit{\r
+                dnam{"bit"}\r
+                one{"{0} bit"}\r
+                other{"{0} bit"}\r
+            }\r
+            byte{\r
+                dnam{"byte"}\r
+                one{"{0} byte"}\r
+                other{"{0} byte"}\r
+            }\r
+            gigabit{\r
+                dnam{"gigabit"}\r
+                one{"{0} gigabit"}\r
+                other{"{0} gigabit"}\r
+            }\r
+            gigabyte{\r
+                dnam{"gigabyte"}\r
+                one{"{0} gigabyte"}\r
+                other{"{0} gigabyte"}\r
+            }\r
+            kilobit{\r
+                dnam{"kilobit"}\r
+                one{"{0} kilobit"}\r
+                other{"{0} kilobit"}\r
+            }\r
+            kilobyte{\r
+                dnam{"kilobyte"}\r
+                one{"{0} kilobyte"}\r
+                other{"{0} kilobyte"}\r
+            }\r
+            megabit{\r
+                dnam{"megabit"}\r
+                one{"{0} megabit"}\r
+                other{"{0} megabit"}\r
+            }\r
+            megabyte{\r
+                dnam{"megabyte"}\r
+                one{"{0} megabyte"}\r
+                other{"{0} megabyte"}\r
+            }\r
+            petabyte{\r
+                dnam{"petabyte"}\r
+                one{"{0} petabyte"}\r
+                other{"{0} petabyte"}\r
+            }\r
+            terabit{\r
+                dnam{"terabit"}\r
+                one{"{0} terabit"}\r
+                other{"{0} terabit"}\r
+            }\r
+            terabyte{\r
+                dnam{"terabyte"}\r
+                one{"{0} terabyte"}\r
+                other{"{0} terabyte"}\r
+            }\r
+        }\r
+        duration{\r
+            century{\r
+                dnam{"århundrer"}\r
+                one{"{0} århundre"}\r
+                other{"{0} århundrer"}\r
+            }\r
+            day{\r
+                dnam{"døgn"}\r
+                gender{"neuter"}\r
+                one{"{0} døgn"}\r
+                other{"{0} døgn"}\r
+                per{"{0} per døgn"}\r
+            }\r
+            decade{\r
+                dnam{"tiår"}\r
+                one{"{0} tiår"}\r
+                other{"{0} tiår"}\r
+            }\r
+            hour{\r
+                dnam{"timer"}\r
+                gender{"masculine"}\r
+                one{"{0} time"}\r
+                other{"{0} timer"}\r
+                per{"{0} per time"}\r
+            }\r
+            microsecond{\r
+                dnam{"mikrosekunder"}\r
+                one{"{0} mikrosekund"}\r
+                other{"{0} mikrosekunder"}\r
+            }\r
+            millisecond{\r
+                dnam{"millisekunder"}\r
+                one{"{0} millisekund"}\r
+                other{"{0} millisekunder"}\r
+            }\r
+            minute{\r
+                dnam{"minutter"}\r
+                gender{"neuter"}\r
+                one{"{0} minutt"}\r
+                other{"{0} minutter"}\r
+                per{"{0} per minutt"}\r
+            }\r
+            month{\r
+                dnam{"måneder"}\r
+                gender{"masculine"}\r
+                one{"{0} måned"}\r
+                other{"{0} måneder"}\r
+                per{"{0} per måned"}\r
+            }\r
+            nanosecond{\r
+                dnam{"nanosekunder"}\r
+                one{"{0} nanosekund"}\r
+                other{"{0} nanosekunder"}\r
+            }\r
+            second{\r
+                dnam{"sekunder"}\r
+                gender{"neuter"}\r
+                one{"{0} sekund"}\r
+                other{"{0} sekunder"}\r
+                per{"{0} per sekund"}\r
+            }\r
+            week{\r
+                dnam{"uker"}\r
+                gender{"masculine"}\r
+                one{"{0} uke"}\r
+                other{"{0} uker"}\r
+                per{"{0} per uke"}\r
+            }\r
+            year{\r
+                dnam{"år"}\r
+                gender{"neuter"}\r
+                one{"{0} år"}\r
+                other{"{0} år"}\r
+                per{"{0} per år"}\r
+            }\r
+        }\r
+        electric{\r
+            ampere{\r
+                dnam{"ampere"}\r
+                one{"{0} ampere"}\r
+                other{"{0} ampere"}\r
+            }\r
+            milliampere{\r
+                dnam{"milliampere"}\r
+                one{"{0} milliampere"}\r
+                other{"{0} milliampere"}\r
+            }\r
+            ohm{\r
+                dnam{"ohm"}\r
+                one{"{0} ohm"}\r
+                other{"{0} ohm"}\r
+            }\r
+            volt{\r
+                dnam{"volt"}\r
+                one{"{0} volt"}\r
+                other{"{0} volt"}\r
+            }\r
+        }\r
+        energy{\r
+            british-thermal-unit{\r
+                dnam{"British thermal unit"}\r
+            }\r
+            calorie{\r
+                dnam{"kalorier"}\r
+                one{"{0} kalori"}\r
+                other{"{0} kalorier"}\r
+            }\r
+            electronvolt{\r
+                dnam{"elektronvolt"}\r
+                one{"{0} elektronvolt"}\r
+                other{"{0} elektronvolt"}\r
+            }\r
+            foodcalorie{\r
+                dnam{"kalorier"}\r
+                gender{"masculine"}\r
+                one{"{0} kalori"}\r
+                other{"{0} kalorier"}\r
+            }\r
+            joule{\r
+                dnam{"joule"}\r
+                one{"{0} joule"}\r
+                other{"{0} joule"}\r
+            }\r
+            kilocalorie{\r
+                dnam{"kilokalorier"}\r
+                gender{"masculine"}\r
+                one{"{0} kilokalori"}\r
+                other{"{0} kilokalorier"}\r
+            }\r
+            kilojoule{\r
+                dnam{"kilojoule"}\r
+                one{"{0} kilojoule"}\r
+                other{"{0} kilojoule"}\r
+            }\r
+            kilowatt-hour{\r
+                dnam{"kilowattimer"}\r
+                one{"{0} kilowattime"}\r
+                other{"{0} kilowattimer"}\r
+            }\r
+            therm-us{\r
+                dnam{"therm"}\r
+                one{"{0} therm"}\r
+                other{"{0} therm"}\r
+            }\r
+        }\r
+        force{\r
+            newton{\r
+                dnam{"newton"}\r
+                one{"{0} newton"}\r
+                other{"{0} newton"}\r
+            }\r
+            pound-force{\r
+                dnam{"poundforce"}\r
+                one{"{0} poundforce"}\r
+                other{"{0} poundforce"}\r
+            }\r
+        }\r
+        frequency{\r
+            gigahertz{\r
+                dnam{"gigahertz"}\r
+                one{"{0} gigahertz"}\r
+                other{"{0} gigahertz"}\r
+            }\r
+            hertz{\r
+                dnam{"hertz"}\r
+                one{"{0} hertz"}\r
+                other{"{0} hertz"}\r
+            }\r
+            kilohertz{\r
+                dnam{"kilohertz"}\r
+                one{"{0} kilohertz"}\r
+                other{"{0} kilohertz"}\r
+            }\r
+            megahertz{\r
+                dnam{"megahertz"}\r
+                one{"{0} megahertz"}\r
+                other{"{0} megahertz"}\r
+            }\r
+        }\r
+        graphics{\r
+            dot{\r
+                dnam{"punkt"}\r
+                one{"{0} punkt"}\r
+                other{"{0} punkter"}\r
+            }\r
+            dot-per-centimeter{\r
+                dnam{"punkter per centimeter"}\r
+                one{"{0} punkt per centimeter"}\r
+                other{"{0} punkter per centimeter"}\r
+            }\r
+            dot-per-inch{\r
+                dnam{"punkter per tomme"}\r
+                one{"{0} punkt per tomme"}\r
+                other{"{0} punkter per tomme"}\r
+            }\r
+            em{\r
+                dnam{"gefirt"}\r
+                one{"{0} gefirt"}\r
+                other{"{0} gefirt"}\r
+            }\r
+            megapixel{\r
+                dnam{"megapiksler"}\r
+                one{"{0} megapiksel"}\r
+                other{"{0} megapiksler"}\r
+            }\r
+            pixel{\r
+                dnam{"piksler"}\r
+                one{"{0} piksel"}\r
+                other{"{0} piksler"}\r
+            }\r
+            pixel-per-centimeter{\r
+                dnam{"piksler per centimeter"}\r
+                one{"{0} piksel per centimeter"}\r
+                other{"{0} piksler per centimeter"}\r
+            }\r
+            pixel-per-inch{\r
+                dnam{"piksler per tomme"}\r
+                one{"{0} piksel per tomme"}\r
+                other{"{0} piksler per tomme"}\r
+            }\r
+        }\r
+        length{\r
+            astronomical-unit{\r
+                dnam{"astronomiske enheter"}\r
+                one{"{0} astronomisk enhet"}\r
+                other{"{0} astronomiske enheter"}\r
+            }\r
+            centimeter{\r
+                dnam{"centimeter"}\r
+                gender{"masculine"}\r
+                one{"{0} centimeter"}\r
+                other{"{0} centimeter"}\r
+                per{"{0} per centimeter"}\r
+            }\r
+            decimeter{\r
+                dnam{"desimeter"}\r
+                gender{"masculine"}\r
+                one{"{0} desimeter"}\r
+                other{"{0} desimeter"}\r
+            }\r
+            earth-radius{\r
+                dnam{"jordradius"}\r
+                one{"{0} jordradius"}\r
+                other{"{0} jordradier"}\r
+            }\r
+            fathom{\r
+                dnam{"favner"}\r
+                one{"{0} favn"}\r
+                other{"{0} favner"}\r
+            }\r
+            foot{\r
+                dnam{"fot"}\r
+                gender{"masculine"}\r
+                one{"{0} fot"}\r
+                other{"{0} fot"}\r
+                per{"{0} per fot"}\r
+            }\r
+            furlong{\r
+                dnam{"furlong"}\r
+                one{"{0} furlong"}\r
+                other{"{0} furlong"}\r
+            }\r
+            inch{\r
+                dnam{"tommer"}\r
+                gender{"masculine"}\r
+                one{"{0} tomme"}\r
+                other{"{0} tommer"}\r
+                per{"{0} per tomme"}\r
+            }\r
+            kilometer{\r
+                dnam{"kilometer"}\r
+                gender{"masculine"}\r
+                one{"{0} kilometer"}\r
+                other{"{0} kilometer"}\r
+                per{"{0} per kilometer"}\r
+            }\r
+            light-year{\r
+                dnam{"lysår"}\r
+                one{"{0} lysår"}\r
+                other{"{0} lysår"}\r
+            }\r
+            meter{\r
+                dnam{"meter"}\r
+                gender{"masculine"}\r
+                one{"{0} meter"}\r
+                other{"{0} meter"}\r
+                per{"{0} per meter"}\r
+            }\r
+            micrometer{\r
+                dnam{"mikrometer"}\r
+                one{"{0} mikrometer"}\r
+                other{"{0} mikrometer"}\r
+            }\r
+            mile{\r
+                dnam{"engelske mil"}\r
+                gender{"masculine"}\r
+                one{"{0} engelsk mil"}\r
+                other{"{0} engelske mil"}\r
+            }\r
+            mile-scandinavian{\r
+                dnam{"mil"}\r
+                gender{"masculine"}\r
+                one{"{0} mil"}\r
+                other{"{0} mil"}\r
+            }\r
+            millimeter{\r
+                dnam{"millimeter"}\r
+                gender{"masculine"}\r
+                one{"{0} millimeter"}\r
+                other{"{0} millimeter"}\r
+            }\r
+            nanometer{\r
+                dnam{"nanometer"}\r
+                one{"{0} nanometer"}\r
+                other{"{0} nanometer"}\r
+            }\r
+            nautical-mile{\r
+                dnam{"nautiske mil"}\r
+                one{"{0} nautisk mil"}\r
+                other{"{0} nautiske mil"}\r
+            }\r
+            parsec{\r
+                dnam{"parsec"}\r
+                gender{"masculine"}\r
+                one{"{0} parsec"}\r
+                other{"{0} parsec"}\r
+            }\r
+            picometer{\r
+                dnam{"pikometer"}\r
+                gender{"masculine"}\r
+                one{"{0} pikometer"}\r
+                other{"{0} pikometer"}\r
+            }\r
+            point{\r
+                dnam{"typografiske punkter"}\r
+                one{"{0} typografisk punkt"}\r
+                other{"{0} typografiske punkter"}\r
+            }\r
+            solar-radius{\r
+                dnam{"solradier"}\r
+                gender{"masculine"}\r
+                one{"{0} solradius"}\r
+                other{"{0} solradier"}\r
+            }\r
+            yard{\r
+                dnam{"yard"}\r
+                gender{"masculine"}\r
+                one{"{0} yard"}\r
+                other{"{0} yard"}\r
+            }\r
+        }\r
+        light{\r
+            candela{\r
+                dnam{"candela"}\r
+                one{"{0} candela"}\r
+                other{"{0} candela"}\r
+            }\r
+            lumen{\r
+                dnam{"lumen"}\r
+                one{"{0} lumen"}\r
+                other{"{0} lumen"}\r
+            }\r
+            lux{\r
+                dnam{"lux"}\r
+                one{"{0} lux"}\r
+                other{"{0} lux"}\r
+            }\r
+            solar-luminosity{\r
+                dnam{"solluminositet"}\r
+                gender{"masculine"}\r
+            }\r
+        }\r
+        mass{\r
+            carat{\r
+                dnam{"karat"}\r
+                one{"{0} karat"}\r
+                other{"{0} karat"}\r
+            }\r
+            dalton{\r
+                dnam{"dalton"}\r
+                gender{"masculine"}\r
+                one{"{0} dalton"}\r
+                other{"{0} dalton"}\r
+            }\r
+            earth-mass{\r
+                dnam{"jordmasser"}\r
+                gender{"masculine"}\r
+                one{"{0} jordmasse"}\r
+                other{"{0} jordmasser"}\r
+            }\r
+            grain{\r
+                gender{"neuter"}\r
+                one{"{0} grain"}\r
+                other{"{0} grain"}\r
+            }\r
+            gram{\r
+                dnam{"gram"}\r
+                gender{"neuter"}\r
+                one{"{0} gram"}\r
+                other{"{0} gram"}\r
+                per{"{0} per gram"}\r
+            }\r
+            kilogram{\r
+                dnam{"kilogram"}\r
+                gender{"neuter"}\r
+                one{"{0} kilogram"}\r
+                other{"{0} kilogram"}\r
+                per{"{0} per kilogram"}\r
+            }\r
+            metric-ton{\r
+                dnam{"tonn"}\r
+                one{"{0} tonn"}\r
+                other{"{0} tonn"}\r
+            }\r
+            microgram{\r
+                dnam{"mikrogram"}\r
+                one{"{0} mikrogram"}\r
+                other{"{0} mikrogram"}\r
+            }\r
+            milligram{\r
+                dnam{"milligram"}\r
+                gender{"neuter"}\r
+                one{"{0} milligram"}\r
+                other{"{0} milligram"}\r
+            }\r
+            ounce{\r
+                dnam{"unser"}\r
+                gender{"masculine"}\r
+                one{"{0} unse"}\r
+                other{"{0} unser"}\r
+                per{"{0} per unse"}\r
+            }\r
+            ounce-troy{\r
+                dnam{"troy ounce"}\r
+                one{"{0} troy ounce"}\r
+                other{"{0} troy ounce"}\r
+            }\r
+            pound{\r
+                dnam{"pund"}\r
+                gender{"neuter"}\r
+                one{"{0} pund"}\r
+                other{"{0} pund"}\r
+                per{"{0} per pund"}\r
+            }\r
+            solar-mass{\r
+                dnam{"solmasser"}\r
+                gender{"masculine"}\r
+                one{"{0} solmasse"}\r
+                other{"{0} solmasser"}\r
+            }\r
+            stone{\r
+                dnam{"stone"}\r
+                one{"{0} stone"}\r
+                other{"{0} stone"}\r
+            }\r
+            ton{\r
+                dnam{"amerikanske tonn"}\r
+                one{"{0} amerikansk tonn"}\r
+                other{"{0} amerikanske tonn"}\r
+            }\r
+        }\r
+        power{\r
+            gigawatt{\r
+                dnam{"gigawatt"}\r
+                one{"{0} gigawatt"}\r
+                other{"{0} gigawatt"}\r
+            }\r
+            horsepower{\r
+                dnam{"hestekrefter"}\r
+                one{"{0} hestekraft"}\r
+                other{"{0} hestekrefter"}\r
+            }\r
+            kilowatt{\r
+                dnam{"kilowatt"}\r
+                one{"{0} kilowatt"}\r
+                other{"{0} kilowatt"}\r
+            }\r
+            megawatt{\r
+                dnam{"megawatt"}\r
+                one{"{0} megawatt"}\r
+                other{"{0} megawatt"}\r
+            }\r
+            milliwatt{\r
+                dnam{"milliwatt"}\r
+                one{"{0} milliwatt"}\r
+                other{"{0} milliwatt"}\r
+            }\r
+            watt{\r
+                dnam{"watt"}\r
+                one{"{0} watt"}\r
+                other{"{0} watt"}\r
+            }\r
+        }\r
+        pressure{\r
+            atmosphere{\r
+                dnam{"atmosfærer"}\r
+                one{"{0} atmosfære"}\r
+                other{"{0} atmosfærer"}\r
+            }\r
+            hectopascal{\r
+                dnam{"hektopascal"}\r
+                one{"{0} hektopascal"}\r
+                other{"{0} hektopascal"}\r
+            }\r
+            inch-ofhg{\r
+                dnam{"tommer kvikksølv"}\r
+                one{"{0} tomme kvikksølv"}\r
+                other{"{0} tommer kvikksølv"}\r
+            }\r
+            kilopascal{\r
+                dnam{"kilopascal"}\r
+                gender{"masculine"}\r
+                one{"{0} kilopascal"}\r
+                other{"{0} kilopascal"}\r
+            }\r
+            megapascal{\r
+                dnam{"megapascal"}\r
+                one{"{0} megapascal"}\r
+                other{"{0} megapascal"}\r
+            }\r
+            millibar{\r
+                dnam{"millibar"}\r
+                one{"{0} millibar"}\r
+                other{"{0} millibar"}\r
+            }\r
+            millimeter-ofhg{\r
+                dnam{"millimeter kvikksølv"}\r
+                one{"{0} millimeter kvikksølv"}\r
+                other{"{0} millimeter kvikksølv"}\r
+            }\r
+            pascal{\r
+                dnam{"pascal"}\r
+                one{"{0} pascal"}\r
+                other{"{0} pascal"}\r
+            }\r
+            pound-force-per-square-inch{\r
+                dnam{"pund per kvadrattomme"}\r
+                one{"{0} pund per kvadrattomme"}\r
+                other{"{0} pund per kvadrattomme"}\r
+            }\r
+        }\r
+        speed{\r
+            kilometer-per-hour{\r
+                dnam{"kilometer per time"}\r
+                gender{"masculine"}\r
+                one{"{0} kilometer per time"}\r
+                other{"{0} kilometer per time"}\r
+            }\r
+            knot{\r
+                dnam{"knop"}\r
+                one{"{0} knop"}\r
+                other{"{0} knop"}\r
+            }\r
+            meter-per-second{\r
+                dnam{"meter per sekund"}\r
+                gender{"masculine"}\r
+                one{"{0} meter per sekund"}\r
+                other{"{0} meter per sekund"}\r
+            }\r
+            mile-per-hour{\r
+                dnam{"engelske mil per time"}\r
+                gender{"masculine"}\r
+                one{"{0} engelsk mil per time"}\r
+                other{"{0} engelske mil per time"}\r
+            }\r
+        }\r
+        temperature{\r
+            celsius{\r
+                dnam{"grader celsius"}\r
+                gender{"masculine"}\r
+                one{"{0} grad celsius"}\r
+                other{"{0} grader celsius"}\r
+            }\r
+            fahrenheit{\r
+                dnam{"grader fahrenheit"}\r
+                gender{"masculine"}\r
+                one{"{0} grad fahrenheit"}\r
+                other{"{0} grader fahrenheit"}\r
+            }\r
+            generic{\r
+                dnam{"grader"}\r
+                gender{"masculine"}\r
+                one{"{0} grad"}\r
+                other{"{0} grader"}\r
+            }\r
+            kelvin{\r
+                dnam{"kelvin"}\r
+                gender{"masculine"}\r
+                one{"{0} kelvin"}\r
+                other{"{0} kelvin"}\r
+            }\r
+        }\r
+        torque{\r
+            newton-meter{\r
+                dnam{"newtonmeter"}\r
+                one{"{0} Nm"}\r
+                other{"{0} Nm"}\r
+            }\r
+            pound-force-foot{\r
+                dnam{"pound-foot"}\r
+                one{"{0} pound-foot"}\r
+                other{"{0} pound-foot"}\r
+            }\r
+        }\r
+        volume{\r
+            acre-foot{\r
+                dnam{"acre-fot"}\r
+                one{"{0} acre-fot"}\r
+                other{"{0} acre-fot"}\r
+            }\r
+            barrel{\r
+                dnam{"fat"}\r
+                gender{"neuter"}\r
+                one{"{0} fat"}\r
+                other{"{0} fat"}\r
+            }\r
+            bushel{\r
+                dnam{"bushel"}\r
+                one{"{0} bushel"}\r
+                other{"{0} bushels"}\r
+            }\r
+            centiliter{\r
+                dnam{"centiliter"}\r
+                gender{"masculine"}\r
+                one{"{0} centiliter"}\r
+                other{"{0} centiliter"}\r
+            }\r
+            cubic-centimeter{\r
+                dnam{"kubikkcentimeter"}\r
+                gender{"masculine"}\r
+                one{"{0} kubikkcentimeter"}\r
+                other{"{0} kubikkcentimeter"}\r
+                per{"{0} per kubikkcentimeter"}\r
+            }\r
+            cubic-foot{\r
+                dnam{"kubikkfot"}\r
+                gender{"masculine"}\r
+                one{"{0} kubikkfot"}\r
+                other{"{0} kubikkfot"}\r
+            }\r
+            cubic-inch{\r
+                dnam{"kubikktommer"}\r
+                gender{"masculine"}\r
+                one{"{0} kubikktomme"}\r
+                other{"{0} kubikktommer"}\r
+            }\r
+            cubic-kilometer{\r
+                dnam{"kubikkilometer"}\r
+                gender{"masculine"}\r
+                one{"{0} kubikkilometer"}\r
+                other{"{0} kubikkilometer"}\r
+            }\r
+            cubic-meter{\r
+                dnam{"kubikkmeter"}\r
+                gender{"masculine"}\r
+                one{"{0} kubikkmeter"}\r
+                other{"{0} kubikkmeter"}\r
+                per{"{0} per kubikkmeter"}\r
+            }\r
+            cubic-mile{\r
+                dnam{"engelske kubikkmil"}\r
+                gender{"masculine"}\r
+                one{"{0} engelsk kubikkmil"}\r
+                other{"{0} engelske kubikkmil"}\r
+            }\r
+            cubic-yard{\r
+                dnam{"kubikkyard"}\r
+                one{"{0} kubikkyard"}\r
+                other{"{0} kubikkyard"}\r
+            }\r
+            cup{\r
+                dnam{"kopper"}\r
+                gender{"masculine"}\r
+                one{"{0} kopp"}\r
+                other{"{0} kopper"}\r
+            }\r
+            cup-metric{\r
+                dnam{"metriske kopper"}\r
+                gender{"masculine"}\r
+                one{"{0} metrisk kopp"}\r
+                other{"{0} metriske kopper"}\r
+            }\r
+            deciliter{\r
+                dnam{"desiliter"}\r
+                gender{"masculine"}\r
+                one{"{0} desiliter"}\r
+                other{"{0} desiliter"}\r
+            }\r
+            dessert-spoon{\r
+                dnam{"barneskje"}\r
+                gender{"masculine"}\r
+                one{"{0} barneskje"}\r
+                other{"{0} barneskjeer"}\r
+            }\r
+            dessert-spoon-imperial{\r
+                dnam{"britisk barneskje"}\r
+                gender{"masculine"}\r
+                one{"{0} britisk barneskje"}\r
+                other{"{0} britiske barneskjeer"}\r
+            }\r
+            dram{\r
+                dnam{"dram"}\r
+                gender{"masculine"}\r
+                one{"{0} dram"}\r
+                other{"{0} dram"}\r
+            }\r
+            drop{\r
+                dnam{"dråpe"}\r
+                gender{"masculine"}\r
+                one{"{0} dråpe"}\r
+                other{"{0} dråper"}\r
+            }\r
+            fluid-ounce{\r
+                dnam{"væskeunser"}\r
+                gender{"masculine"}\r
+                one{"{0} væskeunse"}\r
+                other{"{0} væskeunser"}\r
+            }\r
+            fluid-ounce-imperial{\r
+                dnam{"britiske væskeunser"}\r
+                gender{"masculine"}\r
+                one{"{0} britisk væskeunse"}\r
+                other{"{0} britiske væskeunser"}\r
+            }\r
+            gallon{\r
+                dnam{"gallon"}\r
+                gender{"masculine"}\r
+                one{"{0} gallon"}\r
+                other{"{0} gallon"}\r
+                per{"{0} per gallon"}\r
+            }\r
+            gallon-imperial{\r
+                dnam{"britiske gallon"}\r
+                gender{"masculine"}\r
+                one{"{0} britisk gallon"}\r
+                other{"{0} britiske gallon"}\r
+                per{"{0} per britisk gallon"}\r
+            }\r
+            hectoliter{\r
+                dnam{"hektoliter"}\r
+                gender{"masculine"}\r
+                one{"{0} hektoliter"}\r
+                other{"{0} hektoliter"}\r
+            }\r
+            jigger{\r
+                dnam{"shot"}\r
+                gender{"masculine"}\r
+                one{"{0} shot"}\r
+                other{"{0} shot"}\r
+            }\r
+            liter{\r
+                dnam{"liter"}\r
+                gender{"masculine"}\r
+                one{"{0} liter"}\r
+                other{"{0} liter"}\r
+                per{"{0} per liter"}\r
+            }\r
+            megaliter{\r
+                dnam{"megaliter"}\r
+                one{"{0} megaliter"}\r
+                other{"{0} megaliter"}\r
+            }\r
+            milliliter{\r
+                dnam{"milliliter"}\r
+                gender{"masculine"}\r
+                one{"{0} milliliter"}\r
+                other{"{0} milliliter"}\r
+            }\r
+            pinch{\r
+                dnam{"klype"}\r
+                gender{"masculine"}\r
+                one{"{0} klype"}\r
+                other{"{0} klyper"}\r
+            }\r
+            pint{\r
+                dnam{"pint"}\r
+                gender{"masculine"}\r
+                one{"{0} pint"}\r
+                other{"{0} pint"}\r
+            }\r
+            pint-metric{\r
+                dnam{"metriske pint"}\r
+                one{"{0} metrisk pint"}\r
+                other{"{0} metriske pint"}\r
+            }\r
+            quart{\r
+                dnam{"quart"}\r
+                gender{"masculine"}\r
+                one{"{0} quart"}\r
+                other{"{0} quart"}\r
+            }\r
+            quart-imperial{\r
+                dnam{"britisk quart"}\r
+                gender{"masculine"}\r
+                one{"{0} britisk quart"}\r
+                other{"{0} britiske quart"}\r
+            }\r
+            tablespoon{\r
+                dnam{"spiseskjeer"}\r
+                gender{"masculine"}\r
+                one{"{0} spiseskje"}\r
+                other{"{0} spiseskjeer"}\r
+            }\r
+            teaspoon{\r
+                dnam{"teskjeer"}\r
+                gender{"masculine"}\r
+                one{"{0} teskje"}\r
+                other{"{0} teskjeer"}\r
+            }\r
+        }\r
+    }\r
+    unitsNarrow{\r
+        acceleration{\r
+            g-force{\r
+                dnam{"G"}\r
+                one{"{0}G"}\r
+                other{"{0}G"}\r
+            }\r
+            meter-per-square-second{\r
+                one{"{0}m/s²"}\r
+                other{"{0}m/s²"}\r
+            }\r
+        }\r
+        angle{\r
+            arc-minute{\r
+                one{"{0}′"}\r
+                other{"{0}′"}\r
+            }\r
+            arc-second{\r
+                one{"{0}″"}\r
+                other{"{0}″"}\r
+            }\r
+            degree{\r
+                one{"{0}°"}\r
+                other{"{0}°"}\r
+            }\r
+        }\r
+        area{\r
+            acre{\r
+                one{"{0} ac"}\r
+                other{"{0} ac"}\r
+            }\r
+            hectare{\r
+                one{"{0}ha"}\r
+                other{"{0}ha"}\r
+            }\r
+            square-foot{\r
+                one{"{0}fot²"}\r
+                other{"{0}fot²"}\r
+            }\r
+            square-kilometer{\r
+                one{"{0}km²"}\r
+                other{"{0}km²"}\r
+            }\r
+            square-meter{\r
+                one{"{0}m²"}\r
+                other{"{0}m²"}\r
+            }\r
+            square-mile{\r
+                one{"{0} eng mil²"}\r
+                other{"{0} eng mil²"}\r
+            }\r
+        }\r
+        compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
+            per{"{0}/{1}"}\r
+        }\r
+        concentr{\r
+            percent{\r
+                dnam{"%"}\r
+                one{"{0} %"}\r
+                other{"{0} %"}\r
+            }\r
+        }\r
+        consumption{\r
+            liter-per-100-kilometer{\r
+                dnam{"l/100km"}\r
+                one{"{0} l/100km"}\r
+                other{"{0} l/100km"}\r
+            }\r
+        }\r
+        coordinate{\r
+            dnam{"retning"}\r
+            east{"{0}Ø"}\r
+            north{"{0}N"}\r
+            south{"{0}S"}\r
+            west{"{0}V"}\r
+        }\r
+        duration{\r
+            century{\r
+                dnam{"årh."}\r
+                one{"{0} årh."}\r
+                other{"{0} årh."}\r
+            }\r
+            day{\r
+                dnam{"døgn"}\r
+                one{"{0}d"}\r
+                other{"{0}d"}\r
+                per{"{0}/d"}\r
+            }\r
+            hour{\r
+                dnam{"time"}\r
+                one{"{0}t"}\r
+                other{"{0}t"}\r
+                per{"{0}/t"}\r
+            }\r
+            microsecond{\r
+                dnam{"μs"}\r
+                one{"{0}μs"}\r
+                other{"{0}μs"}\r
+            }\r
+            millisecond{\r
+                dnam{"ms"}\r
+                one{"{0}ms"}\r
+                other{"{0}ms"}\r
+            }\r
+            minute{\r
+                dnam{"min"}\r
+                one{"{0}m"}\r
+                other{"{0}m"}\r
+                per{"{0}/m"}\r
+            }\r
+            month{\r
+                dnam{"måned"}\r
+                one{"{0} m"}\r
+                other{"{0} m"}\r
+                per{"{0}/m"}\r
+            }\r
+            nanosecond{\r
+                dnam{"ns"}\r
+                one{"{0}ns"}\r
+                other{"{0}ns"}\r
+            }\r
+            second{\r
+                dnam{"sek"}\r
+                one{"{0}s"}\r
+                other{"{0}s"}\r
+                per{"{0}/s"}\r
+            }\r
+            week{\r
+                dnam{"uke"}\r
+                one{"{0}u"}\r
+                other{"{0}u"}\r
+                per{"{0}/u"}\r
+            }\r
+            year{\r
+                dnam{"år"}\r
+                one{"{0}å"}\r
+                other{"{0}å"}\r
+                per{"{0}/år"}\r
+            }\r
+        }\r
+        length{\r
+            astronomical-unit{\r
+                one{"{0}au"}\r
+                other{"{0}au"}\r
+            }\r
+            centimeter{\r
+                dnam{"cm"}\r
+                one{"{0}cm"}\r
+                other{"{0}cm"}\r
+            }\r
+            decimeter{\r
+                one{"{0}dm"}\r
+                other{"{0}dm"}\r
+            }\r
+            foot{\r
+                dnam{"fot"}\r
+                one{"{0} fot"}\r
+                other{"{0} fot"}\r
+            }\r
+            inch{\r
+                dnam{"to"}\r
+                one{"{0} tomme"}\r
+                other{"{0} tommer"}\r
+                per{"{0}to"}\r
+            }\r
+            kilometer{\r
+                dnam{"km"}\r
+                one{"{0}km"}\r
+                other{"{0}km"}\r
+            }\r
+            light-year{\r
+                one{"{0} lysår"}\r
+                other{"{0} lysår"}\r
+            }\r
+            meter{\r
+                dnam{"m"}\r
+                one{"{0}m"}\r
+                other{"{0}m"}\r
+            }\r
+            micrometer{\r
+                one{"{0}μm"}\r
+                other{"{0}μm"}\r
+            }\r
+            mile{\r
+                dnam{"mile"}\r
+                one{"{0} eng mil"}\r
+                other{"{0} eng mil"}\r
+            }\r
+            mile-scandinavian{\r
+                dnam{"mil"}\r
+                one{"{0}mil"}\r
+                other{"{0}mil"}\r
+            }\r
+            millimeter{\r
+                dnam{"mm"}\r
+                one{"{0}mm"}\r
+                other{"{0}mm"}\r
+            }\r
+            nanometer{\r
+                one{"{0}nm"}\r
+                other{"{0}nm"}\r
+            }\r
+            nautical-mile{\r
+                one{"{0}nmi"}\r
+                other{"{0}nmi"}\r
+            }\r
+            parsec{\r
+                one{"{0}pc"}\r
+                other{"{0}pc"}\r
+            }\r
+            picometer{\r
+                one{"{0}pm"}\r
+                other{"{0}pm"}\r
+            }\r
+            point{\r
+                one{"{0}pt"}\r
+                other{"{0}pt"}\r
+            }\r
+            yard{\r
+                one{"{0} yard"}\r
+                other{"{0} yard"}\r
+            }\r
+        }\r
+        mass{\r
+            gram{\r
+                dnam{"gram"}\r
+                one{"{0}g"}\r
+                other{"{0}g"}\r
+            }\r
+            kilogram{\r
+                dnam{"kg"}\r
+                one{"{0}kg"}\r
+                other{"{0}kg"}\r
+            }\r
+            metric-ton{\r
+                one{"{0}t"}\r
+                other{"{0}t"}\r
+            }\r
+            microgram{\r
+                one{"{0}μg"}\r
+                other{"{0}μg"}\r
+            }\r
+            milligram{\r
+                one{"{0}mg"}\r
+                other{"{0}mg"}\r
+            }\r
+            ounce{\r
+                dnam{"unse"}\r
+                one{"{0} unse"}\r
+                other{"{0} unser"}\r
+            }\r
+            pound{\r
+                dnam{"pund"}\r
+                one{"{0} pund"}\r
+                other{"{0} pund"}\r
+                per{"{0}/pund"}\r
+            }\r
+        }\r
+        power{\r
+            horsepower{\r
+                one{"{0}hk"}\r
+                other{"{0}hk"}\r
+            }\r
+            kilowatt{\r
+                one{"{0}kW"}\r
+                other{"{0}kW"}\r
+            }\r
+            watt{\r
+                one{"{0}W"}\r
+                other{"{0}W"}\r
+            }\r
+        }\r
+        pressure{\r
+            hectopascal{\r
+                one{"{0}hPa"}\r
+                other{"{0}hPa"}\r
+            }\r
+            inch-ofhg{\r
+                one{"{0}ʹʹ Hg"}\r
+                other{"{0}ʹʹ Hg"}\r
+            }\r
+            millibar{\r
+                one{"{0}mbar"}\r
+                other{"{0}mbar"}\r
+            }\r
+            millimeter-ofhg{\r
+                one{"{0}mmHg"}\r
+                other{"{0}mmHg"}\r
+            }\r
+            pound-force-per-square-inch{\r
+                one{"{0}psi"}\r
+                other{"{0}psi"}\r
+            }\r
+        }\r
+        speed{\r
+            kilometer-per-hour{\r
+                dnam{"km/t"}\r
+                one{"{0}km/t"}\r
+                other{"{0}km/t"}\r
+            }\r
+            knot{\r
+                one{"{0}kn"}\r
+                other{"{0}kn"}\r
+            }\r
+            meter-per-second{\r
+                one{"{0}m/s"}\r
+                other{"{0}m/s"}\r
+            }\r
+            mile-per-hour{\r
+                dnam{"mile/t"}\r
+                one{"{0} eng mil/t"}\r
+                other{"{0} eng mil/t"}\r
+            }\r
+        }\r
+        temperature{\r
+            celsius{\r
+                dnam{"°C"}\r
+                one{"{0} °C"}\r
+                other{"{0} °C"}\r
+            }\r
+            fahrenheit{\r
+                one{"{0}°F"}\r
+                other{"{0}°F"}\r
+            }\r
+            kelvin{\r
+                one{"{0}K"}\r
+                other{"{0}K"}\r
+            }\r
+        }\r
+        volume{\r
+            cubic-kilometer{\r
+                one{"{0}km³"}\r
+                other{"{0}km³"}\r
+            }\r
+            cubic-mile{\r
+                one{"{0} eng mil³"}\r
+                other{"{0} eng mil³"}\r
+            }\r
+            liter{\r
+                dnam{"l"}\r
+                one{"{0}l"}\r
+                other{"{0}l"}\r
+            }\r
+        }\r
+    }\r
+    unitsShort{\r
+        acceleration{\r
+            g-force{\r
+                dnam{"g-kraft"}\r
+                one{"{0} G"}\r
+                other{"{0} G"}\r
+            }\r
+            meter-per-square-second{\r
+                dnam{"meter/s²"}\r
+                one{"{0} m/s²"}\r
+                other{"{0} m/s²"}\r
+            }\r
+        }\r
+        angle{\r
+            arc-minute{\r
+                dnam{"bueminutter"}\r
+                one{"{0}′"}\r
+                other{"{0}′"}\r
+            }\r
+            arc-second{\r
+                dnam{"buesek"}\r
+                one{"{0}″"}\r
+                other{"{0}″"}\r
+            }\r
+            degree{\r
+                dnam{"grader"}\r
+                one{"{0}°"}\r
+                other{"{0}°"}\r
+            }\r
+            radian{\r
+                dnam{"radianer"}\r
+                one{"{0} rad"}\r
+                other{"{0} rad"}\r
+            }\r
+            revolution{\r
+                dnam{"omdr."}\r
+                one{"{0} omdr."}\r
+                other{"{0} omdr."}\r
+            }\r
+        }\r
+        area{\r
+            acre{\r
+                dnam{"acre"}\r
+                one{"{0} ac"}\r
+                other{"{0} ac"}\r
+            }\r
+            hectare{\r
+                dnam{"hektar"}\r
+                one{"{0} ha"}\r
+                other{"{0} ha"}\r
+            }\r
+            square-centimeter{\r
+                dnam{"cm²"}\r
+                one{"{0} cm²"}\r
+                other{"{0} cm²"}\r
+                per{"{0}/cm²"}\r
+            }\r
+            square-foot{\r
+                dnam{"kvadratfot"}\r
+                one{"{0} fot²"}\r
+                other{"{0} fot²"}\r
+            }\r
+            square-inch{\r
+                dnam{"tommer²"}\r
+                one{"{0} tomme²"}\r
+                other{"{0} tommer²"}\r
+                per{"{0}/tommer²"}\r
+            }\r
+            square-kilometer{\r
+                dnam{"km²"}\r
+                one{"{0} km²"}\r
+                other{"{0} km²"}\r
+                per{"{0}/km²"}\r
+            }\r
+            square-meter{\r
+                dnam{"m²"}\r
+                one{"{0} m²"}\r
+                other{"{0} m²"}\r
+                per{"{0}/m²"}\r
+            }\r
+            square-mile{\r
+                dnam{"miles²"}\r
+                one{"{0} mile²"}\r
+                other{"{0} miles²"}\r
+                per{"{0}/mile²"}\r
+            }\r
+            square-yard{\r
+                dnam{"yd²"}\r
+                one{"{0} yd²"}\r
+                other{"{0} yd²"}\r
+            }\r
+        }\r
+        compound{\r
+            1024p1{"Ki{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
+            per{"{0}/{1}"}\r
+        }\r
+        concentr{\r
+            karat{\r
+                dnam{"karat"}\r
+                one{"{0} kt"}\r
+                other{"{0} kt"}\r
+            }\r
+            milligram-ofglucose-per-deciliter{\r
+                dnam{"mg/dl"}\r
+                one{"{0} mg/dl"}\r
+                other{"{0} mg/dl"}\r
+            }\r
+            millimole-per-liter{\r
+                dnam{"mmol/liter"}\r
+                one{"{0} mmol/l"}\r
+                other{"{0} mmol/l"}\r
+            }\r
+            percent{\r
+                dnam{"prosent"}\r
+                one{"{0} %"}\r
+                other{"{0} %"}\r
+            }\r
+            permille{\r
+                dnam{"promille"}\r
+                one{"{0} ‰"}\r
+                other{"{0} ‰"}\r
+            }\r
+            permillion{\r
+                dnam{"ppm"}\r
+                one{"{0} ppm"}\r
+                other{"{0} ppm"}\r
+            }\r
+            permyriad{\r
+                dnam{"promyriade"}\r
+                one{"{0} ‱"}\r
+                other{"{0} ‱"}\r
+            }\r
+        }\r
+        consumption{\r
+            liter-per-100-kilometer{\r
+                dnam{"l/100 km"}\r
+                one{"{0} l/100 km"}\r
+                other{"{0} l/100 km"}\r
+            }\r
+            liter-per-kilometer{\r
+                dnam{"liter/km"}\r
+                one{"{0} l/km"}\r
+                other{"{0} l/km"}\r
+            }\r
+            mile-per-gallon{\r
+                dnam{"miles/gal"}\r
+                one{"{0} mpg"}\r
+                other{"{0} mpg"}\r
+            }\r
+            mile-per-gallon-imperial{\r
+                dnam{"miles/brit. gal"}\r
+                one{"{0} mpg brit."}\r
+                other{"{0} mpg brit."}\r
+            }\r
+        }\r
+        coordinate{\r
+            dnam{"retning"}\r
+            east{"{0} Ø"}\r
+            north{"{0} N"}\r
+            south{"{0} S"}\r
+            west{"{0} V"}\r
+        }\r
+        digital{\r
+            bit{\r
+                dnam{"bit"}\r
+                one{"{0} bit"}\r
+                other{"{0} bit"}\r
+            }\r
+            byte{\r
+                dnam{"byte"}\r
+                one{"{0} B"}\r
+                other{"{0} B"}\r
+            }\r
+            gigabit{\r
+                dnam{"Gbit"}\r
+                one{"{0} Gb"}\r
+                other{"{0} Gb"}\r
+            }\r
+            gigabyte{\r
+                dnam{"GB"}\r
+                one{"{0} GB"}\r
+                other{"{0} GB"}\r
+            }\r
+            kilobit{\r
+                dnam{"kbit"}\r
+                one{"{0} kb"}\r
+                other{"{0} kb"}\r
+            }\r
+            kilobyte{\r
+                dnam{"kB"}\r
+                one{"{0} kB"}\r
+                other{"{0} kB"}\r
+            }\r
+            megabit{\r
+                dnam{"Mbit"}\r
+                one{"{0} Mb"}\r
+                other{"{0} Mb"}\r
+            }\r
+            megabyte{\r
+                dnam{"MB"}\r
+                one{"{0} MB"}\r
+                other{"{0} MB"}\r
+            }\r
+            petabyte{\r
+                dnam{"PB"}\r
+                one{"{0} PB"}\r
+                other{"{0} PB"}\r
+            }\r
+            terabit{\r
+                dnam{"Tbit"}\r
+                one{"{0} Tb"}\r
+                other{"{0} Tb"}\r
+            }\r
+            terabyte{\r
+                dnam{"TB"}\r
+                one{"{0} TB"}\r
+                other{"{0} TB"}\r
+            }\r
+        }\r
+        duration{\r
+            century{\r
+                dnam{"årh."}\r
+                one{"{0} årh."}\r
+                other{"{0} årh."}\r
+            }\r
+            day{\r
+                dnam{"døgn"}\r
+                one{"{0} d"}\r
+                other{"{0} d"}\r
+                per{"{0}/d"}\r
+            }\r
+            decade{\r
+                dnam{"tiår"}\r
+                one{"{0} tiår"}\r
+                other{"{0} tiår"}\r
+            }\r
+            hour{\r
+                dnam{"timer"}\r
+                one{"{0} t"}\r
+                other{"{0} t"}\r
+                per{"{0}/t"}\r
+            }\r
+            microsecond{\r
+                dnam{"μs"}\r
+                one{"{0} μs"}\r
+                other{"{0} μs"}\r
+            }\r
+            millisecond{\r
+                dnam{"ms"}\r
+                one{"{0} ms"}\r
+                other{"{0} ms"}\r
+            }\r
+            minute{\r
+                dnam{"min"}\r
+                one{"{0} min"}\r
+                other{"{0} min"}\r
+                per{"{0}/min"}\r
+            }\r
+            month{\r
+                dnam{"måneder"}\r
+                one{"{0} md."}\r
+                other{"{0} md."}\r
+                per{"{0}/md."}\r
+            }\r
+            nanosecond{\r
+                dnam{"ns"}\r
+                one{"{0} ns"}\r
+                other{"{0} ns"}\r
+            }\r
+            second{\r
+                dnam{"sek"}\r
+                one{"{0} sek"}\r
+                other{"{0} sek"}\r
+                per{"{0}/s"}\r
+            }\r
+            week{\r
+                dnam{"uker"}\r
+                one{"{0} u"}\r
+                other{"{0} u"}\r
+                per{"{0}/u"}\r
+            }\r
+            year{\r
+                dnam{"år"}\r
+                one{"{0} år"}\r
+                other{"{0} år"}\r
+                per{"{0}/år"}\r
+            }\r
+        }\r
+        electric{\r
+            ampere{\r
+                dnam{"ampere"}\r
+                one{"{0} A"}\r
+                other{"{0} A"}\r
+            }\r
+            milliampere{\r
+                dnam{"milliampere"}\r
+                one{"{0} mA"}\r
+                other{"{0} mA"}\r
+            }\r
+            ohm{\r
+                dnam{"ohm"}\r
+                one{"{0} Ω"}\r
+                other{"{0} Ω"}\r
+            }\r
+            volt{\r
+                dnam{"volt"}\r
+                one{"{0} V"}\r
+                other{"{0} V"}\r
+            }\r
+        }\r
+        energy{\r
+            calorie{\r
+                dnam{"cal"}\r
+                one{"{0} cal"}\r
+                other{"{0} cal"}\r
+            }\r
+            electronvolt{\r
+                dnam{"elektronvolt"}\r
+                one{"{0} eV"}\r
+                other{"{0} eV"}\r
+            }\r
+            foodcalorie{\r
+                dnam{"cal"}\r
+                one{"{0} cal"}\r
+                other{"{0} cal"}\r
+            }\r
+            joule{\r
+                dnam{"joule"}\r
+                one{"{0} J"}\r
+                other{"{0} J"}\r
+            }\r
+            kilocalorie{\r
+                dnam{"kcal"}\r
+                one{"{0} kcal"}\r
+                other{"{0} kcal"}\r
+            }\r
+            kilojoule{\r
+                dnam{"kilojoule"}\r
+                one{"{0} kJ"}\r
+                other{"{0} kJ"}\r
+            }\r
+            kilowatt-hour{\r
+                dnam{"kWh"}\r
+                one{"{0} kWh"}\r
+                other{"{0} kWh"}\r
+            }\r
+            therm-us{\r
+                dnam{"therm"}\r
+                one{"{0} therm"}\r
+                other{"{0} therm"}\r
+            }\r
+        }\r
+        force{\r
+            newton{\r
+                dnam{"newton"}\r
+            }\r
+            pound-force{\r
+                dnam{"poundforce"}\r
+                one{"{0} lbf"}\r
+                other{"{0} lbf"}\r
+            }\r
+        }\r
+        frequency{\r
+            gigahertz{\r
+                dnam{"GHz"}\r
+                one{"{0} GHz"}\r
+                other{"{0} GHz"}\r
+            }\r
+            hertz{\r
+                dnam{"Hz"}\r
+                one{"{0} Hz"}\r
+                other{"{0} Hz"}\r
+            }\r
+            kilohertz{\r
+                dnam{"kHz"}\r
+                one{"{0} kHz"}\r
+                other{"{0} kHz"}\r
+            }\r
+            megahertz{\r
+                dnam{"MHz"}\r
+                one{"{0} MHz"}\r
+                other{"{0} MHz"}\r
+            }\r
+        }\r
+        graphics{\r
+            dot{\r
+                dnam{"pkt"}\r
+                one{"{0} pkt"}\r
+                other{"{0} pkt"}\r
+            }\r
+            dot-per-centimeter{\r
+                dnam{"dpcm"}\r
+            }\r
+            em{\r
+                dnam{"gefirt"}\r
+                one{"{0} gefirt"}\r
+                other{"{0} gefirt"}\r
+            }\r
+            megapixel{\r
+                dnam{"megapiksler"}\r
+                one{"{0} MP"}\r
+                other{"{0} MP"}\r
+            }\r
+            pixel{\r
+                dnam{"piksler"}\r
+                one{"{0} px"}\r
+                other{"{0} px"}\r
+            }\r
+            pixel-per-centimeter{\r
+                one{"{0} ppcm"}\r
+                other{"{0} ppcm"}\r
+            }\r
+            pixel-per-inch{\r
+                dnam{"ppi"}\r
+                one{"{0} ppi"}\r
+                other{"{0} ppi"}\r
+            }\r
+        }\r
+        length{\r
+            astronomical-unit{\r
+                dnam{"AU"}\r
+                one{"{0} AU"}\r
+                other{"{0} AU"}\r
+            }\r
+            centimeter{\r
+                dnam{"cm"}\r
+                one{"{0} cm"}\r
+                other{"{0} cm"}\r
+                per{"{0}/cm"}\r
+            }\r
+            decimeter{\r
+                dnam{"dm"}\r
+                one{"{0} dm"}\r
+                other{"{0} dm"}\r
+            }\r
+            fathom{\r
+                dnam{"favner"}\r
+                one{"{0} fm"}\r
+                other{"{0} fm"}\r
+            }\r
+            foot{\r
+                dnam{"fot"}\r
+                one{"{0} fot"}\r
+                other{"{0} fot"}\r
+                per{"{0}/fot"}\r
+            }\r
+            furlong{\r
+                dnam{"furlong"}\r
+                one{"{0} fur"}\r
+                other{"{0} fur"}\r
+            }\r
+            inch{\r
+                dnam{"tommer"}\r
+                one{"{0} tomme"}\r
+                other{"{0} tommer"}\r
+                per{"{0}/tomme"}\r
+            }\r
+            kilometer{\r
+                dnam{"km"}\r
+                one{"{0} km"}\r
+                other{"{0} km"}\r
+                per{"{0}/km"}\r
+            }\r
+            light-year{\r
+                dnam{"lysår"}\r
+                one{"{0} ly"}\r
+                other{"{0} ly"}\r
+            }\r
+            meter{\r
+                dnam{"meter"}\r
+                one{"{0} m"}\r
+                other{"{0} m"}\r
+                per{"{0}/m"}\r
+            }\r
+            micrometer{\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
+            }\r
+            mile{\r
+                dnam{"miles"}\r
+                one{"{0} mile"}\r
+                other{"{0} miles"}\r
+            }\r
+            mile-scandinavian{\r
+                dnam{"mil"}\r
+                one{"{0} mil"}\r
+                other{"{0} mil"}\r
+            }\r
+            millimeter{\r
+                dnam{"mm"}\r
+                one{"{0} mm"}\r
+                other{"{0} mm"}\r
+            }\r
+            nanometer{\r
+                dnam{"nm"}\r
+                one{"{0} nm"}\r
+                other{"{0} nm"}\r
+            }\r
+            nautical-mile{\r
+                dnam{"nmi"}\r
+                one{"{0} nmi"}\r
+                other{"{0} nmi"}\r
+            }\r
+            parsec{\r
+                dnam{"parsec"}\r
+                one{"{0} pc"}\r
+                other{"{0} pc"}\r
+            }\r
+            picometer{\r
+                dnam{"pm"}\r
+                one{"{0} pm"}\r
+                other{"{0} pm"}\r
+            }\r
+            point{\r
+                dnam{"punkter"}\r
+                one{"{0} pt"}\r
+                other{"{0} pt"}\r
+            }\r
+            solar-radius{\r
+                dnam{"solradius"}\r
+            }\r
+            yard{\r
+                dnam{"yard"}\r
+                one{"{0} yard"}\r
+                other{"{0} yard"}\r
+            }\r
+        }\r
+        light{\r
+            candela{\r
+                dnam{"cd"}\r
+                one{"{0} cd"}\r
+                other{"{0} cd"}\r
+            }\r
+            lumen{\r
+                dnam{"lm"}\r
+                one{"{0} lm"}\r
+                other{"{0} lm"}\r
+            }\r
+            lux{\r
+                dnam{"lux"}\r
+                one{"{0} lx"}\r
+                other{"{0} lx"}\r
+            }\r
+            solar-luminosity{\r
+                dnam{"solluminositet"}\r
+            }\r
+        }\r
+        mass{\r
+            carat{\r
+                dnam{"karat"}\r
+                one{"{0} c"}\r
+                other{"{0} c"}\r
+            }\r
+            dalton{\r
+                dnam{"dalton"}\r
+                one{"{0} Da"}\r
+                other{"{0} Da"}\r
+            }\r
+            earth-mass{\r
+                dnam{"jordmasser"}\r
+                one{"{0} M⊕"}\r
+                other{"{0} M⊕"}\r
+            }\r
+            gram{\r
+                dnam{"gram"}\r
+                one{"{0} g"}\r
+                other{"{0} g"}\r
+                per{"{0}/g"}\r
+            }\r
+            kilogram{\r
+                dnam{"kg"}\r
+                one{"{0} kg"}\r
+                other{"{0} kg"}\r
+                per{"{0}/kg"}\r
+            }\r
+            metric-ton{\r
+                dnam{"tonn"}\r
+                one{"{0} tonn"}\r
+                other{"{0} tonn"}\r
+            }\r
+            microgram{\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
+            }\r
+            milligram{\r
+                dnam{"mg"}\r
+                one{"{0} mg"}\r
+                other{"{0} mg"}\r
+            }\r
+            ounce{\r
+                dnam{"unser"}\r
+                one{"{0} unse"}\r
+                other{"{0} unser"}\r
+                per{"{0}/unse"}\r
+            }\r
+            ounce-troy{\r
+                dnam{"oz tr"}\r
+                one{"{0} oz tr"}\r
+                other{"{0} oz tr"}\r
+            }\r
+            pound{\r
+                dnam{"pund"}\r
+                one{"{0} pund"}\r
+                other{"{0} pund"}\r
+                per{"{0}/pund"}\r
+            }\r
+            solar-mass{\r
+                dnam{"solmasser"}\r
+                one{"{0} M☉"}\r
+                other{"{0} M☉"}\r
+            }\r
+            stone{\r
+                dnam{"stone"}\r
+            }\r
+            ton{\r
+                dnam{"am. tonn"}\r
+                one{"{0} am. tonn"}\r
+                other{"{0} am. tonn"}\r
+            }\r
+        }\r
+        power{\r
+            gigawatt{\r
+                dnam{"GW"}\r
+                one{"{0} GW"}\r
+                other{"{0} GW"}\r
+            }\r
+            horsepower{\r
+                dnam{"hk"}\r
+                one{"{0} hk"}\r
+                other{"{0} hk"}\r
+            }\r
+            kilowatt{\r
+                dnam{"kW"}\r
+                one{"{0} kW"}\r
+                other{"{0} kW"}\r
+            }\r
+            megawatt{\r
+                dnam{"MW"}\r
+                one{"{0} MW"}\r
+                other{"{0} MW"}\r
+            }\r
+            milliwatt{\r
+                dnam{"mW"}\r
+                one{"{0} mW"}\r
+                other{"{0} mW"}\r
+            }\r
+            watt{\r
+                dnam{"watt"}\r
+                one{"{0} W"}\r
+                other{"{0} W"}\r
+            }\r
+        }\r
+        pressure{\r
+            atmosphere{\r
+                dnam{"atm"}\r
+                one{"{0} atm"}\r
+                other{"{0} atm"}\r
+            }\r
+            bar{\r
+                one{"{0} bar"}\r
+                other{"{0} bar"}\r
+            }\r
+            hectopascal{\r
+                dnam{"hPa"}\r
+                one{"{0} hPa"}\r
+                other{"{0} hPa"}\r
+            }\r
+            inch-ofhg{\r
+                dnam{"inHg"}\r
+                one{"{0} inHg"}\r
+                other{"{0} inHg"}\r
+            }\r
+            millibar{\r
+                dnam{"mbar"}\r
+                one{"{0} mbar"}\r
+                other{"{0} mbar"}\r
+            }\r
+            millimeter-ofhg{\r
+                dnam{"mmHg"}\r
+                one{"{0} mmHg"}\r
+                other{"{0} mmHg"}\r
+            }\r
+            pascal{\r
+                one{"{0} Pa"}\r
+                other{"{0} Pa"}\r
+            }\r
+            pound-force-per-square-inch{\r
+                dnam{"psi"}\r
+                one{"{0} psi"}\r
+                other{"{0} psi"}\r
+            }\r
+        }\r
+        speed{\r
+            kilometer-per-hour{\r
+                dnam{"km/time"}\r
+                one{"{0} km/t"}\r
+                other{"{0} km/t"}\r
+            }\r
+            knot{\r
+                dnam{"kn"}\r
+                one{"{0} kn"}\r
+                other{"{0} kn"}\r
+            }\r
+            meter-per-second{\r
+                dnam{"meter/s"}\r
+                one{"{0} m/s"}\r
+                other{"{0} m/s"}\r
+            }\r
+            mile-per-hour{\r
+                dnam{"miles/t"}\r
+                one{"{0} mile/t"}\r
+                other{"{0} miles/t"}\r
+            }\r
+        }\r
+        temperature{\r
+            celsius{\r
+                dnam{"°C"}\r
+                one{"{0} °C"}\r
+                other{"{0} °C"}\r
+            }\r
+            fahrenheit{\r
+                dnam{"°F"}\r
+                one{"{0} °F"}\r
+                other{"{0} °F"}\r
+            }\r
+            generic{\r
+                dnam{"°"}\r
+                one{"{0}°"}\r
+                other{"{0}°"}\r
+            }\r
+            kelvin{\r
+                dnam{"K"}\r
+                one{"{0} K"}\r
+                other{"{0} K"}\r
+            }\r
+        }\r
+        torque{\r
+            newton-meter{\r
+                dnam{"Nm"}\r
+                one{"{0} Nm"}\r
+                other{"{0} Nm"}\r
+            }\r
+        }\r
+        volume{\r
+            acre-foot{\r
+                dnam{"acre-fot"}\r
+                one{"{0} ac-fot"}\r
+                other{"{0} ac-fot"}\r
+            }\r
+            barrel{\r
+                dnam{"fat"}\r
+                one{"{0} fat"}\r
+                other{"{0} fat"}\r
+            }\r
+            bushel{\r
+                dnam{"bushel"}\r
+                one{"{0} bu"}\r
+                other{"{0} bu"}\r
+            }\r
+            centiliter{\r
+                dnam{"cl"}\r
+                one{"{0} cl"}\r
+                other{"{0} cl"}\r
+            }\r
+            cubic-centimeter{\r
+                dnam{"cm³"}\r
+                one{"{0} cm³"}\r
+                other{"{0} cm³"}\r
+                per{"{0}/cm³"}\r
+            }\r
+            cubic-foot{\r
+                dnam{"fot³"}\r
+                one{"{0} fot³"}\r
+                other{"{0} fot³"}\r
+            }\r
+            cubic-inch{\r
+                dnam{"tommer³"}\r
+                one{"{0} tomme³"}\r
+                other{"{0} tommer³"}\r
+            }\r
+            cubic-kilometer{\r
+                dnam{"km³"}\r
+                one{"{0} km³"}\r
+                other{"{0} km³"}\r
+            }\r
+            cubic-meter{\r
+                dnam{"m³"}\r
+                one{"{0} m³"}\r
+                other{"{0} m³"}\r
+                per{"{0}/m³"}\r
+            }\r
+            cubic-mile{\r
+                dnam{"miles³"}\r
+                one{"{0} mile³"}\r
+                other{"{0} miles³"}\r
+            }\r
+            cubic-yard{\r
+                dnam{"yard³"}\r
+                one{"{0} yard³"}\r
+                other{"{0} yard³"}\r
+            }\r
+            cup{\r
+                dnam{"kopper"}\r
+                one{"{0} k"}\r
+                other{"{0} k"}\r
+            }\r
+            cup-metric{\r
+                dnam{"m. kopper"}\r
+                one{"{0} m. kopp"}\r
+                other{"{0} m. kopper"}\r
+            }\r
+            deciliter{\r
+                dnam{"dl"}\r
+                one{"{0} dl"}\r
+                other{"{0} dl"}\r
+            }\r
+            dessert-spoon{\r
+                dnam{"bs"}\r
+                one{"{0} bs"}\r
+                other{"{0} bs"}\r
+            }\r
+            dessert-spoon-imperial{\r
+                dnam{"imp. bs"}\r
+                one{"{0} imp. bs"}\r
+                other{"{0} imp. bs"}\r
+            }\r
+            dram{\r
+                dnam{"dram fluid"}\r
+                one{"{0} dram fl"}\r
+                other{"{0} dram fl"}\r
+            }\r
+            drop{\r
+                dnam{"dråpe"}\r
+                one{"{0} dråpe"}\r
+                other{"{0} dråpe"}\r
+            }\r
+            fluid-ounce{\r
+                dnam{"væskeunse"}\r
+                one{"{0} fl oz"}\r
+                other{"{0} fl oz"}\r
+            }\r
+            fluid-ounce-imperial{\r
+                dnam{"imp. fl oz"}\r
+                one{"{0} imp. fl oz"}\r
+                other{"{0} imp. fl oz"}\r
+            }\r
+            gallon{\r
+                dnam{"gal"}\r
+                one{"{0} gal"}\r
+                other{"{0} gal"}\r
+                per{"{0}/gal"}\r
+            }\r
+            gallon-imperial{\r
+                dnam{"brit. gal"}\r
+                one{"{0} brit. gal"}\r
+                other{"{0} brit. gal"}\r
+                per{"{0}/brit. gal"}\r
+            }\r
+            hectoliter{\r
+                dnam{"hl"}\r
+                one{"{0} hl"}\r
+                other{"{0} hl"}\r
+            }\r
+            jigger{\r
+                dnam{"shot"}\r
+                one{"{0} shot"}\r
+                other{"{0} shot"}\r
+            }\r
+            liter{\r
+                dnam{"liter"}\r
+                one{"{0} l"}\r
+                other{"{0} l"}\r
+                per{"{0}/l"}\r
+            }\r
+            megaliter{\r
+                dnam{"Ml"}\r
+                one{"{0} Ml"}\r
+                other{"{0} Ml"}\r
+            }\r
+            milliliter{\r
+                dnam{"ml"}\r
+                one{"{0} ml"}\r
+                other{"{0} ml"}\r
+            }\r
+            pinch{\r
+                dnam{"klype"}\r
+                one{"{0} klype"}\r
+                other{"{0} klype"}\r
+            }\r
+            pint{\r
+                dnam{"pint"}\r
+                one{"{0} pt"}\r
+                other{"{0} pt"}\r
+            }\r
+            pint-metric{\r
+                dnam{"mpt"}\r
+                one{"{0} mpt"}\r
+                other{"{0} mpt"}\r
+            }\r
+            quart{\r
+                dnam{"qt"}\r
+                one{"{0} qt"}\r
+                other{"{0} qt"}\r
+            }\r
+            quart-imperial{\r
+                dnam{"imp. quart"}\r
+                one{"{0} imp. quart"}\r
+                other{"{0} imp. quart"}\r
+            }\r
+            tablespoon{\r
+                dnam{"ss"}\r
+                one{"{0} ss"}\r
+                other{"{0} ss"}\r
+            }\r
+            teaspoon{\r
+                dnam{"ts"}\r
+                one{"{0} ts"}\r
+                other{"{0} ts"}\r
+            }\r
+        }\r
+    }\r
 }\r
index 40a8b61..312565f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no_NO{\r
-    "%%ALIAS"{"nb_NO"}\r
+    "%%ALIAS"{"no"}\r
 }\r
index 064058e..3c1f6ff 100644 (file)
@@ -105,7 +105,52 @@ or{
             }\r
         }\r
         compound{\r
+            1024p2{"mebi{0}"}\r
+            10p-1{"ଡେସି{0}"}\r
+            10p-12{"ପିକୋ{0}"}\r
+            10p-15{"ଫିମଟୋ{0}"}\r
+            10p-18{"ଅଟୋ{0}"}\r
+            10p-2{"ସେଣ୍ଟି{0}"}\r
+            10p-21{"ଜିପୋଟ{0}"}\r
+            10p-24{"ୟୋକଟ{0}"}\r
+            10p-3{"ମିଲି{0}"}\r
+            10p-6{"ମାଇକ୍ରୋ{0}"}\r
+            10p-9{"ନାନୋ{0}"}\r
+            10p1{"ଡେକା{0}"}\r
+            10p12{"ଟେରା{0}"}\r
+            10p15{"ପିଟା{0}"}\r
+            10p18{"ଏକ୍ସା{0}"}\r
+            10p2{"ହେକ୍ଟା{0}"}\r
+            10p21{"ଜିଟା{0}"}\r
+            10p24{"ୟୋଟା{0}"}\r
+            10p3{"କିଲୋ{0}"}\r
+            10p6{"ମେଗା{0}"}\r
+            10p9{"ଗିଗା{0}"}\r
             per{"{1} ପ୍ରତି {0}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"ସ୍କୋୟାର୍{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ସ୍କୋ{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"କ୍ୟୁବିକ୍ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"କ୍ୟୁ {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +158,7 @@ or{
                 one{"{0} କ୍ୟାରେଟ୍"}\r
                 other{"{0} କ୍ୟାରେଟ୍"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ମିଲିଗ୍ରାମ୍ ପ୍ରତି ଡେସିଲିଟର୍"}\r
                 one{"{0} ମିଲିଗ୍ରାମ୍ ପ୍ରତି ଡେସିଲିଟର୍"}\r
                 other{"{0} ମିଲିଗ୍ରାମ୍ ପ୍ରତି ଡେସିଲିଟର୍"}\r
@@ -873,6 +918,25 @@ or{
     }\r
     unitsNarrow{\r
         compound{\r
+            10p-1{"ଡେସି{0}"}\r
+            10p-12{"ପି{0}"}\r
+            10p-15{"ଫି{0}"}\r
+            10p-18{"ଅ{0}"}\r
+            10p-2{"ସେ{0}"}\r
+            10p-21{"ଜି{0}"}\r
+            10p-24{"ୟୋ{0}"}\r
+            10p-3{"ମି{0}"}\r
+            10p-9{"ନେ{0}"}\r
+            10p1{"ଡେ{0}"}\r
+            10p12{"ଟେ{0}"}\r
+            10p15{"ପି{0}"}\r
+            10p18{"ଏ{0}"}\r
+            10p2{"ହେ{0}"}\r
+            10p21{"ଜି{0}"}\r
+            10p24{"ୟୋ{0}"}\r
+            10p3{"କି{0}"}\r
+            10p6{"ମେ{0}"}\r
+            10p9{"ଗି{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1095,6 +1159,25 @@ or{
             }\r
         }\r
         compound{\r
+            10p-1{"ଡେ{0}"}\r
+            10p-12{"ପିକ{0}"}\r
+            10p-15{"ଫି.{0}"}\r
+            10p-18{"ଅ.{0}"}\r
+            10p-2{"ସେ.{0}"}\r
+            10p-21{"ଜିପ{0}"}\r
+            10p-24{"ୟୋକ{0}"}\r
+            10p-3{"ମି.{0}"}\r
+            10p-9{"ନେ.{0}"}\r
+            10p1{"ଡେକ{0}"}\r
+            10p12{"ଟେ.{0}"}\r
+            10p15{"ପି.{0}"}\r
+            10p18{"ଏ.{0}"}\r
+            10p2{"ହେ.{0}"}\r
+            10p21{"ଜି.{0}"}\r
+            10p24{"ୟୋ.{0}"}\r
+            10p3{"କି.{0}"}\r
+            10p6{"ମେ.{0}"}\r
+            10p9{"ଗି.{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1104,7 +1187,7 @@ or{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ମିଗ୍ରା/ଡେଲି"}\r
                 one{"{0} ମିଗ୍ରା/ଡେଲି"}\r
                 other{"{0} ମିଗ୍ରା/ଡେଲି"}\r
@@ -1437,9 +1520,9 @@ or{
                 per{"{0}/ମି"}\r
             }\r
             micrometer{\r
-                dnam{"µମିଟର୍"}\r
-                one{"{0} µମି"}\r
-                other{"{0} µମି"}\r
+                dnam{"μମିଟର୍"}\r
+                one{"{0} μମି"}\r
+                other{"{0} μମି"}\r
             }\r
             mile{\r
                 dnam{"ମାଇଲ୍"}\r
@@ -1532,9 +1615,9 @@ or{
                 other{"{0} ଟ"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"ମିଗ୍ରା"}\r
index 2a0b137..816f6bf 100644 (file)
@@ -105,7 +105,59 @@ pa{
             }\r
         }\r
         compound{\r
+            1024p1{"ਕੀਬੀ{0}"}\r
+            1024p2{"ਮੇਬੀ{0}"}\r
+            1024p3{"ਗੀਬੀ{0}"}\r
+            1024p4{"ਟੇਬੀ{0}"}\r
+            1024p5{"ਪੇਬੀ{0}"}\r
+            1024p6{"ਐਕਸਬੀ{0}"}\r
+            1024p7{"ਜ਼ੇਬੀ{0}"}\r
+            1024p8{"ਯੋਬ{0}"}\r
+            10p-1{"ਡੈਸੀ{0}"}\r
+            10p-12{"ਪਿਕੋ{0}"}\r
+            10p-15{"ਫੈਮਟੋ{0}"}\r
+            10p-18{"ਐੱਟੋ{0}"}\r
+            10p-2{"ਸੈਂਟੀ{0}"}\r
+            10p-21{"ਜ਼ੈਪਟੋ{0}"}\r
+            10p-24{"ਯੋਕਟੋ{0}"}\r
+            10p-3{"ਮਿਲੀ{0}"}\r
+            10p-6{"ਮਾਈਕ੍ਰੋ{0}"}\r
+            10p-9{"ਨੈਨੋ{0}"}\r
+            10p1{"ਡੇਕਾ{0}"}\r
+            10p12{"ਟੈਰਾ{0}"}\r
+            10p15{"ਪੇਟਾ{0}"}\r
+            10p18{"ਐਕਸਾ{0}"}\r
+            10p2{"ਹੈਕਟੋ{0}"}\r
+            10p21{"ਜ਼ੀਟਾ{0}"}\r
+            10p24{"ਯੋਟਾ{0}"}\r
+            10p3{"ਕਿਲੋ{0}"}\r
+            10p6{"ਮੈਗਾ{0}"}\r
+            10p9{"ਗੀਗਾ{0}"}\r
             per{"{0} ਪ੍ਰਤੀ {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"ਵਰਗ{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ਵਰਗ{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"ਘਣ{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ਘਣ{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ pa{
                 one{"{0} ਕੇਰਟ"}\r
                 other{"{0} ਕੇਰਟ"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ਮਿਲੀਗ੍ਰਾਮ ਪ੍ਰਤੀ ਡੈਸੀਲਿਟਰ"}\r
                 one{"{0} ਮਿਲੀਗ੍ਰਾਮ ਪ੍ਰਤੀ ਡੈਸੀਲਿਟਰ"}\r
                 other{"{0} ਮਿਲੀਗ੍ਰਾਮ ਪ੍ਰਤੀ ਡੈਸੀਲਿਟਰ"}\r
@@ -1053,7 +1105,58 @@ pa{
             }\r
         }\r
         compound{\r
+            1024p1{"ਕੀ{0}"}\r
+            1024p2{"ਮੀ{0}"}\r
+            1024p3{"ਗੀ{0}"}\r
+            1024p4{"ਟੀ{0}"}\r
+            1024p5{"ਪੀ{0}"}\r
+            1024p6{"ਈ{0}"}\r
+            1024p7{"ਜ਼ੀ{0}"}\r
+            1024p8{"ਯੀ{0}"}\r
+            10p-1{"ਡੈ.{0}"}\r
+            10p-12{"ਪਿ.{0}"}\r
+            10p-15{"ਫੈ.{0}"}\r
+            10p-18{"ਐੱ.{0}"}\r
+            10p-2{"ਸੈਂ.{0}"}\r
+            10p-21{"ਜ਼ੈ.{0}"}\r
+            10p-24{"ਯੋ.{0}"}\r
+            10p-3{"ਮਿ.{0}"}\r
+            10p-6{"ਮਾ.{0}"}\r
+            10p-9{"ਨੈ.{0}"}\r
+            10p1{"ਡੇ.{0}"}\r
+            10p15{"ਪੇਟਾ{0}"}\r
+            10p18{"ਐਕਸਾ{0}"}\r
+            10p2{"ਹੈ.{0}"}\r
+            10p21{"ਜ਼ੀਟਾ{0}"}\r
+            10p24{"ਯੋਟਾ{0}"}\r
+            10p3{"ਕਿ.{0}"}\r
+            10p6{"ਮੈ.{0}"}\r
+            10p9{"ਗੀਗਾ{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1299,8 +1402,8 @@ pa{
             }\r
             micrometer{\r
                 dnam{"ਮਾਇਕ੍ਰੋ. ਮੀ."}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"ਮੀਲ"}\r
@@ -1656,7 +1759,59 @@ pa{
             }\r
         }\r
         compound{\r
+            1024p1{"ਕੀ{0}"}\r
+            1024p2{"ਮੀ{0}"}\r
+            1024p3{"ਗੀ{0}"}\r
+            1024p4{"ਟੀ{0}"}\r
+            1024p5{"ਪੀ{0}"}\r
+            1024p6{"ਈ{0}"}\r
+            1024p7{"ਜ਼ੀ{0}"}\r
+            1024p8{"ਯੀ{0}"}\r
+            10p-1{"ਡੈ.{0}"}\r
+            10p-12{"ਪਿ.{0}"}\r
+            10p-15{"ਫੈ.{0}"}\r
+            10p-18{"ਐੱ.{0}"}\r
+            10p-2{"ਸੈਂ.{0}"}\r
+            10p-21{"ਜ਼ੈ.{0}"}\r
+            10p-24{"ਯੋ.{0}"}\r
+            10p-3{"ਮਿ.{0}"}\r
+            10p-6{"ਮਾ.{0}"}\r
+            10p-9{"ਨੈ.{0}"}\r
+            10p1{"ਡੇ.{0}"}\r
+            10p12{"ਟੈ.{0}"}\r
+            10p15{"ਪੇਟਾ{0}"}\r
+            10p18{"ਐਕਸਾ{0}"}\r
+            10p2{"ਹੈ.{0}"}\r
+            10p21{"ਜ਼ੀਟਾ{0}"}\r
+            10p24{"ਯੋਟਾ{0}"}\r
+            10p3{"ਕਿ.{0}"}\r
+            10p6{"ਮੈ.{0}"}\r
+            10p9{"ਗੀਗਾ{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1665,7 +1820,7 @@ pa{
                 one{"{0} ਕੇਰਟ"}\r
                 other{"{0} ਕੇਰਟ"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ਮਿ.ਗ੍ਰਾ./ਡੈ.ਲਿ."}\r
                 one{"{0}ਮਿਗ੍ਰਾ/ਡੈ.ਲਿ"}\r
                 other{"{0}ਮਿਗ੍ਰਾ/ਡੈ.ਲਿ"}\r
@@ -1959,12 +2114,12 @@ pa{
             }\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                one{"{0} dpcm"}\r
+                one{"{0} ppcm"}\r
                 other{"{0} dpcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                one{"{0} dpi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
             }\r
             em{\r
@@ -2051,8 +2206,8 @@ pa{
             }\r
             micrometer{\r
                 dnam{"ਮਾਈਕਰੋਮੀਟਰ"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"ਮੀਲ"}\r
@@ -2155,9 +2310,9 @@ pa{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"ਮਿ.ਗ੍ਰਾ."}\r
index 03469dc..ab33d3d 100644 (file)
@@ -105,7 +105,55 @@ pcm{
             }\r
         }\r
         compound{\r
+            1024p5{"Pébi{0}"}\r
+            1024p6{"Ẹ́ksbi{0}"}\r
+            1024p7{"Zébi{0}"}\r
+            1024p8{"Yóbẹ{0}"}\r
+            10p-1{"Dẹsí{0}"}\r
+            10p-12{"Pikó{0}"}\r
+            10p-15{"Fẹ́mto{0}"}\r
+            10p-18{"Áto{0}"}\r
+            10p-2{"Sẹ́ntí{0}"}\r
+            10p-21{"Zẹ́pto{0}"}\r
+            10p-24{"Yókto{0}"}\r
+            10p-3{"Mílí{0}"}\r
+            10p-6{"Maíkro{0}"}\r
+            10p-9{"Náno{0}"}\r
+            10p1{"Dẹ́ka{0}"}\r
+            10p12{"Tẹ́rá{0}"}\r
+            10p15{"Pẹ́tá{0}"}\r
+            10p18{"{0}Ẹ́ksa"}\r
+            10p2{"Hẹ́kto{0}"}\r
+            10p21{"Zẹ́ta{0}"}\r
+            10p24{"Yóta{0}"}\r
+            10p3{"Kíló{0}"}\r
+            10p6{"Mẹ́gá{0}"}\r
+            10p9{"Gíga{0}"}\r
             per{"{0} Fọ Ẹ́vri {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"Skwiá {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"Skwiá {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"Kúbík {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"Kúbík {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -114,7 +162,7 @@ pcm{
                 one{"{0} Karat"}\r
                 other{"{0} Karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"Mílígram-dẹm Fọ Ẹ́vrí Dẹsílíta"}\r
                 one{"{0} Mílígram Fọ Ẹ́vrí Dẹsílíta"}\r
                 other{"{0} Mílígram Fọ Ẹ́vrí Dẹsílíta"}\r
@@ -990,7 +1038,59 @@ pcm{
     }\r
     unitsNarrow{\r
         compound{\r
+            1024p1{"Kí{0}"}\r
+            1024p2{"Mím{0}"}\r
+            1024p3{"Gím{0}"}\r
+            1024p4{"Tím{0}"}\r
+            1024p5{"Pím{0}"}\r
+            1024p6{"Ẹím{0}"}\r
+            1024p7{"Zím{0}"}\r
+            1024p8{"Yím{0}"}\r
+            10p-1{"Dẹ{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"Fẹ́{0}"}\r
+            10p-18{"Á{0}"}\r
+            10p-2{"s{0}"}\r
+            10p-21{"Zẹ́{0}"}\r
+            10p-24{"Yó{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"Dẹ́{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"{0}Ẹ"}\r
+            10p2{"h{0}"}\r
+            10p21{"Zẹ́{0}"}\r
+            10p24{"Yó{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1210,7 +1310,59 @@ pcm{
             }\r
         }\r
         compound{\r
+            1024p1{"Kí{0}"}\r
+            1024p2{"Mím{0}"}\r
+            1024p3{"Gím{0}"}\r
+            1024p4{"Tím{0}"}\r
+            1024p5{"Pím{0}"}\r
+            1024p6{"Ẹím{0}"}\r
+            1024p7{"Zím{0}"}\r
+            1024p8{"Yím{0}"}\r
+            10p-1{"Dẹ{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"Fẹ́{0}"}\r
+            10p-18{"Á{0}"}\r
+            10p-2{"s{0}"}\r
+            10p-21{"Zẹ{0}"}\r
+            10p-24{"Yo{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"Dẹ́{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"{0}Ẹ"}\r
+            10p2{"h{0}"}\r
+            10p21{"Zẹ́{0}"}\r
+            10p24{"Yó{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1219,7 +1371,7 @@ pcm{
                 one{"{0} kar"}\r
                 other{"{0} kar"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1612,9 +1764,9 @@ pcm{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmíta"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmíta"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"Mails"}\r
@@ -1728,9 +1880,9 @@ pcm{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index c0f537e..8f505e5 100644 (file)
@@ -11,10 +11,50 @@ pl{
         acceleration{\r
             g-force{\r
                 dnam{"stała grawitacji"}\r
+                gender{"neuter"}\r
             }\r
             meter-per-square-second{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} metry na sekundę do kwadratu"}\r
+                        many{"{0} metrów na sekundę do kwadratu"}\r
+                        one{"{0} metr na sekundę do kwadratu"}\r
+                        other{"{0} metra na sekundę do kwadratu"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} metrom na sekundę do kwadratu"}\r
+                        many{"{0} metrom na sekundę do kwadratu"}\r
+                        one{"{0} metrowi na sekundę do kwadratu"}\r
+                        other{"{0} metra na sekundę do kwadratu"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} metrów na sekundę do kwadratu"}\r
+                        many{"{0} metrów na sekundę do kwadratu"}\r
+                        one{"{0} metra na sekundę do kwadratu"}\r
+                        other{"{0} metra na sekundę do kwadratu"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} metrami na sekundę do kwadratu"}\r
+                        many{"{0} metrami na sekundę do kwadratu"}\r
+                        one{"{0} metrem na sekundę do kwadratu"}\r
+                        other{"{0} metra na sekundę do kwadratu"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} metrach na sekundę do kwadratu"}\r
+                        many{"{0} metrach na sekundę do kwadratu"}\r
+                        one{"{0} metrze na sekundę do kwadratu"}\r
+                        other{"{0} metra na sekundę do kwadratu"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} metry na sekundę do kwadratu"}\r
+                        many{"{0} metrów na sekundę do kwadratu"}\r
+                        one{"{0} metrze na sekundę do kwadratu"}\r
+                        other{"{0} metra na sekundę do kwadratu"}\r
+                    }\r
+                }\r
                 dnam{"metry na sekundę do kwadratu"}\r
                 few{"{0} metry na sekundę do kwadratu"}\r
+                gender{"inanimate"}\r
                 many{"{0} metrów na sekundę do kwadratu"}\r
                 one{"{0} metr na sekundę do kwadratu"}\r
                 other{"{0} metra na sekundę do kwadratu"}\r
@@ -59,8 +99,47 @@ pl{
         }\r
         area{\r
             acre{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} akry"}\r
+                        many{"{0} akrów"}\r
+                        one{"{0} akr"}\r
+                        other{"{0} akra"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} akrom"}\r
+                        many{"{0} akrom"}\r
+                        one{"{0} akrowi"}\r
+                        other{"{0} akra"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} akrów"}\r
+                        many{"{0} akrów"}\r
+                        one{"{0} akra"}\r
+                        other{"{0} akra"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} akrami"}\r
+                        many{"{0} akrami"}\r
+                        one{"{0} akrem"}\r
+                        other{"{0} akra"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} akrach"}\r
+                        many{"{0} akrach"}\r
+                        one{"{0} akrze"}\r
+                        other{"{0} akra"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} akry"}\r
+                        many{"{0} akrów"}\r
+                        one{"{0} akrze"}\r
+                        other{"{0} akra"}\r
+                    }\r
+                }\r
                 dnam{"akry"}\r
                 few{"{0} akry"}\r
+                gender{"inanimate"}\r
                 many{"{0} akrów"}\r
                 one{"{0} akr"}\r
                 other{"{0} akra"}\r
@@ -73,23 +152,140 @@ pl{
                 other{"{0} dunama"}\r
             }\r
             hectare{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} hektary"}\r
+                        many{"{0} hektarów"}\r
+                        one{"{0} hektar"}\r
+                        other{"{0} hektara"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} hektarom"}\r
+                        many{"{0} hektarom"}\r
+                        one{"{0} hektarowi"}\r
+                        other{"{0} hektara"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} hektarów"}\r
+                        many{"{0} hektarów"}\r
+                        one{"{0} hektara"}\r
+                        other{"{0} hektara"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} hektarami"}\r
+                        many{"{0} hektarami"}\r
+                        one{"{0} hektarem"}\r
+                        other{"{0} hektara"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} hektarach"}\r
+                        many{"{0} hektarach"}\r
+                        one{"{0} hektarze"}\r
+                        other{"{0} hektara"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} hektary"}\r
+                        many{"{0} hektarów"}\r
+                        one{"{0} hektarze"}\r
+                        other{"{0} hektara"}\r
+                    }\r
+                }\r
                 dnam{"hektary"}\r
                 few{"{0} hektary"}\r
+                gender{"inanimate"}\r
                 many{"{0} hektarów"}\r
                 one{"{0} hektar"}\r
                 other{"{0} hektara"}\r
             }\r
             square-centimeter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} centymetry kwadratowe"}\r
+                        many{"{0} centymetrów kwadratowych"}\r
+                        one{"{0} centymetr kwadratowy"}\r
+                        other{"{0} centymetra kwadratowego"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} centymetrom kwadratowym"}\r
+                        many{"{0} centymetrom kwadratowym"}\r
+                        one{"{0} centymetrowi kwadratowemu"}\r
+                        other{"{0} centymetra kwadratowego"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} centymetrów kwadratowych"}\r
+                        many{"{0} centymetrów kwadratowych"}\r
+                        one{"{0} centymetra kwadratowego"}\r
+                        other{"{0} centymetra kwadratowego"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} centymetrami kwadratowymi"}\r
+                        many{"{0} centymetrami kwadratowymi"}\r
+                        one{"{0} centymetrem kwadratowym"}\r
+                        other{"{0} centymetra kwadratowego"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} centymetrach kwadratowych"}\r
+                        many{"{0} centymetrach kwadratowych"}\r
+                        one{"{0} centymetrze kwadratowym"}\r
+                        other{"{0} centymetra kwadratowego"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} centymetry kwadratowe"}\r
+                        many{"{0} centymetrów kwadratowych"}\r
+                        one{"{0} centymetrze kwadratowy"}\r
+                        other{"{0} centymetra kwadratowego"}\r
+                    }\r
+                }\r
                 dnam{"centymetry kwadratowe"}\r
                 few{"{0} centymetry kwadratowe"}\r
+                gender{"inanimate"}\r
                 many{"{0} centymetrów kwadratowych"}\r
                 one{"{0} centymetr kwadratowy"}\r
                 other{"{0} centymetra kwadratowego"}\r
                 per{"{0} na centymetr kwadratowy"}\r
             }\r
             square-foot{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} stopy kwadratowe"}\r
+                        many{"{0} stóp kwadratowych"}\r
+                        one{"{0} stopę kwadratową"}\r
+                        other{"{0} stopy kwadratowej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} stopom kwadratowym"}\r
+                        many{"{0} stopom kwadratowym"}\r
+                        one{"{0} stopie kwadratowej"}\r
+                        other{"{0} stopy kwadratowej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} stóp kwadratowych"}\r
+                        many{"{0} stóp kwadratowych"}\r
+                        one{"{0} stopy kwadratowej"}\r
+                        other{"{0} stopy kwadratowej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} stopami kwadratowymi"}\r
+                        many{"{0} stopami kwadratowymi"}\r
+                        one{"{0} stopą kwadratową"}\r
+                        other{"{0} stopy kwadratowej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} stopach kwadratowych"}\r
+                        many{"{0} stopach kwadratowych"}\r
+                        one{"{0} stopie kwadratowej"}\r
+                        other{"{0} stopy kwadratowej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} stopy kwadratowe"}\r
+                        many{"{0} stóp kwadratowych"}\r
+                        one{"{0} stopo kwadratowa"}\r
+                        other{"{0} stopy kwadratowej"}\r
+                    }\r
+                }\r
                 dnam{"stopy kwadratowe"}\r
                 few{"{0} stopy kwadratowe"}\r
+                gender{"feminine"}\r
                 many{"{0} stóp kwadratowych"}\r
                 one{"{0} stopa kwadratowa"}\r
                 other{"{0} stopy kwadratowej"}\r
@@ -103,8 +299,47 @@ pl{
                 per{"{0} na cal kwadratowy"}\r
             }\r
             square-kilometer{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} kilometry kwadratowe"}\r
+                        many{"{0} kilometrów kwadratowych"}\r
+                        one{"{0} kilometr kwadratowy"}\r
+                        other{"{0} kilometra kwadratowego"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kilometrom kwadratowym"}\r
+                        many{"{0} kilometrom kwadratowym"}\r
+                        one{"{0} kilometrowi kwadratowemu"}\r
+                        other{"{0} kilometra kwadratowego"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kilometrów kwadratowych"}\r
+                        many{"{0} kilometrów kwadratowych"}\r
+                        one{"{0} kilometra kwadratowego"}\r
+                        other{"{0} kilometra kwadratowego"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kilometrami kwadratowymi"}\r
+                        many{"{0} kilometrami kwadratowymi"}\r
+                        one{"{0} kilometrem kwadratowym"}\r
+                        other{"{0} kilometra kwadratowego"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kilometrach kwadratowych"}\r
+                        many{"{0} kilometrach kwadratowych"}\r
+                        one{"{0} kilometrze kwadratowym"}\r
+                        other{"{0} kilometra kwadratowego"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} kilometry kwadratowe"}\r
+                        many{"{0} kilometrów kwadratowych"}\r
+                        one{"{0} kilometrze kwadratowy"}\r
+                        other{"{0} kilometra kwadratowego"}\r
+                    }\r
+                }\r
                 dnam{"kilometry kwadratowe"}\r
                 few{"{0} kilometry kwadratowe"}\r
+                gender{"inanimate"}\r
                 many{"{0} kilometrów kwadratowych"}\r
                 one{"{0} kilometr kwadratowy"}\r
                 other{"{0} kilometra kwadratowego"}\r
@@ -119,8 +354,47 @@ pl{
                 per{"{0} na metr kwadratowy"}\r
             }\r
             square-mile{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} mile kwadratowe"}\r
+                        many{"{0} mil kwadratowych"}\r
+                        one{"{0} milę kwadratową"}\r
+                        other{"{0} mili kwadratowej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} milom kwadratowym"}\r
+                        many{"{0} milom kwadratowym"}\r
+                        one{"{0} mili kwadratowej"}\r
+                        other{"{0} mili kwadratowej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} mil kwadratowych"}\r
+                        many{"{0} mil kwadratowych"}\r
+                        one{"{0} mili kwadratowej"}\r
+                        other{"{0} mili kwadratowej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} milami kwadratowymi"}\r
+                        many{"{0} milami kwadratowymi"}\r
+                        one{"{0} milą kwadratową"}\r
+                        other{"{0} mili kwadratowej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} milach kwadratowych"}\r
+                        many{"{0} milach kwadratowych"}\r
+                        one{"{0} mili kwadratowej"}\r
+                        other{"{0} mili kwadratowej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} mile kwadratowe"}\r
+                        many{"{0} mil kwadratowych"}\r
+                        one{"{0} milo kwadratowa"}\r
+                        other{"{0} mili kwadratowej"}\r
+                    }\r
+                }\r
                 dnam{"mile kwadratowe"}\r
                 few{"{0} mile kwadratowe"}\r
+                gender{"feminine"}\r
                 many{"{0} mil kwadratowych"}\r
                 one{"{0} mila kwadratowa"}\r
                 other{"{0} mili kwadratowej"}\r
@@ -135,7 +409,271 @@ pl{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"jobi{0}"}\r
+            10p-1{"decy{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centy{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"jokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"jotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} na {1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0} kwadratowe"}\r
+                        accusative{"{0} kwadratowe"}\r
+                        dative{"{0} kwadratowym"}\r
+                        genitive{"{0} kwadratowych"}\r
+                        instrumental{"{0} kwadratowymi"}\r
+                        locative{"{0} kwadratowych"}\r
+                        vocative{"{0} kwadratowe"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} kwadratowe"}\r
+                        accusative{"{0} kwadratowe"}\r
+                        dative{"{0} kwadratowym"}\r
+                        genitive{"{0} kwadratowych"}\r
+                        instrumental{"{0} kwadratowymi"}\r
+                        locative{"{0} kwadratowych"}\r
+                        vocative{"{0} kwadratowe"}\r
+                    }\r
+                    inanimate{\r
+                        _{"{0} kwadratowe"}\r
+                        accusative{"{0} kwadratowe"}\r
+                        dative{"{0} kwadratowym"}\r
+                        genitive{"{0} kwadratowych"}\r
+                        instrumental{"{0} kwadratowymi"}\r
+                        locative{"{0} kwadratowych"}\r
+                        vocative{"{0} kwadratowe"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} kwadratowych"}\r
+                        accusative{"{0} kwadratowych"}\r
+                        dative{"{0} kwadratowym"}\r
+                        genitive{"{0} kwadratowych"}\r
+                        instrumental{"{0} kwadratowymi"}\r
+                        locative{"{0} kwadratowych"}\r
+                        vocative{"{0} kwadratowych"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} kwadratowych"}\r
+                        accusative{"{0} kwadratowych"}\r
+                        dative{"{0} kwadratowym"}\r
+                        genitive{"{0} kwadratowych"}\r
+                        instrumental{"{0} kwadratowymi"}\r
+                        locative{"{0} kwadratowych"}\r
+                        vocative{"{0} kwadratowych"}\r
+                    }\r
+                    inanimate{\r
+                        _{"{0} kwadratowych"}\r
+                        accusative{"{0} kwadratowych"}\r
+                        dative{"{0} kwadratowym"}\r
+                        genitive{"{0} kwadratowych"}\r
+                        instrumental{"{0} kwadratowymi"}\r
+                        locative{"{0} kwadratowych"}\r
+                        vocative{"{0} kwadratowych"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} kwadratowe"}\r
+                        accusative{"{0} kwadratowe"}\r
+                        dative{"{0} kwadratowemu"}\r
+                        genitive{"{0} kwadratowego"}\r
+                        instrumental{"{0} kwadratowym"}\r
+                        locative{"{0} kwadratowym"}\r
+                        vocative{"{0} kwadratowe"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} kwadratowa"}\r
+                        accusative{"{0} kwadratową"}\r
+                        dative{"{0} kwadratowej"}\r
+                        genitive{"{0} kwadratowej"}\r
+                        instrumental{"{0} kwadratową"}\r
+                        locative{"{0} kwadratowej"}\r
+                        vocative{"{0} kwadratowa"}\r
+                    }\r
+                    inanimate{\r
+                        _{"{0} kwadratowy"}\r
+                        accusative{"{0} kwadratowy"}\r
+                        dative{"{0} kwadratowemu"}\r
+                        genitive{"{0} kwadratowego"}\r
+                        instrumental{"{0} kwadratowym"}\r
+                        locative{"{0} kwadratowym"}\r
+                        vocative{"{0} kwadratowy"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} kwadratowego"}\r
+                        accusative{"{0} kwadratowego"}\r
+                        dative{"{0} kwadratowego"}\r
+                        genitive{"{0} kwadratowego"}\r
+                        instrumental{"{0} kwadratowego"}\r
+                        locative{"{0} kwadratowego"}\r
+                        vocative{"{0} kwadratowego"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} kwadratowej"}\r
+                        accusative{"{0} kwadratowej"}\r
+                        dative{"{0} kwadratowej"}\r
+                        genitive{"{0} kwadratowej"}\r
+                        instrumental{"{0} kwadratowej"}\r
+                        locative{"{0} kwadratowej"}\r
+                        vocative{"{0} kwadratowej"}\r
+                    }\r
+                    inanimate{\r
+                        _{"{0} kwadratowego"}\r
+                        accusative{"{0} kwadratowego"}\r
+                        dative{"{0} kwadratowego"}\r
+                        genitive{"{0} kwadratowego"}\r
+                        instrumental{"{0} kwadratowego"}\r
+                        locative{"{0} kwadratowego"}\r
+                        vocative{"{0} kwadratowego"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0} sześcienne"}\r
+                        accusative{"{0} sześcienne"}\r
+                        dative{"{0} sześciennym"}\r
+                        genitive{"{0} sześciennych"}\r
+                        instrumental{"{0} sześciennymi"}\r
+                        locative{"{0} sześciennych"}\r
+                        vocative{"{0} sześcienne"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} sześcienne"}\r
+                        accusative{"{0} sześcienne"}\r
+                        dative{"{0} sześciennym"}\r
+                        genitive{"{0} sześciennych"}\r
+                        instrumental{"{0} sześciennymi"}\r
+                        locative{"{0} sześciennych"}\r
+                        vocative{"{0} sześcienne"}\r
+                    }\r
+                    inanimate{\r
+                        _{"{0} sześcienne"}\r
+                        accusative{"{0} sześcienne"}\r
+                        dative{"{0} sześciennym"}\r
+                        genitive{"{0} sześciennych"}\r
+                        instrumental{"{0} sześciennymi"}\r
+                        locative{"{0} sześciennych"}\r
+                        vocative{"{0} sześcienne"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0} sześciennych"}\r
+                        accusative{"{0} sześciennych"}\r
+                        dative{"{0} sześciennym"}\r
+                        genitive{"{0} sześciennych"}\r
+                        instrumental{"{0} sześciennymi"}\r
+                        locative{"{0} sześciennych"}\r
+                        vocative{"{0} sześciennych"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} sześciennych"}\r
+                        accusative{"{0} sześciennych"}\r
+                        dative{"{0} sześciennym"}\r
+                        genitive{"{0} sześciennych"}\r
+                        instrumental{"{0} sześciennymi"}\r
+                        locative{"{0} sześciennych"}\r
+                        vocative{"{0} sześciennych"}\r
+                    }\r
+                    inanimate{\r
+                        _{"{0} sześciennych"}\r
+                        accusative{"{0} sześciennych"}\r
+                        dative{"{0} sześciennym"}\r
+                        genitive{"{0} sześciennych"}\r
+                        instrumental{"{0} sześciennymi"}\r
+                        locative{"{0} sześciennych"}\r
+                        vocative{"{0} sześciennych"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} sześcienne"}\r
+                        accusative{"{0} sześcienne"}\r
+                        dative{"{0} sześciennemu"}\r
+                        genitive{"{0} sześciennego"}\r
+                        instrumental{"{0} sześciennym"}\r
+                        locative{"{0} sześciennym"}\r
+                        vocative{"{0} sześcienne"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} sześcienna"}\r
+                        accusative{"{0} sześcienną"}\r
+                        dative{"{0} sześciennej"}\r
+                        genitive{"{0} sześciennej"}\r
+                        instrumental{"{0} sześcienną"}\r
+                        locative{"{0} sześciennej"}\r
+                        vocative{"{0} sześcienna"}\r
+                    }\r
+                    inanimate{\r
+                        _{"{0} sześcienny"}\r
+                        accusative{"{0} sześcienny"}\r
+                        dative{"{0} sześciennemu"}\r
+                        genitive{"{0} sześciennego"}\r
+                        instrumental{"{0} sześciennym"}\r
+                        locative{"{0} sześciennym"}\r
+                        vocative{"{0} sześcienny"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} sześciennego"}\r
+                        accusative{"{0} sześciennego"}\r
+                        dative{"{0} sześciennego"}\r
+                        genitive{"{0} sześciennego"}\r
+                        instrumental{"{0} sześciennego"}\r
+                        locative{"{0} sześciennego"}\r
+                        vocative{"{0} sześciennego"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} sześciennej"}\r
+                        accusative{"{0} sześciennej"}\r
+                        dative{"{0} sześciennej"}\r
+                        genitive{"{0} sześciennej"}\r
+                        instrumental{"{0} sześciennej"}\r
+                        locative{"{0} sześciennej"}\r
+                        vocative{"{0} sześciennej"}\r
+                    }\r
+                    inanimate{\r
+                        _{"{0} sześciennego"}\r
+                        accusative{"{0} sześciennego"}\r
+                        dative{"{0} sześciennego"}\r
+                        genitive{"{0} sześciennego"}\r
+                        instrumental{"{0} sześciennego"}\r
+                        locative{"{0} sześciennego"}\r
+                        vocative{"{0} sześciennego"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -145,7 +683,7 @@ pl{
                 one{"{0} karat"}\r
                 other{"{0} karata"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramy na decylitr"}\r
                 few{"{0} miligramy na decylitr"}\r
                 many{"{0} miligramów na decylitr"}\r
@@ -167,8 +705,47 @@ pl{
                 other{"{0} mola"}\r
             }\r
             percent{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} procent"}\r
+                        many{"{0} procent"}\r
+                        one{"{0} procent"}\r
+                        other{"{0} procent"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} procentom"}\r
+                        many{"{0} procentom"}\r
+                        one{"{0} procentowi"}\r
+                        other{"{0} procent"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} procent"}\r
+                        many{"{0} procent"}\r
+                        one{"{0} procentu"}\r
+                        other{"{0} procent"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} procentami"}\r
+                        many{"{0} procentami"}\r
+                        one{"{0} procentem"}\r
+                        other{"{0} procent"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} procentach"}\r
+                        many{"{0} procentach"}\r
+                        one{"{0} procencie"}\r
+                        other{"{0} procent"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} procent"}\r
+                        many{"{0} procent"}\r
+                        one{"{0} procencie"}\r
+                        other{"{0} procent"}\r
+                    }\r
+                }\r
                 dnam{"procent"}\r
                 few{"{0} procent"}\r
+                gender{"inanimate"}\r
                 many{"{0} procent"}\r
                 one{"{0} procent"}\r
                 other{"{0} procent"}\r
@@ -197,8 +774,47 @@ pl{
         }\r
         consumption{\r
             liter-per-100-kilometer{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} litry na 100 kilometrów"}\r
+                        many{"{0} litrów na 100 kilometrów"}\r
+                        one{"{0} litr na 100 kilometrów"}\r
+                        other{"{0} litra na 100 kilometrów"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} litrom na 100 kilometrów"}\r
+                        many{"{0} litrom na 100 kilometrów"}\r
+                        one{"{0} litrowi na 100 kilometrów"}\r
+                        other{"{0} litra na 100 kilometrów"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} litrów na 100 kilometrów"}\r
+                        many{"{0} litrów na 100 kilometrów"}\r
+                        one{"{0} litra na 100 kilometrów"}\r
+                        other{"{0} litra na 100 kilometrów"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} litrami na 100 kilometrów"}\r
+                        many{"{0} litrami na 100 kilometrów"}\r
+                        one{"{0} litrem na 100 kilometrów"}\r
+                        other{"{0} litra na 100 kilometrów"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} litrach na 100 kilometrów"}\r
+                        many{"{0} litrach na 100 kilometrów"}\r
+                        one{"{0} litrze na 100 kilometrów"}\r
+                        other{"{0} litra na 100 kilometrów"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} litry na 100 kilometrów"}\r
+                        many{"{0} litrów na 100 kilometrów"}\r
+                        one{"{0} litrze na 100 kilometrów"}\r
+                        other{"{0} litra na 100 kilometrów"}\r
+                    }\r
+                }\r
                 dnam{"litry na 100 kilometrów"}\r
                 few{"{0} litry na 100 kilometrów"}\r
+                gender{"inanimate"}\r
                 many{"{0} litrów na 100 kilometrów"}\r
                 one{"{0} litr na 100 kilometrów"}\r
                 other{"{0} litra na 100 kilometrów"}\r
@@ -211,15 +827,93 @@ pl{
                 other{"{0} litra na kilometr"}\r
             }\r
             mile-per-gallon{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} mile na galon"}\r
+                        many{"{0} mil na galon"}\r
+                        one{"{0} milę na galon"}\r
+                        other{"{0} mili na galon"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} milom na galon"}\r
+                        many{"{0} milom na galon"}\r
+                        one{"{0} mili na galon"}\r
+                        other{"{0} mili na galon"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} mil na galon"}\r
+                        many{"{0} mil na galon"}\r
+                        one{"{0} mili na galon"}\r
+                        other{"{0} mili na galon"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} milami na galon"}\r
+                        many{"{0} milami na galon"}\r
+                        one{"{0} milą na galon"}\r
+                        other{"{0} mili na galon"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} milach na galon"}\r
+                        many{"{0} milach na galon"}\r
+                        one{"{0} mili na galon"}\r
+                        other{"{0} mili na galon"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} mile na galon"}\r
+                        many{"{0} mil na galon"}\r
+                        one{"{0} milo na galon"}\r
+                        other{"{0} mili na galon"}\r
+                    }\r
+                }\r
                 dnam{"mile na galon"}\r
                 few{"{0} mile na galon"}\r
+                gender{"feminine"}\r
                 many{"{0} mil na galon"}\r
                 one{"{0} mila na galon"}\r
                 other{"{0} mili na galon"}\r
             }\r
             mile-per-gallon-imperial{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} mile na galon angielski"}\r
+                        many{"{0} mil na galon angielski"}\r
+                        one{"{0} milę na galon angielski"}\r
+                        other{"{0} mili na galon angielski"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} milom na galon angielski"}\r
+                        many{"{0} milom na galon angielski"}\r
+                        one{"{0} mili na galon angielski"}\r
+                        other{"{0} mili na galon angielski"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} mil na galon angielski"}\r
+                        many{"{0} mil na galon angielski"}\r
+                        one{"{0} mili na galon angielski"}\r
+                        other{"{0} mili na galon angielski"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} milami na galon angielski"}\r
+                        many{"{0} milami na galon angielski"}\r
+                        one{"{0} milą na galon angielski"}\r
+                        other{"{0} mili na galon angielski"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} milach na galon angielski"}\r
+                        many{"{0} milach na galon angielski"}\r
+                        one{"{0} mili na galon angielski"}\r
+                        other{"{0} mili na galon angielski"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} mile na galon angielski"}\r
+                        many{"{0} mil na galon angielski"}\r
+                        one{"{0} milo na galon angielski"}\r
+                        other{"{0} mili na galon angielski"}\r
+                    }\r
+                }\r
                 dnam{"mile na galon angielski"}\r
                 few{"{0} mile na galon angielski"}\r
+                gender{"feminine"}\r
                 many{"{0} mil na galon angielski"}\r
                 one{"{0} mila na galon angielski"}\r
                 other{"{0} mili na galon angielski"}\r
@@ -320,8 +1014,47 @@ pl{
                 other{"{0} wieku"}\r
             }\r
             day{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} doby"}\r
+                        many{"{0} dób"}\r
+                        one{"{0} dobę"}\r
+                        other{"{0} doby"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} dobom"}\r
+                        many{"{0} dobom"}\r
+                        one{"{0} dobie"}\r
+                        other{"{0} doby"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} dób"}\r
+                        many{"{0} dób"}\r
+                        one{"{0} doby"}\r
+                        other{"{0} doby"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} dobami"}\r
+                        many{"{0} dobami"}\r
+                        one{"{0} dobą"}\r
+                        other{"{0} doby"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} dobach"}\r
+                        many{"{0} dobach"}\r
+                        one{"{0} dobie"}\r
+                        other{"{0} doby"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} doby"}\r
+                        many{"{0} dób"}\r
+                        one{"{0} dobo"}\r
+                        other{"{0} doby"}\r
+                    }\r
+                }\r
                 dnam{"doby"}\r
                 few{"{0} doby"}\r
+                gender{"feminine"}\r
                 many{"{0} dób"}\r
                 one{"{0} doba"}\r
                 other{"{0} doby"}\r
@@ -335,8 +1068,47 @@ pl{
                 other{"{0} dekady"}\r
             }\r
             hour{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} godziny"}\r
+                        many{"{0} godzin"}\r
+                        one{"{0} godzinę"}\r
+                        other{"{0} godziny"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} godzinom"}\r
+                        many{"{0} godzinom"}\r
+                        one{"{0} godzinie"}\r
+                        other{"{0} godziny"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} godzin"}\r
+                        many{"{0} godzin"}\r
+                        one{"{0} godziny"}\r
+                        other{"{0} godziny"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} godzinami"}\r
+                        many{"{0} godzinami"}\r
+                        one{"{0} godziną"}\r
+                        other{"{0} godziny"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} godzinach"}\r
+                        many{"{0} godzinach"}\r
+                        one{"{0} godzinie"}\r
+                        other{"{0} godziny"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} godziny"}\r
+                        many{"{0} godzin"}\r
+                        one{"{0} godzino"}\r
+                        other{"{0} godziny"}\r
+                    }\r
+                }\r
                 dnam{"godziny"}\r
                 few{"{0} godziny"}\r
+                gender{"feminine"}\r
                 many{"{0} godzin"}\r
                 one{"{0} godzina"}\r
                 other{"{0} godziny"}\r
@@ -357,16 +1129,94 @@ pl{
                 other{"{0} milisekundy"}\r
             }\r
             minute{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} minuty"}\r
+                        many{"{0} minut"}\r
+                        one{"{0} minutę"}\r
+                        other{"{0} minuty"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} minutom"}\r
+                        many{"{0} minutom"}\r
+                        one{"{0} minucie"}\r
+                        other{"{0} minuty"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} minut"}\r
+                        many{"{0} minut"}\r
+                        one{"{0} minuty"}\r
+                        other{"{0} minuty"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} minutami"}\r
+                        many{"{0} minutami"}\r
+                        one{"{0} minutą"}\r
+                        other{"{0} minuty"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} minutach"}\r
+                        many{"{0} minutach"}\r
+                        one{"{0} minucie"}\r
+                        other{"{0} minuty"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} minuty"}\r
+                        many{"{0} minut"}\r
+                        one{"{0} minuto"}\r
+                        other{"{0} minuty"}\r
+                    }\r
+                }\r
                 dnam{"minuty"}\r
                 few{"{0} minuty"}\r
+                gender{"feminine"}\r
                 many{"{0} minut"}\r
                 one{"{0} minuta"}\r
                 other{"{0} minuty"}\r
                 per{"{0} na minutę"}\r
             }\r
             month{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} miesiące"}\r
+                        many{"{0} miesięcy"}\r
+                        one{"{0} miesiąc"}\r
+                        other{"{0} miesiąca"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} miesiącom"}\r
+                        many{"{0} miesiącom"}\r
+                        one{"{0} miesiącowi"}\r
+                        other{"{0} miesiąca"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} miesięcy"}\r
+                        many{"{0} miesięcy"}\r
+                        one{"{0} miesiąca"}\r
+                        other{"{0} miesiąca"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} miesiącami"}\r
+                        many{"{0} miesiącami"}\r
+                        one{"{0} miesiącem"}\r
+                        other{"{0} miesiąca"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} miesiącach"}\r
+                        many{"{0} miesiącach"}\r
+                        one{"{0} miesiącu"}\r
+                        other{"{0} miesiąca"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} miesiące"}\r
+                        many{"{0} miesięcy"}\r
+                        one{"{0} miesiącu"}\r
+                        other{"{0} miesiąca"}\r
+                    }\r
+                }\r
                 dnam{"miesiące"}\r
                 few{"{0} miesiące"}\r
+                gender{"inanimate"}\r
                 many{"{0} miesięcy"}\r
                 one{"{0} miesiąc"}\r
                 other{"{0} miesiąca"}\r
@@ -380,24 +1230,141 @@ pl{
                 other{"{0} nanosekundy"}\r
             }\r
             second{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} sekundy"}\r
+                        many{"{0} sekund"}\r
+                        one{"{0} sekundę"}\r
+                        other{"{0} sekundy"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} sekundom"}\r
+                        many{"{0} sekundom"}\r
+                        one{"{0} sekundzie"}\r
+                        other{"{0} sekundy"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} sekund"}\r
+                        many{"{0} sekund"}\r
+                        one{"{0} sekundy"}\r
+                        other{"{0} sekundy"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} sekundami"}\r
+                        many{"{0} sekundami"}\r
+                        one{"{0} sekundą"}\r
+                        other{"{0} sekundy"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} sekundach"}\r
+                        many{"{0} sekundach"}\r
+                        one{"{0} sekundzie"}\r
+                        other{"{0} sekundy"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} sekundy"}\r
+                        many{"{0} sekund"}\r
+                        one{"{0} sekundo"}\r
+                        other{"{0} sekundy"}\r
+                    }\r
+                }\r
                 dnam{"sekundy"}\r
                 few{"{0} sekundy"}\r
+                gender{"feminine"}\r
                 many{"{0} sekund"}\r
                 one{"{0} sekunda"}\r
                 other{"{0} sekundy"}\r
                 per{"{0} na sekundę"}\r
             }\r
             week{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} tygodnie"}\r
+                        many{"{0} tygodni"}\r
+                        one{"{0} tydzień"}\r
+                        other{"{0} tygodnia"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} tygodniom"}\r
+                        many{"{0} tygodniom"}\r
+                        one{"{0} tygodniowi"}\r
+                        other{"{0} tygodnia"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} tygodni"}\r
+                        many{"{0} tygodni"}\r
+                        one{"{0} tygodnia"}\r
+                        other{"{0} tygodnia"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} tygodniami"}\r
+                        many{"{0} tygodniami"}\r
+                        one{"{0} tygodniem"}\r
+                        other{"{0} tygodnia"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} tygodniach"}\r
+                        many{"{0} tygodniach"}\r
+                        one{"{0} tygodniu"}\r
+                        other{"{0} tygodnia"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} tygodnie"}\r
+                        many{"{0} tygodni"}\r
+                        one{"{0} tygodniu"}\r
+                        other{"{0} tygodnia"}\r
+                    }\r
+                }\r
                 dnam{"tygodnie"}\r
                 few{"{0} tygodnie"}\r
+                gender{"inanimate"}\r
                 many{"{0} tygodni"}\r
                 one{"{0} tydzień"}\r
                 other{"{0} tygodnia"}\r
                 per{"{0} na tydzień"}\r
             }\r
             year{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} lata"}\r
+                        many{"{0} lat"}\r
+                        one{"{0} rok"}\r
+                        other{"{0} roku"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} latom"}\r
+                        many{"{0} latom"}\r
+                        one{"{0} rokowi"}\r
+                        other{"{0} roku"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} lat"}\r
+                        many{"{0} lat"}\r
+                        one{"{0} roku"}\r
+                        other{"{0} roku"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} latami"}\r
+                        many{"{0} latami"}\r
+                        one{"{0} rokiem"}\r
+                        other{"{0} roku"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} latach"}\r
+                        many{"{0} latach"}\r
+                        one{"{0} roku"}\r
+                        other{"{0} roku"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} lata"}\r
+                        many{"{0} lat"}\r
+                        one{"{0} roku"}\r
+                        other{"{0} roku"}\r
+                    }\r
+                }\r
                 dnam{"lata"}\r
                 few{"{0} lata"}\r
+                gender{"inanimate"}\r
                 many{"{0} lat"}\r
                 one{"{0} rok"}\r
                 other{"{0} roku"}\r
@@ -457,8 +1424,47 @@ pl{
                 other{"{0} elektronowolta"}\r
             }\r
             foodcalorie{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} kalorie"}\r
+                        many{"{0} kalorii"}\r
+                        one{"{0} kalorię"}\r
+                        other{"{0} kalorii"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kaloriom"}\r
+                        many{"{0} kaloriom"}\r
+                        one{"{0} kalorii"}\r
+                        other{"{0} kalorii"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kalorii"}\r
+                        many{"{0} kalorii"}\r
+                        one{"{0} kalorii"}\r
+                        other{"{0} kalorii"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kaloriami"}\r
+                        many{"{0} kaloriami"}\r
+                        one{"{0} kalorią"}\r
+                        other{"{0} kalorii"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kaloriach"}\r
+                        many{"{0} kaloriach"}\r
+                        one{"{0} kalorii"}\r
+                        other{"{0} kalorii"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} kalorie"}\r
+                        many{"{0} kalorii"}\r
+                        one{"{0} kalorio"}\r
+                        other{"{0} kalorii"}\r
+                    }\r
+                }\r
                 dnam{"kalorie"}\r
                 few{"{0} kalorie"}\r
+                gender{"feminine"}\r
                 many{"{0} kalorii"}\r
                 one{"{0} kaloria"}\r
                 other{"{0} kalorii"}\r
@@ -471,8 +1477,47 @@ pl{
                 other{"{0} dżula"}\r
             }\r
             kilocalorie{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} kilokalorie"}\r
+                        many{"{0} kilokalorii"}\r
+                        one{"{0} kilokalorię"}\r
+                        other{"{0} kilokalorii"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kilokaloriom"}\r
+                        many{"{0} kilokaloriom"}\r
+                        one{"{0} kilokalorii"}\r
+                        other{"{0} kilokalorii"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kilokalorii"}\r
+                        many{"{0} kilokalorii"}\r
+                        one{"{0} kilokalorii"}\r
+                        other{"{0} kilokalorii"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kilokaloriami"}\r
+                        many{"{0} kilokaloriami"}\r
+                        one{"{0} kilokalorią"}\r
+                        other{"{0} kilokalorii"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kilokaloriach"}\r
+                        many{"{0} kilokaloriach"}\r
+                        one{"{0} kilokalorii"}\r
+                        other{"{0} kilokalorii"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} kilokalorie"}\r
+                        many{"{0} kilokalorii"}\r
+                        one{"{0} kilokalorio"}\r
+                        other{"{0} kilokalorii"}\r
+                    }\r
+                }\r
                 dnam{"kilokalorie"}\r
                 few{"{0} kilokalorie"}\r
+                gender{"feminine"}\r
                 many{"{0} kilokalorii"}\r
                 one{"{0} kilokaloria"}\r
                 other{"{0} kilokalorii"}\r
@@ -577,8 +1622,47 @@ pl{
                 other{"{0} jednostki astronomicznej"}\r
             }\r
             centimeter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} centymetry"}\r
+                        many{"{0} centymetrów"}\r
+                        one{"{0} centymetr"}\r
+                        other{"{0} centymetra"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} centymetrom"}\r
+                        many{"{0} centymetrom"}\r
+                        one{"{0} centymetrowi"}\r
+                        other{"{0} centymetra"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} centymetrów"}\r
+                        many{"{0} centymetrów"}\r
+                        one{"{0} centymetra"}\r
+                        other{"{0} centymetra"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} centymetrami"}\r
+                        many{"{0} centymetrami"}\r
+                        one{"{0} centymetrem"}\r
+                        other{"{0} centymetra"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} centymetrach"}\r
+                        many{"{0} centymetrach"}\r
+                        one{"{0} centymetrze"}\r
+                        other{"{0} centymetra"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} centymetry"}\r
+                        many{"{0} centymetrów"}\r
+                        one{"{0} centymetrze"}\r
+                        other{"{0} centymetra"}\r
+                    }\r
+                }\r
                 dnam{"centymetry"}\r
                 few{"{0} centymetry"}\r
+                gender{"inanimate"}\r
                 many{"{0} centymetrów"}\r
                 one{"{0} centymetr"}\r
                 other{"{0} centymetra"}\r
@@ -606,8 +1690,47 @@ pl{
                 other{"{0} sążnia"}\r
             }\r
             foot{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} stopy"}\r
+                        many{"{0} stóp"}\r
+                        one{"{0} stopę"}\r
+                        other{"{0} stopy"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} stopom"}\r
+                        many{"{0} stopom"}\r
+                        one{"{0} stopie"}\r
+                        other{"{0} stopy"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} stóp"}\r
+                        many{"{0} stóp"}\r
+                        one{"{0} stopy"}\r
+                        other{"{0} stopy"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} stopami"}\r
+                        many{"{0} stopami"}\r
+                        one{"{0} stopą"}\r
+                        other{"{0} stopy"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} stopach"}\r
+                        many{"{0} stopach"}\r
+                        one{"{0} stopie"}\r
+                        other{"{0} stopy"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} stopy"}\r
+                        many{"{0} stóp"}\r
+                        one{"{0} stopo"}\r
+                        other{"{0} stopy"}\r
+                    }\r
+                }\r
                 dnam{"stopy"}\r
                 few{"{0} stopy"}\r
+                gender{"feminine"}\r
                 many{"{0} stóp"}\r
                 one{"{0} stopa"}\r
                 other{"{0} stopy"}\r
@@ -621,16 +1744,94 @@ pl{
                 other{"{0} furlonga"}\r
             }\r
             inch{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} cale"}\r
+                        many{"{0} cali"}\r
+                        one{"{0} cal"}\r
+                        other{"{0} cala"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} calom"}\r
+                        many{"{0} calom"}\r
+                        one{"{0} calowi"}\r
+                        other{"{0} cala"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} cali"}\r
+                        many{"{0} cali"}\r
+                        one{"{0} cala"}\r
+                        other{"{0} cala"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} calami"}\r
+                        many{"{0} calami"}\r
+                        one{"{0} calem"}\r
+                        other{"{0} cala"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} calach"}\r
+                        many{"{0} calach"}\r
+                        one{"{0} calu"}\r
+                        other{"{0} cala"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} cale"}\r
+                        many{"{0} cali"}\r
+                        one{"{0} calu"}\r
+                        other{"{0} cala"}\r
+                    }\r
+                }\r
                 dnam{"cale"}\r
                 few{"{0} cale"}\r
+                gender{"inanimate"}\r
                 many{"{0} cali"}\r
                 one{"{0} cal"}\r
                 other{"{0} cala"}\r
                 per{"{0} na cal"}\r
             }\r
             kilometer{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} kilometry"}\r
+                        many{"{0} kilometrów"}\r
+                        one{"{0} kilometr"}\r
+                        other{"{0} kilometra"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kilometrom"}\r
+                        many{"{0} kilometrom"}\r
+                        one{"{0} kilometrowi"}\r
+                        other{"{0} kilometra"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kilometrów"}\r
+                        many{"{0} kilometrów"}\r
+                        one{"{0} kilometra"}\r
+                        other{"{0} kilometra"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kilometrami"}\r
+                        many{"{0} kilometrami"}\r
+                        one{"{0} kilomentrem"}\r
+                        other{"{0} kilometra"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kilometrach"}\r
+                        many{"{0} kilometrach"}\r
+                        one{"{0} kilometrze"}\r
+                        other{"{0} kilometra"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} kilometry"}\r
+                        many{"{0} kilometrów"}\r
+                        one{"{0} kilometrze"}\r
+                        other{"{0} kilometra"}\r
+                    }\r
+                }\r
                 dnam{"kilometry"}\r
                 few{"{0} kilometry"}\r
+                gender{"inanimate"}\r
                 many{"{0} kilometrów"}\r
                 one{"{0} kilometr"}\r
                 other{"{0} kilometra"}\r
@@ -644,8 +1845,47 @@ pl{
                 other{"{0} roku świetlnego"}\r
             }\r
             meter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} metry"}\r
+                        many{"{0} metrów"}\r
+                        one{"{0} metr"}\r
+                        other{"{0} metra"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} metrom"}\r
+                        many{"{0} metrom"}\r
+                        one{"{0} metrowi"}\r
+                        other{"{0} metra"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} metrów"}\r
+                        many{"{0} metrów"}\r
+                        one{"{0} metra"}\r
+                        other{"{0} metra"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} metrami"}\r
+                        many{"{0} metrami"}\r
+                        one{"{0} metrem"}\r
+                        other{"{0} metra"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} metrach"}\r
+                        many{"{0} metrach"}\r
+                        one{"{0} metrze"}\r
+                        other{"{0} metra"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} metry"}\r
+                        many{"{0} metrów"}\r
+                        one{"{0} metrze"}\r
+                        other{"{0} metra"}\r
+                    }\r
+                }\r
                 dnam{"metry"}\r
                 few{"{0} metry"}\r
+                gender{"inanimate"}\r
                 many{"{0} metrów"}\r
                 one{"{0} metr"}\r
                 other{"{0} metra"}\r
@@ -659,8 +1899,47 @@ pl{
                 other{"{0} mikrometra"}\r
             }\r
             mile{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} mile"}\r
+                        many{"{0} mil"}\r
+                        one{"{0} milę"}\r
+                        other{"{0} mili"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} milom"}\r
+                        many{"{0} milom"}\r
+                        one{"{0} mili"}\r
+                        other{"{0} mili"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} mil"}\r
+                        many{"{0} mil"}\r
+                        one{"{0} mili"}\r
+                        other{"{0} mili"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} milami"}\r
+                        many{"{0} milami"}\r
+                        one{"{0} milą"}\r
+                        other{"{0} mili"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} milach"}\r
+                        many{"{0} milach"}\r
+                        one{"{0} mili"}\r
+                        other{"{0} mili"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} mile"}\r
+                        many{"{0} mil"}\r
+                        one{"{0} milo"}\r
+                        other{"{0} mili"}\r
+                    }\r
+                }\r
                 dnam{"mile"}\r
                 few{"{0} mile"}\r
+                gender{"feminine"}\r
                 many{"{0} mil"}\r
                 one{"{0} mila"}\r
                 other{"{0} mili"}\r
@@ -673,8 +1952,47 @@ pl{
                 other{"{0} mili skandynawskiej"}\r
             }\r
             millimeter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} milimetry"}\r
+                        many{"{0} milimetrów"}\r
+                        one{"{0} milimetr"}\r
+                        other{"{0} milimetra"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} milimetrom"}\r
+                        many{"{0} milimetrom"}\r
+                        one{"{0} milimetrowi"}\r
+                        other{"{0} milimetra"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} milimetrów"}\r
+                        many{"{0} milimetrów"}\r
+                        one{"{0} milimetra"}\r
+                        other{"{0} milimetra"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} milimetrami"}\r
+                        many{"{0} milimetrami"}\r
+                        one{"{0} milimentrem"}\r
+                        other{"{0} milimetra"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} milimetrach"}\r
+                        many{"{0} milimetrach"}\r
+                        one{"{0} milimetrze"}\r
+                        other{"{0} milimetra"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} milimetry"}\r
+                        many{"{0} milimetrów"}\r
+                        one{"{0} milimetrrze"}\r
+                        other{"{0} milimetra"}\r
+                    }\r
+                }\r
                 dnam{"milimetry"}\r
                 few{"{0} milimetry"}\r
+                gender{"inanimate"}\r
                 many{"{0} milimetrów"}\r
                 one{"{0} milimetr"}\r
                 other{"{0} milimetra"}\r
@@ -694,15 +2012,93 @@ pl{
                 other{"{0} mili morskiej"}\r
             }\r
             parsec{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} parseki"}\r
+                        many{"{0} parseków"}\r
+                        one{"{0} parsek"}\r
+                        other{"{0} parseka"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} parsekom"}\r
+                        many{"{0} parsekom"}\r
+                        one{"{0} parsekowi"}\r
+                        other{"{0} parseka"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} parseków"}\r
+                        many{"{0} parseków"}\r
+                        one{"{0} parseka"}\r
+                        other{"{0} parseka"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} parsekami"}\r
+                        many{"{0} parsekami"}\r
+                        one{"{0} parsekiem"}\r
+                        other{"{0} parseka"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} parsekach"}\r
+                        many{"{0} parsekach"}\r
+                        one{"{0} parseku"}\r
+                        other{"{0} parseka"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} parseki"}\r
+                        many{"{0} parseków"}\r
+                        one{"{0} parseku"}\r
+                        other{"{0} parseka"}\r
+                    }\r
+                }\r
                 dnam{"parseki"}\r
                 few{"{0} parseki"}\r
+                gender{"inanimate"}\r
                 many{"{0} parseków"}\r
                 one{"{0} parsek"}\r
                 other{"{0} parseka"}\r
             }\r
             picometer{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} pikometry"}\r
+                        many{"{0} pikometrów"}\r
+                        one{"{0} pikometr"}\r
+                        other{"{0} pikometra"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} pikometrom"}\r
+                        many{"{0} pikometrom"}\r
+                        one{"{0} pikometrowi"}\r
+                        other{"{0} pikometra"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} pikometrów"}\r
+                        many{"{0} pikometrów"}\r
+                        one{"{0} pikometra"}\r
+                        other{"{0} pikometra"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} pikometrami"}\r
+                        many{"{0} pikometrami"}\r
+                        one{"{0} pikometrem"}\r
+                        other{"{0} pikometra"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} pikometrach"}\r
+                        many{"{0} pikometrach"}\r
+                        one{"{0} pikometrze"}\r
+                        other{"{0} pikometra"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} pikometry"}\r
+                        many{"{0} pikometrów"}\r
+                        one{"{0} pikometrze"}\r
+                        other{"{0} pikometra"}\r
+                    }\r
+                }\r
                 dnam{"pikometry"}\r
                 few{"{0} pikometry"}\r
+                gender{"inanimate"}\r
                 many{"{0} pikometrów"}\r
                 one{"{0} pikometr"}\r
                 other{"{0} pikometra"}\r
@@ -715,15 +2111,93 @@ pl{
                 other{"{0} punktu"}\r
             }\r
             solar-radius{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} promienie Słońca"}\r
+                        many{"{0} promieni Słońca"}\r
+                        one{"{0} promień Słońca"}\r
+                        other{"{0} promienia Słońca"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} promieniom Słońca"}\r
+                        many{"{0} promieniom Słońca"}\r
+                        one{"{0} promieniowi Słońca"}\r
+                        other{"{0} promienia Słońca"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} promieni Słońca"}\r
+                        many{"{0} promieni Słońca"}\r
+                        one{"{0} promienia Słońca"}\r
+                        other{"{0} promienia Słońca"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} promieniami Słońca"}\r
+                        many{"{0} promieniami Słońca"}\r
+                        one{"{0} promieniem Słońca"}\r
+                        other{"{0} promienia Słońca"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} promieniach Słońca"}\r
+                        many{"{0} promieniach Słońca"}\r
+                        one{"{0} promieniu Słońca"}\r
+                        other{"{0} promienia Słońca"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} promienie Słońca"}\r
+                        many{"{0} promieni Słońca"}\r
+                        one{"{0} promieniu Słońca"}\r
+                        other{"{0} promienia Słońca"}\r
+                    }\r
+                }\r
                 dnam{"promienie Słońca"}\r
                 few{"{0} promienie Słońca"}\r
+                gender{"inanimate"}\r
                 many{"{0} promieni Słońca"}\r
                 one{"{0} promień Słońca"}\r
                 other{"{0} promienia Słońca"}\r
             }\r
             yard{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} jardy"}\r
+                        many{"{0} jardów"}\r
+                        one{"{0} jard"}\r
+                        other{"{0} jarda"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} jardom"}\r
+                        many{"{0} jardom"}\r
+                        one{"{0} jardowi"}\r
+                        other{"{0} jarda"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} jardów"}\r
+                        many{"{0} jardów"}\r
+                        one{"{0} jardu"}\r
+                        other{"{0} jarda"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} jardami"}\r
+                        many{"{0} jardami"}\r
+                        one{"{0} jardem"}\r
+                        other{"{0} jarda"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} jardach"}\r
+                        many{"{0} jardach"}\r
+                        one{"{0} jardzie"}\r
+                        other{"{0} jarda"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} jardy"}\r
+                        many{"{0} jardów"}\r
+                        one{"{0} jardzie"}\r
+                        other{"{0} jarda"}\r
+                    }\r
+                }\r
                 dnam{"jardy"}\r
                 few{"{0} jardy"}\r
+                gender{"inanimate"}\r
                 many{"{0} jardów"}\r
                 one{"{0} jard"}\r
                 other{"{0} jarda"}\r
@@ -752,8 +2226,47 @@ pl{
                 other{"{0} luksu"}\r
             }\r
             solar-luminosity{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} jasności Słońca"}\r
+                        many{"{0} jasności Słońca"}\r
+                        one{"{0} jasność Słońca"}\r
+                        other{"{0} jasności Słońca"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} jasnościom Słońca"}\r
+                        many{"{0} jasnościom Słońca"}\r
+                        one{"{0} jasności Słońca"}\r
+                        other{"{0} jasności Słońca"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} jasności Słońca"}\r
+                        many{"{0} jasności Słońca"}\r
+                        one{"{0} jasności Słońca"}\r
+                        other{"{0} jasności Słońca"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} jasnościami Słońca"}\r
+                        many{"{0} jasnościami Słońca"}\r
+                        one{"{0} jasnością Słońca"}\r
+                        other{"{0} jasności Słońca"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} jasnościach Słońca"}\r
+                        many{"{0} jasnościach Słońca"}\r
+                        one{"{0} jasności Słońca"}\r
+                        other{"{0} jasności Słońca"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} jasności Słońca"}\r
+                        many{"{0} jasności Słońca"}\r
+                        one{"{0} jasności Słońca"}\r
+                        other{"{0} jasności Słońca"}\r
+                    }\r
+                }\r
                 dnam{"jasności Słońca"}\r
                 few{"{0} jasności Słońca"}\r
+                gender{"feminine"}\r
                 many{"{0} jasności Słońca"}\r
                 one{"{0} jasność Słońca"}\r
                 other{"{0} jasności Słońca"}\r
@@ -768,37 +2281,232 @@ pl{
                 other{"{0} karata"}\r
             }\r
             dalton{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} jednostki masy atomowej"}\r
+                        many{"{0} jednostek masy atomowej"}\r
+                        one{"{0} jednostkę masy atomowej"}\r
+                        other{"{0} jednostki masy atomowej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} jednostkom masy atomowej"}\r
+                        many{"{0} jednostkom masy atomowej"}\r
+                        one{"{0} jednostce masy atomowej"}\r
+                        other{"{0} jednostki masy atomowej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} jednostek masy atomowej"}\r
+                        many{"{0} jednostek masy atomowej"}\r
+                        one{"{0} jednostki masy atomowej"}\r
+                        other{"{0} jednostki masy atomowej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} jednostkami masy atomowej"}\r
+                        many{"{0} jednostkami masy atomowej"}\r
+                        one{"{0} jednostką masy atomowej"}\r
+                        other{"{0} jednostki masy atomowej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} jednostkach masy atomowej"}\r
+                        many{"{0} jednostkach masy atomowej"}\r
+                        one{"{0} jednostce masy atomowej"}\r
+                        other{"{0} jednostki masy atomowej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} jednostki masy atomowej"}\r
+                        many{"{0} jednostek masy atomowej"}\r
+                        one{"{0} jednostko masy atomowej"}\r
+                        other{"{0} jednostki masy atomowej"}\r
+                    }\r
+                }\r
                 dnam{"jednostki masy atomowej"}\r
                 few{"{0} jednostki masy atomowej"}\r
+                gender{"feminine"}\r
                 many{"{0} jednostek masy atomowej"}\r
                 one{"{0} jednostka masy atomowej"}\r
                 other{"{0} jednostki masy atomowej"}\r
             }\r
             earth-mass{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} masy Ziemi"}\r
+                        many{"{0} mas Ziemi"}\r
+                        one{"{0} masę Ziemi"}\r
+                        other{"{0} masy Ziemi"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} masom Ziemi"}\r
+                        many{"{0} masom Ziemi"}\r
+                        one{"{0} masie Ziemi"}\r
+                        other{"{0} masy Ziemi"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} mas Ziemi"}\r
+                        many{"{0} mas Ziemi"}\r
+                        one{"{0} masy Ziemi"}\r
+                        other{"{0} masy Ziemi"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} masami Ziemi"}\r
+                        many{"{0} masami Ziemi"}\r
+                        one{"{0} masą Ziemi"}\r
+                        other{"{0} masy Ziemi"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} masach Ziemi"}\r
+                        many{"{0} masach Ziemi"}\r
+                        one{"{0} masie Ziemi"}\r
+                        other{"{0} masy Ziemi"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} masy Ziemi"}\r
+                        many{"{0} mas Ziemi"}\r
+                        one{"{0} maso Ziemi"}\r
+                        other{"{0} masy Ziemi"}\r
+                    }\r
+                }\r
                 dnam{"masy Ziemi"}\r
                 few{"{0} masy Ziemi"}\r
+                gender{"feminine"}\r
                 many{"{0} mas Ziemi"}\r
                 one{"{0} masa Ziemi"}\r
                 other{"{0} masy Ziemi"}\r
             }\r
             grain{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} grany"}\r
+                        many{"{0} granów"}\r
+                        one{"{0} gran"}\r
+                        other{"{0} grana"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} granom"}\r
+                        many{"{0} granom"}\r
+                        one{"{0} granowi"}\r
+                        other{"{0} grana"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} granów"}\r
+                        many{"{0} granów"}\r
+                        one{"{0} grana"}\r
+                        other{"{0} grana"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} granami"}\r
+                        many{"{0} granami"}\r
+                        one{"{0} granem"}\r
+                        other{"{0} grana"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} granach"}\r
+                        many{"{0} granach"}\r
+                        one{"{0} granie"}\r
+                        other{"{0} grana"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} grany"}\r
+                        many{"{0} granów"}\r
+                        one{"{0} granie"}\r
+                        other{"{0} grana"}\r
+                    }\r
+                }\r
                 dnam{"grany"}\r
                 few{"{0} grany"}\r
+                gender{"inanimate"}\r
                 many{"{0} granów"}\r
                 one{"{0} gran"}\r
                 other{"{0} grana"}\r
             }\r
             gram{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} gramy"}\r
+                        many{"{0} gramów"}\r
+                        one{"{0} gram"}\r
+                        other{"{0} grama"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} gramom"}\r
+                        many{"{0} gramom"}\r
+                        one{"{0} gramowi"}\r
+                        other{"{0} grama"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} gramów"}\r
+                        many{"{0} gramów"}\r
+                        one{"{0} grama"}\r
+                        other{"{0} grama"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} gramami"}\r
+                        many{"{0} gramami"}\r
+                        one{"{0} gramem"}\r
+                        other{"{0} grama"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} gramach"}\r
+                        many{"{0} gramach"}\r
+                        one{"{0} gramie"}\r
+                        other{"{0} grama"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} gramy"}\r
+                        many{"{0} gramów"}\r
+                        one{"{0} gramie"}\r
+                        other{"{0} grama"}\r
+                    }\r
+                }\r
                 dnam{"gramy"}\r
                 few{"{0} gramy"}\r
+                gender{"inanimate"}\r
                 many{"{0} gramów"}\r
                 one{"{0} gram"}\r
                 other{"{0} grama"}\r
                 per{"{0} na gram"}\r
             }\r
             kilogram{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} kilogramy"}\r
+                        many{"{0} kilogramów"}\r
+                        one{"{0} kilogram"}\r
+                        other{"{0} kilograma"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kilogramom"}\r
+                        many{"{0} kilogramom"}\r
+                        one{"{0} kilogramowi"}\r
+                        other{"{0} kilograma"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kilogramów"}\r
+                        many{"{0} kilogramów"}\r
+                        one{"{0} kilograma"}\r
+                        other{"{0} kilograma"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kilogramami"}\r
+                        many{"{0} kilogramami"}\r
+                        one{"{0} kilogramem"}\r
+                        other{"{0} kilograma"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kilogramach"}\r
+                        many{"{0} kilogramach"}\r
+                        one{"{0} kilogramie"}\r
+                        other{"{0} kilograma"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} kilogramy"}\r
+                        many{"{0} kilogramów"}\r
+                        one{"{0} kilogramie"}\r
+                        other{"{0} kilograma"}\r
+                    }\r
+                }\r
                 dnam{"kilogramy"}\r
                 few{"{0} kilogramy"}\r
+                gender{"inanimate"}\r
                 many{"{0} kilogramów"}\r
                 one{"{0} kilogram"}\r
                 other{"{0} kilograma"}\r
@@ -819,15 +2527,93 @@ pl{
                 other{"{0} mikrograma"}\r
             }\r
             milligram{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} miligramy"}\r
+                        many{"{0} miligramów"}\r
+                        one{"{0} miligram"}\r
+                        other{"{0} miligrama"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} miligramom"}\r
+                        many{"{0} miligramom"}\r
+                        one{"{0} miligramowi"}\r
+                        other{"{0} miligrama"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} miligramów"}\r
+                        many{"{0} miligramów"}\r
+                        one{"{0} miligrama"}\r
+                        other{"{0} miligrama"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} miligramami"}\r
+                        many{"{0} miligramami"}\r
+                        one{"{0} miligramem"}\r
+                        other{"{0} miligrama"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} miligramach"}\r
+                        many{"{0} miligramach"}\r
+                        one{"{0} miligramie"}\r
+                        other{"{0} miligrama"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} miligramy"}\r
+                        many{"{0} miligramów"}\r
+                        one{"{0} miligramie"}\r
+                        other{"{0} miligrama"}\r
+                    }\r
+                }\r
                 dnam{"miligramy"}\r
                 few{"{0} miligramy"}\r
+                gender{"inanimate"}\r
                 many{"{0} miligramów"}\r
                 one{"{0} miligram"}\r
                 other{"{0} miligrama"}\r
             }\r
             ounce{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} uncje"}\r
+                        many{"{0} uncji"}\r
+                        one{"{0} uncję"}\r
+                        other{"{0} uncji"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} uncjom"}\r
+                        many{"{0} uncjom"}\r
+                        one{"{0} uncji"}\r
+                        other{"{0} uncji"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} uncji"}\r
+                        many{"{0} uncji"}\r
+                        one{"{0} uncji"}\r
+                        other{"{0} uncji"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} uncjami"}\r
+                        many{"{0} uncjami"}\r
+                        one{"{0} uncją"}\r
+                        other{"{0} uncji"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} uncjach"}\r
+                        many{"{0} uncjach"}\r
+                        one{"{0} uncji"}\r
+                        other{"{0} uncji"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} uncje"}\r
+                        many{"{0} uncji"}\r
+                        one{"{0} uncjo"}\r
+                        other{"{0} uncji"}\r
+                    }\r
+                }\r
                 dnam{"uncje"}\r
                 few{"{0} uncje"}\r
+                gender{"feminine"}\r
                 many{"{0} uncji"}\r
                 one{"{0} uncja"}\r
                 other{"{0} uncji"}\r
@@ -841,16 +2627,94 @@ pl{
                 other{"{0} uncji trojańskiej"}\r
             }\r
             pound{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} funty"}\r
+                        many{"{0} funtów"}\r
+                        one{"{0} funt"}\r
+                        other{"{0} funta"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} funtom"}\r
+                        many{"{0} funtom"}\r
+                        one{"{0} funtowi"}\r
+                        other{"{0} funta"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} funtów"}\r
+                        many{"{0} funtów"}\r
+                        one{"{0} funta"}\r
+                        other{"{0} funta"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} funtami"}\r
+                        many{"{0} funtami"}\r
+                        one{"{0} funtem"}\r
+                        other{"{0} funta"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} funtach"}\r
+                        many{"{0} funtach"}\r
+                        one{"{0} funcie"}\r
+                        other{"{0} funta"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} funty"}\r
+                        many{"{0} funtów"}\r
+                        one{"{0} funcie"}\r
+                        other{"{0} funta"}\r
+                    }\r
+                }\r
                 dnam{"funty"}\r
                 few{"{0} funty"}\r
+                gender{"inanimate"}\r
                 many{"{0} funtów"}\r
                 one{"{0} funt"}\r
                 other{"{0} funta"}\r
                 per{"{0} na funt"}\r
             }\r
             solar-mass{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} masy Słońca"}\r
+                        many{"{0} mas Słońca"}\r
+                        one{"{0} masę Słońca"}\r
+                        other{"{0} masy Słońca"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} masom Słońca"}\r
+                        many{"{0} masom Słońca"}\r
+                        one{"{0} masie Słońca"}\r
+                        other{"{0} masy Słońca"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} mas Słońca"}\r
+                        many{"{0} mas Słońca"}\r
+                        one{"{0} masy Słońca"}\r
+                        other{"{0} masy Słońca"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} masami Słońca"}\r
+                        many{"{0} masami Słońca"}\r
+                        one{"{0} masą Słońca"}\r
+                        other{"{0} masy Słońca"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} masach Słońca"}\r
+                        many{"{0} masach Słońca"}\r
+                        one{"{0} masie Słońca"}\r
+                        other{"{0} masy Słońca"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} masy Słońca"}\r
+                        many{"{0} mas Słońca"}\r
+                        one{"{0} maso Słońca"}\r
+                        other{"{0} masy Słońca"}\r
+                    }\r
+                }\r
                 dnam{"masy Słońca"}\r
                 few{"{0} masy Słońca"}\r
+                gender{"feminine"}\r
                 many{"{0} mas Słońca"}\r
                 one{"{0} masa Słońca"}\r
                 other{"{0} masy Słońca"}\r
@@ -944,8 +2808,47 @@ pl{
                 other{"{0} cala słupa rtęci"}\r
             }\r
             kilopascal{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} kilopaskale"}\r
+                        many{"{0} kilopaskali"}\r
+                        one{"{0} kilopaskal"}\r
+                        other{"{0} kilopaskala"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kilopaskalom"}\r
+                        many{"{0} kilopaskalom"}\r
+                        one{"{0} kilopaskalowi"}\r
+                        other{"{0} kilopaskala"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kilopaskali"}\r
+                        many{"{0} kilopaskali"}\r
+                        one{"{0} kilopaskala"}\r
+                        other{"{0} kilopaskala"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kilopaskalami"}\r
+                        many{"{0} kilopaskalami"}\r
+                        one{"{0} kilopaskalem"}\r
+                        other{"{0} kilopaskala"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kilopaskalach"}\r
+                        many{"{0} kilopaskalach"}\r
+                        one{"{0} kilopaskalu"}\r
+                        other{"{0} kilopaskala"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} kilopaskale"}\r
+                        many{"{0} kilopaskali"}\r
+                        one{"{0} kilopaskalu"}\r
+                        other{"{0} kilopaskala"}\r
+                    }\r
+                }\r
                 dnam{"kilopaskale"}\r
                 few{"{0} kilopaskale"}\r
+                gender{"inanimate"}\r
                 many{"{0} kilopaskali"}\r
                 one{"{0} kilopaskal"}\r
                 other{"{0} kilopaskala"}\r
@@ -988,8 +2891,47 @@ pl{
         }\r
         speed{\r
             kilometer-per-hour{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} kilometry na godzinę"}\r
+                        many{"{0} kilometrów na godzinę"}\r
+                        one{"{0} kilometr na godzinę"}\r
+                        other{"{0} kilometra na godzinę"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kilometrom na godzinę"}\r
+                        many{"{0} kilometrom na godzinę"}\r
+                        one{"{0} kilometrowi na godzinę"}\r
+                        other{"{0} kilometra na godzinę"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kilometrów na godzinę"}\r
+                        many{"{0} kilometrów na godzinę"}\r
+                        one{"{0} kilometra na godzinę"}\r
+                        other{"{0} kilometra na godzinę"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kilometrami na godzinę"}\r
+                        many{"{0} kilometrami na godzinę"}\r
+                        one{"{0} kilometrem na godzinę"}\r
+                        other{"{0} kilometra na godzinę"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kilometrach na godzinę"}\r
+                        many{"{0} kilometrach na godzinę"}\r
+                        one{"{0} kilometrze na godzinę"}\r
+                        other{"{0} kilometra na godzinę"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} kilometry na godzinę"}\r
+                        many{"{0} kilometrów na godzinę"}\r
+                        one{"{0} kilometrze na godzinę"}\r
+                        other{"{0} kilometra na godzinę"}\r
+                    }\r
+                }\r
                 dnam{"kilometry na godzinę"}\r
                 few{"{0} kilometry na godzinę"}\r
+                gender{"inanimate"}\r
                 many{"{0} kilometrów na godzinę"}\r
                 one{"{0} kilometr na godzinę"}\r
                 other{"{0} kilometra na godzinę"}\r
@@ -1002,15 +2944,93 @@ pl{
                 other{"{0} węzła"}\r
             }\r
             meter-per-second{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} metry na sekundę"}\r
+                        many{"{0} metrów na sekundę"}\r
+                        one{"{0} metr na sekundę"}\r
+                        other{"{0} metra na sekundę"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} metrom na sekundę"}\r
+                        many{"{0} metrom na sekundę"}\r
+                        one{"{0} metrowi na sekundę"}\r
+                        other{"{0} metra na sekundę"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} metrów na sekundę"}\r
+                        many{"{0} metrów na sekundę"}\r
+                        one{"{0} metra na sekundę"}\r
+                        other{"{0} metra na sekundę"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} metrami na sekundę"}\r
+                        many{"{0} metrami na sekundę"}\r
+                        one{"{0} metrem na sekundę"}\r
+                        other{"{0} metra na sekundę"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} metrach na sekundę"}\r
+                        many{"{0} metrach na sekundę"}\r
+                        one{"{0} metrze na sekundę"}\r
+                        other{"{0} metra na sekundę"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} metry na sekundę"}\r
+                        many{"{0} metrów na sekundę"}\r
+                        one{"{0} metrze na sekundę"}\r
+                        other{"{0} metra na sekundę"}\r
+                    }\r
+                }\r
                 dnam{"metry na sekundę"}\r
                 few{"{0} metry na sekundę"}\r
+                gender{"inanimate"}\r
                 many{"{0} metrów na sekundę"}\r
                 one{"{0} metr na sekundę"}\r
                 other{"{0} metra na sekundę"}\r
             }\r
             mile-per-hour{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} mile na godzinę"}\r
+                        many{"{0} mil na godzinę"}\r
+                        one{"{0} milę na godzinę"}\r
+                        other{"{0} mili na godzinę"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} milom na godzinę"}\r
+                        many{"{0} milom na godzinę"}\r
+                        one{"{0} mili na godzinę"}\r
+                        other{"{0} mili na godzinę"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} mil na godzinę"}\r
+                        many{"{0} mil na godzinę"}\r
+                        one{"{0} mili na godzinę"}\r
+                        other{"{0} mili na godzinę"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} milami na godzinę"}\r
+                        many{"{0} milami na godzinę"}\r
+                        one{"{0} milą na godzinę"}\r
+                        other{"{0} mili na godzinę"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} milach na godzinę"}\r
+                        many{"{0} milach na godzinę"}\r
+                        one{"{0} mili na godzinę"}\r
+                        other{"{0} mili na godzinę"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} mile na godzinę"}\r
+                        many{"{0} mil na godzinę"}\r
+                        one{"{0} milo na godzinę"}\r
+                        other{"{0} mili na godzinę"}\r
+                    }\r
+                }\r
                 dnam{"mile na godzinę"}\r
                 few{"{0} mile na godzinę"}\r
+                gender{"feminine"}\r
                 many{"{0} mil na godzinę"}\r
                 one{"{0} mila na godzinę"}\r
                 other{"{0} mili na godzinę"}\r
@@ -1018,29 +3038,185 @@ pl{
         }\r
         temperature{\r
             celsius{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} stopnie Celsjusza"}\r
+                        many{"{0} stopni Celsjusza"}\r
+                        one{"{0} stopień Celsjusza"}\r
+                        other{"{0} stopnia Celsjusza"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} stopniom Celsjusza"}\r
+                        many{"{0} stopniom Celsjusza"}\r
+                        one{"{0} stopniowi Celsjusza"}\r
+                        other{"{0} stopnia Celsjusza"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} stopni Celsjusza"}\r
+                        many{"{0} stopni Celsjusza"}\r
+                        one{"{0} stopnia Celsjusza"}\r
+                        other{"{0} stopnia Celsjusza"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} stopniami Celsjusza"}\r
+                        many{"{0} stopniami Celsjusza"}\r
+                        one{"{0} stopniem Celsjusza"}\r
+                        other{"{0} stopnia Celsjusza"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} stopniach Celsjusza"}\r
+                        many{"{0} stopniach Celsjusza"}\r
+                        one{"{0} stopniu Celsjusza"}\r
+                        other{"{0} stopnia Celsjusza"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} stopnie Celsjusza"}\r
+                        many{"{0} stopni Celsjusza"}\r
+                        one{"{0} stopniu Celsjusza"}\r
+                        other{"{0} stopnia Celsjusza"}\r
+                    }\r
+                }\r
                 dnam{"stopnie Celsjusza"}\r
                 few{"{0} stopnie Celsjusza"}\r
+                gender{"inanimate"}\r
                 many{"{0} stopni Celsjusza"}\r
                 one{"{0} stopień Celsjusza"}\r
                 other{"{0} stopnia Celsjusza"}\r
             }\r
             fahrenheit{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} stopnie Fahrenheita"}\r
+                        many{"{0} stopni Fahrenheita"}\r
+                        one{"{0} stopień Fahrenheita"}\r
+                        other{"{0} stopnia Fahrenheita"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} stopniom Fahrenheita"}\r
+                        many{"{0} stopniom Fahrenheita"}\r
+                        one{"{0} stopniowi Fahrenheita"}\r
+                        other{"{0} stopnia Fahrenheita"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} stopni Fahrenheita"}\r
+                        many{"{0} stopni Fahrenheita"}\r
+                        one{"{0} stopnia Fahrenheita"}\r
+                        other{"{0} stopnia Fahrenheita"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} stopniami Fahrenheita"}\r
+                        many{"{0} stopniami Fahrenheita"}\r
+                        one{"{0} stopniem Fahrenheita"}\r
+                        other{"{0} stopnia Fahrenheita"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} stopniach Fahrenheita"}\r
+                        many{"{0} stopniach Fahrenheita"}\r
+                        one{"{0} stopniu Fahrenheita"}\r
+                        other{"{0} stopnia Fahrenheita"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} stopnie Fahrenheita"}\r
+                        many{"{0} stopni Fahrenheita"}\r
+                        one{"{0} stopniu Fahrenheita"}\r
+                        other{"{0} stopnia Fahrenheita"}\r
+                    }\r
+                }\r
                 dnam{"stopnie Fahrenheita"}\r
                 few{"{0} stopnie Fahrenheita"}\r
+                gender{"inanimate"}\r
                 many{"{0} stopni Fahrenheita"}\r
                 one{"{0} stopień Fahrenheita"}\r
                 other{"{0} stopnia Fahrenheita"}\r
             }\r
             generic{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} stopnie"}\r
+                        many{"{0} stopni"}\r
+                        one{"{0} stopień"}\r
+                        other{"{0} stopnia"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} stopniom"}\r
+                        many{"{0} stopniom"}\r
+                        one{"{0} stopniowi"}\r
+                        other{"{0} stopnia"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} stopni"}\r
+                        many{"{0} stopni"}\r
+                        one{"{0} stopnia"}\r
+                        other{"{0} stopnia"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} stopniami"}\r
+                        many{"{0} stopniami"}\r
+                        one{"{0} stopniem"}\r
+                        other{"{0} stopnia"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} stopniach"}\r
+                        many{"{0} stopniach"}\r
+                        one{"{0} stopniu"}\r
+                        other{"{0} stopnia"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} stopnie"}\r
+                        many{"{0} stopni"}\r
+                        one{"{0} stopniu"}\r
+                        other{"{0} stopnia"}\r
+                    }\r
+                }\r
                 dnam{"stopnie"}\r
                 few{"{0} stopnie"}\r
+                gender{"inanimate"}\r
                 many{"{0} stopni"}\r
                 one{"{0} stopień"}\r
                 other{"{0} stopnia"}\r
             }\r
             kelvin{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} kelwiny"}\r
+                        many{"{0} kelwinów"}\r
+                        one{"{0} kelwin"}\r
+                        other{"{0} kelwina"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kelwinom"}\r
+                        many{"{0} kelwinom"}\r
+                        one{"{0} kelwinowi"}\r
+                        other{"{0} kelwina"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kelwinów"}\r
+                        many{"{0} kelwinów"}\r
+                        one{"{0} kelwina"}\r
+                        other{"{0} kelwina"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kelwinami"}\r
+                        many{"{0} kelwinami"}\r
+                        one{"{0} kelwinem"}\r
+                        other{"{0} kelwina"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kelwinach"}\r
+                        many{"{0} kelwinach"}\r
+                        one{"{0} kelwinie"}\r
+                        other{"{0} kelwina"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} kelwiny"}\r
+                        many{"{0} kelwinów"}\r
+                        one{"{0} kelwinie"}\r
+                        other{"{0} kelwina"}\r
+                    }\r
+                }\r
                 dnam{"kelwiny"}\r
                 few{"{0} kelwiny"}\r
+                gender{"inanimate"}\r
                 many{"{0} kelwinów"}\r
                 one{"{0} kelwin"}\r
                 other{"{0} kelwina"}\r
@@ -1085,23 +3261,140 @@ pl{
                 other{"{0} buszla"}\r
             }\r
             centiliter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} centylitry"}\r
+                        many{"{0} centylitrów"}\r
+                        one{"{0} centylitr"}\r
+                        other{"{0} centylitra"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} centylitrom"}\r
+                        many{"{0} centylitrom"}\r
+                        one{"{0} centylitrowi"}\r
+                        other{"{0} centylitra"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} centylitrów"}\r
+                        many{"{0} centylitrów"}\r
+                        one{"{0} centylitra"}\r
+                        other{"{0} centylitra"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} centylitrami"}\r
+                        many{"{0} centylitrami"}\r
+                        one{"{0} centylitrem"}\r
+                        other{"{0} centylitra"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} centylitrach"}\r
+                        many{"{0} centylitrach"}\r
+                        one{"{0} centylitrze"}\r
+                        other{"{0} centylitra"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} centylitry"}\r
+                        many{"{0} centylitrów"}\r
+                        one{"{0} centylitrze"}\r
+                        other{"{0} centylitra"}\r
+                    }\r
+                }\r
                 dnam{"centylitry"}\r
                 few{"{0} centylitry"}\r
+                gender{"inanimate"}\r
                 many{"{0} centylitrów"}\r
                 one{"{0} centylitr"}\r
                 other{"{0} centylitra"}\r
             }\r
             cubic-centimeter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} centymetry sześcienne"}\r
+                        many{"{0} centymetrów sześciennych"}\r
+                        one{"{0} centymetr sześcienny"}\r
+                        other{"{0} centymetra sześciennego"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} centymetrom sześciennym"}\r
+                        many{"{0} centymetrom sześciennym"}\r
+                        one{"{0} centymetrowi sześciennemu"}\r
+                        other{"{0} centymetra sześciennego"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} centymetrów sześciennych"}\r
+                        many{"{0} centymetrów sześciennych"}\r
+                        one{"{0} centymetra sześciennego"}\r
+                        other{"{0} centymetra sześciennego"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} centymetrami sześciennymi"}\r
+                        many{"{0} centymetrami sześciennymi"}\r
+                        one{"{0} centymetrem sześciennym"}\r
+                        other{"{0} centymetra sześciennego"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} centymetrach sześciennych"}\r
+                        many{"{0} centymetrach sześciennych"}\r
+                        one{"{0} centymetrze sześciennym"}\r
+                        other{"{0} centymetra sześciennego"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} centymetry sześcienne"}\r
+                        many{"{0} centymetrów sześciennych"}\r
+                        one{"{0} centymetrze sześcienny"}\r
+                        other{"{0} centymetra sześciennego"}\r
+                    }\r
+                }\r
                 dnam{"centymetry sześcienne"}\r
                 few{"{0} centymetry sześcienne"}\r
+                gender{"inanimate"}\r
                 many{"{0} centymetrów sześciennych"}\r
                 one{"{0} centymetr sześcienny"}\r
                 other{"{0} centymetra sześciennego"}\r
                 per{"{0} na centymetr sześcienny"}\r
             }\r
             cubic-foot{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} stopy sześcienne"}\r
+                        many{"{0} stóp sześciennych"}\r
+                        one{"{0} stopę sześcienną"}\r
+                        other{"{0} stopy sześciennej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} stopom sześciennym"}\r
+                        many{"{0} stopom sześciennym"}\r
+                        one{"{0} stopie sześciennej"}\r
+                        other{"{0} stopy sześciennej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} stóp sześciennych"}\r
+                        many{"{0} stóp sześciennych"}\r
+                        one{"{0} stopy sześciennej"}\r
+                        other{"{0} stopy sześciennej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} stopami sześciennymi"}\r
+                        many{"{0} stopami sześciennymi"}\r
+                        one{"{0} stopą sześcienną"}\r
+                        other{"{0} stopy sześciennej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} stopach sześciennych"}\r
+                        many{"{0} stopach sześciennych"}\r
+                        one{"{0} stopie sześciennej"}\r
+                        other{"{0} stopy sześciennej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} stopy sześcienne"}\r
+                        many{"{0} stóp sześciennych"}\r
+                        one{"{0} stopo sześcienna"}\r
+                        other{"{0} stopy sześciennej"}\r
+                    }\r
+                }\r
                 dnam{"stopy sześcienne"}\r
                 few{"{0} stopy sześcienne"}\r
+                gender{"feminine"}\r
                 many{"{0} stóp sześciennych"}\r
                 one{"{0} stopa sześcienna"}\r
                 other{"{0} stopy sześciennej"}\r
@@ -1129,8 +3422,47 @@ pl{
                 per{"{0} na metr sześcienny"}\r
             }\r
             cubic-mile{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} mile sześcienne"}\r
+                        many{"{0} mil sześciennych"}\r
+                        one{"{0} milę sześcienną"}\r
+                        other{"{0} mili sześciennej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} milom sześciennym"}\r
+                        many{"{0} milom sześciennym"}\r
+                        one{"{0} mili sześciennej"}\r
+                        other{"{0} mili sześciennej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} mil sześciennych"}\r
+                        many{"{0} mil sześciennych"}\r
+                        one{"{0} mili sześciennej"}\r
+                        other{"{0} mili sześciennej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} milami sześciennymi"}\r
+                        many{"{0} milami sześciennymi"}\r
+                        one{"{0} milą sześcienną"}\r
+                        other{"{0} mili sześciennej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} milach sześciennych"}\r
+                        many{"{0} milach sześciennych"}\r
+                        one{"{0} mili sześciennej"}\r
+                        other{"{0} mili sześciennej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} mile sześcienne"}\r
+                        many{"{0} mil sześciennych"}\r
+                        one{"{0} milo sześcienna"}\r
+                        other{"{0} mili sześciennej"}\r
+                    }\r
+                }\r
                 dnam{"mile sześcienne"}\r
                 few{"{0} mile sześcienne"}\r
+                gender{"feminine"}\r
                 many{"{0} mil sześciennych"}\r
                 one{"{0} mila sześcienna"}\r
                 other{"{0} mili sześciennej"}\r
@@ -1143,8 +3475,47 @@ pl{
                 other{"{0} jarda sześciennego"}\r
             }\r
             cup{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} ćwierćkwarty amerykańskie"}\r
+                        many{"{0} ćwierćkwart amerykańskich"}\r
+                        one{"{0} ćwierćkwartę amerykańską"}\r
+                        other{"{0} ćwierćkwarty amerykańskiej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} ćwierćkwartom amerykańskim"}\r
+                        many{"{0} ćwierćkwartom amerykańskim"}\r
+                        one{"{0} ćwierćkwarcie amerykańskiej"}\r
+                        other{"{0} ćwierćkwarty amerykańskiej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} ćwierćkwart amerykańskich"}\r
+                        many{"{0} ćwierćkwart amerykańskich"}\r
+                        one{"{0} ćwierćkwarty amerykańskiej"}\r
+                        other{"{0} ćwierćkwarty amerykańskiej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} ćwierćkwartami amerykańskimi"}\r
+                        many{"{0} ćwierćkwartami amerykańskimi"}\r
+                        one{"{0} ćwierćkwartą amerykańską"}\r
+                        other{"{0} ćwierćkwarty amerykańskiej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} ćwierćkwartach amerykańskich"}\r
+                        many{"{0} ćwierćkwartach amerykańskich"}\r
+                        one{"{0} ćwierćkwarcie amerykańskiej"}\r
+                        other{"{0} ćwierćkwarty amerykańskiej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} ćwierćkwarty amerykańskie"}\r
+                        many{"{0} ćwierćkwart amerykańskich"}\r
+                        one{"{0} ćwierćkwarto amerykańska"}\r
+                        other{"{0} ćwierćkwarty am."}\r
+                    }\r
+                }\r
                 dnam{"ćwierćkwarty amerykańske"}\r
                 few{"{0} ćwierćkwarty amerykańskie"}\r
+                gender{"feminine"}\r
                 many{"{0} ćwierćkwart amerykańskich"}\r
                 one{"{0} ćwierćkwarta amerykańska"}\r
                 other{"{0} ćwierćkwarty amerykańskiej"}\r
@@ -1157,65 +3528,416 @@ pl{
                 other{"{0} ćwierćkwarty metrycznej"}\r
             }\r
             deciliter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} decylitry"}\r
+                        many{"{0} decylitrów"}\r
+                        one{"{0} decylitr"}\r
+                        other{"{0} decylitra"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} decylitrom"}\r
+                        many{"{0} decylitrom"}\r
+                        one{"{0} decylitrowi"}\r
+                        other{"{0} decylitra"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} decylitrów"}\r
+                        many{"{0} decylitrów"}\r
+                        one{"{0} decylitra"}\r
+                        other{"{0} decylitra"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} decylitrami"}\r
+                        many{"{0} decylitrami"}\r
+                        one{"{0} decylitrem"}\r
+                        other{"{0} decylitra"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} decylitrach"}\r
+                        many{"{0} decylitrach"}\r
+                        one{"{0} decylitrze"}\r
+                        other{"{0} decylitra"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} decylitry"}\r
+                        many{"{0} decylitrów"}\r
+                        one{"{0} decylitrze"}\r
+                        other{"{0} decylitra"}\r
+                    }\r
+                }\r
                 dnam{"decylitry"}\r
                 few{"{0} decylitry"}\r
+                gender{"inanimate"}\r
                 many{"{0} decylitrów"}\r
                 one{"{0} decylitr"}\r
                 other{"{0} decylitra"}\r
             }\r
             dessert-spoon{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} łyżki deserowe"}\r
+                        many{"{0} łyżek deserowych"}\r
+                        one{"{0} łyżkę deserową"}\r
+                        other{"{0} łyżki deserowej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} łyżkom deserowym"}\r
+                        many{"{0} łyżkom deserowym"}\r
+                        one{"{0} łyżce deserowej"}\r
+                        other{"{0} łyżki deserowej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} łyżek deserowych"}\r
+                        many{"{0} łyżek deserowych"}\r
+                        one{"{0} łyżki deserowej"}\r
+                        other{"{0} łyżki deserowej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} łyżkami deserowymi"}\r
+                        many{"{0} łyżkami deserowymi"}\r
+                        one{"{0} łyżką deserową"}\r
+                        other{"{0} łyżki deserowej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} łyżkach deserowych"}\r
+                        many{"{0} łyżkach deserowych"}\r
+                        one{"{0} łyżce deserowej"}\r
+                        other{"{0} łyżki deserowej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} łyżki deserowe"}\r
+                        many{"{0} łyżek deserowych"}\r
+                        one{"{0} łyżko deserowa"}\r
+                        other{"{0} łyżki deserowej"}\r
+                    }\r
+                }\r
                 dnam{"łyżki deserowe"}\r
                 few{"{0} łyżki deserowe"}\r
+                gender{"feminine"}\r
                 many{"{0} łyżek deserowych"}\r
                 one{"{0} łyżka deserowa"}\r
                 other{"{0} łyżki deserowej"}\r
             }\r
             dessert-spoon-imperial{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} imperialne łyżeczki deserowe"}\r
+                        many{"{0} imperialnych łyżeczek deserowych"}\r
+                        one{"{0} imperialną łyżeczkę deserową"}\r
+                        other{"{0} imperialnej łyżeczki deserowej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} imperialnym łyżeczkom deserowym"}\r
+                        many{"{0} imperialnym łyżeczkom deserowym"}\r
+                        one{"{0} imperialnej łyżeczkce deserowej"}\r
+                        other{"{0} imperialnej łyżeczki deserowej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} imperialnych łyżeczek deserowych"}\r
+                        many{"{0} imperialnych łyżeczek deserowych"}\r
+                        one{"{0} imperialnej łyżeczki deserowej"}\r
+                        other{"{0} imperialnej łyżeczki deserowej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} imperialnymi łyżeczkami deserowymi"}\r
+                        many{"{0} imperialnymi łyżeczkami deserowymi"}\r
+                        one{"{0} imperialną łyżeczką deserową"}\r
+                        other{"{0} imperialnej łyżeczki deserowej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} imperialnych łyżeczkach deserowych"}\r
+                        many{"{0} imperialnych łyżeczkach deserowych"}\r
+                        one{"{0} imperialnej łyżeczce deserowej"}\r
+                        other{"{0} imperialnej łyżeczki deserowej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} imperialne łyżeczki deserowe"}\r
+                        many{"{0} imperialnych łyżeczek deserowych"}\r
+                        one{"{0} imperialna łyżeczko deserowa"}\r
+                        other{"{0} imperialnej łyżeczki deserowej"}\r
+                    }\r
+                }\r
                 dnam{"imperialna łyżeczka deserowa"}\r
                 few{"{0} imperialne łyżeczki deserowe"}\r
+                gender{"feminine"}\r
                 many{"{0} imperialnych łyżeczek deserowych"}\r
                 one{"{0} imperialna łyżeczka deserowa"}\r
                 other{"{0} imperialnej łyżeczki deserowej"}\r
             }\r
             dram{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} drachmy płynu"}\r
+                        many{"{0} drachm płynu"}\r
+                        one{"{0} drachmę płynu"}\r
+                        other{"{0} drachmy płynu"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} drachmom płynu"}\r
+                        many{"{0} drachmom płynu"}\r
+                        one{"{0} drachmie płynu"}\r
+                        other{"{0} drachmy płynu"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} drachm płynu"}\r
+                        many{"{0} drachm płynu"}\r
+                        one{"{0} drachmy płynu"}\r
+                        other{"{0} drachmy płynu"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} drachmami płynu"}\r
+                        many{"{0} drachmami płynu"}\r
+                        one{"{0} drachmą płynu"}\r
+                        other{"{0} drachmy płynu"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} drachmach płynu"}\r
+                        many{"{0} drachmach płynu"}\r
+                        one{"{0} drachmie płynu"}\r
+                        other{"{0} drachmy płynu"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} drachmy płynu"}\r
+                        many{"{0} drachm płynu"}\r
+                        one{"{0} drachmo płynu"}\r
+                        other{"{0} drachmy płynu"}\r
+                    }\r
+                }\r
                 dnam{"drachmy płynu"}\r
                 few{"{0} drachmy płynu"}\r
+                gender{"feminine"}\r
                 many{"{0} drachm płynu"}\r
                 one{"{0} drachma płynu"}\r
                 other{"{0} drachmy płynu"}\r
             }\r
             drop{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} krople"}\r
+                        many{"{0} kropli"}\r
+                        one{"{0} kroplę"}\r
+                        other{"{0} kropli"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kroplom"}\r
+                        many{"{0} kroplom"}\r
+                        one{"{0} kropli"}\r
+                        other{"{0} kropli"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kropel"}\r
+                        many{"{0} kropel"}\r
+                        one{"{0} kropli"}\r
+                        other{"{0} kropli"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kroplami"}\r
+                        many{"{0} kroplami"}\r
+                        one{"{0} kroplą"}\r
+                        other{"{0} kropli"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kroplach"}\r
+                        many{"{0} kroplach"}\r
+                        one{"{0} kropli"}\r
+                        other{"{0} kropli"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} krople"}\r
+                        many{"{0} kropli"}\r
+                        one{"{0} kroplo"}\r
+                        other{"{0} kropli"}\r
+                    }\r
+                }\r
                 dnam{"krople"}\r
                 few{"{0} krople"}\r
+                gender{"feminine"}\r
                 many{"{0} kropli"}\r
                 one{"{0} kropla"}\r
                 other{"{0} kropli"}\r
             }\r
             fluid-ounce{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} uncje płynu amerykańskie"}\r
+                        many{"{0} uncji płynu amerykańskich"}\r
+                        one{"{0} uncję płynu amerykańską"}\r
+                        other{"{0} uncji płynu amerykańskiej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} uncjom płynu amerykańskim"}\r
+                        many{"{0} uncjom płynu amerykańskim"}\r
+                        one{"{0} uncji płynu amerykańskiej"}\r
+                        other{"{0} uncji płynu amerykańskiej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} uncji płynu amerykańskich"}\r
+                        many{"{0} uncji płynu amerykańskich"}\r
+                        one{"{0} uncji płynu amerykańskiej"}\r
+                        other{"{0} uncji płynu amerykańskiej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} uncjami płynu amerykańskimi"}\r
+                        many{"{0} uncjami płynu amerykańskimi"}\r
+                        one{"{0} uncją płynu amerykańską"}\r
+                        other{"{0} uncji płynu amerykańskiej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} uncjach płynu amerykańskich"}\r
+                        many{"{0} uncjach płynu amerykańskich"}\r
+                        one{"{0} uncji płynu amerykańskiej"}\r
+                        other{"{0} uncji płynu amerykańskiej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} uncje płynu amerykańskie"}\r
+                        many{"{0} uncji płynu amerykańskich"}\r
+                        one{"{0} uncjo płynu amerykańska"}\r
+                        other{"{0} uncji płynu amerykańskiej"}\r
+                    }\r
+                }\r
                 dnam{"uncje płynu amerykańskie"}\r
                 few{"{0} uncje płynu amerykańskie"}\r
+                gender{"feminine"}\r
                 many{"{0} uncji płynu amerykańskich"}\r
                 one{"{0} uncja płynu amerykańska"}\r
                 other{"{0} uncji płynu amerykańskiej"}\r
             }\r
             fluid-ounce-imperial{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} uncje płynu angielskie"}\r
+                        many{"{0} uncji płynu angielskich"}\r
+                        one{"{0} uncję płynu angielską"}\r
+                        other{"{0} uncji płynu angielskiej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} uncjom płynu angielskim"}\r
+                        many{"{0} uncjom płynu angielskim"}\r
+                        one{"{0} uncji płynu angielskiej"}\r
+                        other{"{0} uncji płynu angielskiej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} uncji płynu angielskich"}\r
+                        many{"{0} uncji płynu angielskich"}\r
+                        one{"{0} uncji płynu angielskiej"}\r
+                        other{"{0} uncji płynu angielskiej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} uncjami płynu angielskimi"}\r
+                        many{"{0} uncjami płynu angielskimi"}\r
+                        one{"{0} uncją płynu angielską"}\r
+                        other{"{0} uncji płynu angielskiej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} uncjach płynu angielskich"}\r
+                        many{"{0} uncjach płynu angielskich"}\r
+                        one{"{0} uncji płynu angielskiej"}\r
+                        other{"{0} uncji płynu angielskiej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} uncje płynu angielskie"}\r
+                        many{"{0} uncji płynu angielskich"}\r
+                        one{"{0} uncjo płynu angielska"}\r
+                        other{"{0} uncji płynu angielskiej"}\r
+                    }\r
+                }\r
                 dnam{"uncje płynu angielskie"}\r
                 few{"{0} uncje płynu angielskie"}\r
+                gender{"feminine"}\r
                 many{"{0} uncji płynu angielskich"}\r
                 one{"{0} uncja płynu angielska"}\r
                 other{"{0} uncji płynu angielskiej"}\r
             }\r
             gallon{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} galony amerykańskie"}\r
+                        many{"{0} galonów amerykańskich"}\r
+                        one{"{0} galon amerykański"}\r
+                        other{"{0} galona amerykańskiego"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} galonom amerykańskim"}\r
+                        many{"{0} galonom amerykańskim"}\r
+                        one{"{0} galonowi amerykańskiemu"}\r
+                        other{"{0} galona amerykańskiego"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} galonów amerykańskich"}\r
+                        many{"{0} galonów amerykańskich"}\r
+                        one{"{0} galona amerykańskiego"}\r
+                        other{"{0} galona amerykańskiego"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} galonami amerykańskimi"}\r
+                        many{"{0} galonami amerykańskimi"}\r
+                        one{"{0} galonem amerykańskim"}\r
+                        other{"{0} galona amerykańskiego"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} galonach amerykańskich"}\r
+                        many{"{0} galonach amerykańskich"}\r
+                        one{"{0} galonie amerykańskim"}\r
+                        other{"{0} galona amerykańskiego"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} galony amerykańskie"}\r
+                        many{"{0} galonów amerykańskich"}\r
+                        one{"{0} galonie amerykański"}\r
+                        other{"{0} galona amerykańskiego"}\r
+                    }\r
+                }\r
                 dnam{"galony amerykańskie"}\r
                 few{"{0} galony amerykańskie"}\r
+                gender{"inanimate"}\r
                 many{"{0} galonów amerykańskich"}\r
                 one{"{0} galon amerykański"}\r
                 other{"{0} galona amerykańskiego"}\r
                 per{"{0} na galon amerykański"}\r
             }\r
             gallon-imperial{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} galony angielskie"}\r
+                        many{"{0} galonów angielskich"}\r
+                        one{"{0} galon angielski"}\r
+                        other{"{0} galona angielskiego"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} galonom angielskim"}\r
+                        many{"{0} galonom angielskim"}\r
+                        one{"{0} galonowi angielskiemu"}\r
+                        other{"{0} galona angielskiego"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} galonów angielskich"}\r
+                        many{"{0} galonów angielskich"}\r
+                        one{"{0} galonu angielskiego"}\r
+                        other{"{0} galona angielskiego"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} galonami angielskimi"}\r
+                        many{"{0} galonami angielskimi"}\r
+                        one{"{0} galonem angielskim"}\r
+                        other{"{0} galona angielskiego"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} galonach angielskich"}\r
+                        many{"{0} galonach angielskich"}\r
+                        one{"{0} galonie angielskim"}\r
+                        other{"{0} galona angielskiego"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} galony angielskie"}\r
+                        many{"{0} galonów angielskich"}\r
+                        one{"{0} galonie angielski"}\r
+                        other{"{0} galona angielskiego"}\r
+                    }\r
+                }\r
                 dnam{"galony angielskie"}\r
                 few{"{0} galony angielskie"}\r
+                gender{"inanimate"}\r
                 many{"{0} galonów angielskich"}\r
                 one{"{0} galon angielski"}\r
                 other{"{0} galona angielskiego"}\r
@@ -1229,15 +3951,93 @@ pl{
                 other{"{0} hektolitra"}\r
             }\r
             jigger{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} jiggery"}\r
+                        many{"{0} jiggerów"}\r
+                        one{"{0} jigger"}\r
+                        other{"{0} jiggera"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} jiggerom"}\r
+                        many{"{0} jiggerom"}\r
+                        one{"{0} jiggerowi"}\r
+                        other{"{0} jiggera"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} jiggerów"}\r
+                        many{"{0} jiggerów"}\r
+                        one{"{0} jiggera"}\r
+                        other{"{0} jiggera"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} jiggerami"}\r
+                        many{"{0} jiggerami"}\r
+                        one{"{0} jiggerem"}\r
+                        other{"{0} jiggera"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} jiggerach"}\r
+                        many{"{0} jiggerach"}\r
+                        one{"{0} jiggerze"}\r
+                        other{"{0} jiggera"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} jiggery"}\r
+                        many{"{0} jiggerów"}\r
+                        one{"{0} jiggerze"}\r
+                        other{"{0} jiggera"}\r
+                    }\r
+                }\r
                 dnam{"jiggery"}\r
                 few{"{0} jiggery"}\r
+                gender{"inanimate"}\r
                 many{"{0} jiggerów"}\r
                 one{"{0} jigger"}\r
                 other{"{0} jiggera"}\r
             }\r
             liter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} litry"}\r
+                        many{"{0} litrów"}\r
+                        one{"{0} litr"}\r
+                        other{"{0} litra"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} litrom"}\r
+                        many{"{0} litrom"}\r
+                        one{"{0} litrowi"}\r
+                        other{"{0} litra"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} litrów"}\r
+                        many{"{0} litrów"}\r
+                        one{"{0} litra"}\r
+                        other{"{0} litra"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} litrami"}\r
+                        many{"{0} litrami"}\r
+                        one{"{0} litrem"}\r
+                        other{"{0} litra"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} litrach"}\r
+                        many{"{0} litrach"}\r
+                        one{"{0} litrze"}\r
+                        other{"{0} litra"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} litry"}\r
+                        many{"{0} litrów"}\r
+                        one{"{0} litrze"}\r
+                        other{"{0} litra"}\r
+                    }\r
+                }\r
                 dnam{"litry"}\r
                 few{"{0} litry"}\r
+                gender{"inanimate"}\r
                 many{"{0} litrów"}\r
                 one{"{0} litr"}\r
                 other{"{0} litra"}\r
@@ -1251,22 +4051,139 @@ pl{
                 other{"{0} megalitra"}\r
             }\r
             milliliter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} mililitry"}\r
+                        many{"{0} mililitrów"}\r
+                        one{"{0} mililitr"}\r
+                        other{"{0} mililitra"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} mililitrom"}\r
+                        many{"{0} mililitrom"}\r
+                        one{"{0} mililitrowi"}\r
+                        other{"{0} mililitra"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} mililitrów"}\r
+                        many{"{0} mililitrów"}\r
+                        one{"{0} mililitra"}\r
+                        other{"{0} mililitra"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} mililitrami"}\r
+                        many{"{0} mililitrami"}\r
+                        one{"{0} mililitrem"}\r
+                        other{"{0} mililitra"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} mililitrach"}\r
+                        many{"{0} mililitrach"}\r
+                        one{"{0} mililitrze"}\r
+                        other{"{0} mililitra"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} mililitry"}\r
+                        many{"{0} mililitrów"}\r
+                        one{"{0} mililitrze"}\r
+                        other{"{0} mililitra"}\r
+                    }\r
+                }\r
                 dnam{"mililitry"}\r
                 few{"{0} mililitry"}\r
+                gender{"inanimate"}\r
                 many{"{0} mililitrów"}\r
                 one{"{0} mililitr"}\r
                 other{"{0} mililitra"}\r
             }\r
             pinch{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} szczypty"}\r
+                        many{"{0} szczypt"}\r
+                        one{"{0} szczyptę"}\r
+                        other{"{0} szczypty"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} szczyptom"}\r
+                        many{"{0} szczyptom"}\r
+                        one{"{0} szczypcie"}\r
+                        other{"{0} szczypty"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} szczypt"}\r
+                        many{"{0} szczypt"}\r
+                        one{"{0} szczypty"}\r
+                        other{"{0} szczypty"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} szczyptami"}\r
+                        many{"{0} szczyptami"}\r
+                        one{"{0} szczyptą"}\r
+                        other{"{0} szczypty"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} szczyptach"}\r
+                        many{"{0} szczyptach"}\r
+                        one{"{0} szczypcie"}\r
+                        other{"{0} szczypty"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} szczypty"}\r
+                        many{"{0} szczypt"}\r
+                        one{"{0} szczypto"}\r
+                        other{"{0} szczypty"}\r
+                    }\r
+                }\r
                 dnam{"szczypty"}\r
                 few{"{0} szczypty"}\r
+                gender{"feminine"}\r
                 many{"{0} szczypt"}\r
                 one{"{0} szczypta"}\r
                 other{"{0} szczypty"}\r
             }\r
             pint{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} półkwarty amerykańskie"}\r
+                        many{"{0} półkwart amerykańskich"}\r
+                        one{"{0} półkwartę amerykańską"}\r
+                        other{"{0} półkwarty amerykańskiej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} półkwartom amerykańskim"}\r
+                        many{"{0} półkwartom amerykańskim"}\r
+                        one{"{0} półkwarcie amerykańskiej"}\r
+                        other{"{0} półkwarty amerykańskiej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} półkwart amerykańskich"}\r
+                        many{"{0} półkwart amerykańskich"}\r
+                        one{"{0} półkwarty amerykańskiej"}\r
+                        other{"{0} półkwarty amerykańskiej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} półkwartami amerykańskimi"}\r
+                        many{"{0} półkwartami amerykańskimi"}\r
+                        one{"{0} półkwartą amerykańską"}\r
+                        other{"{0} półkwarty amerykańskiej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} półkwartach amerykańskich"}\r
+                        many{"{0} półkwartach amerykańskich"}\r
+                        one{"{0} półkwarcie amerykańskiej"}\r
+                        other{"{0} półkwarty amerykańskiej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} półkwarty amerykańskie"}\r
+                        many{"{0} półkwart amerykańskich"}\r
+                        one{"{0} półkwarto amerykańska"}\r
+                        other{"{0} półkwarty amerykańskiej"}\r
+                    }\r
+                }\r
                 dnam{"półkwarty amerykańskie"}\r
                 few{"{0} półkwarty amerykańskie"}\r
+                gender{"feminine"}\r
                 many{"{0} półkwart amerykańskich"}\r
                 one{"{0} półkwarta amerykańska"}\r
                 other{"{0} półkwarty amerykańskiej"}\r
@@ -1279,29 +4196,185 @@ pl{
                 other{"{0} półkwarty metrycznej"}\r
             }\r
             quart{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} kwarty amerykańskie"}\r
+                        many{"{0} kwart amerykańskich"}\r
+                        one{"{0} kwartę amerykańską"}\r
+                        other{"{0} kwarty amerykańskiej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kwartom amerykańskim"}\r
+                        many{"{0} kwartom amerykańskim"}\r
+                        one{"{0} kwarcie amerykańskiej"}\r
+                        other{"{0} kwarty amerykańskiej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kwart amerykańskich"}\r
+                        many{"{0} kwart amerykańskich"}\r
+                        one{"{0} kwarty amerykańskiej"}\r
+                        other{"{0} kwarty amerykańskiej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kwartami amerykańskimi"}\r
+                        many{"{0} kwartami amerykańskimi"}\r
+                        one{"{0} kwartą amerykańską"}\r
+                        other{"{0} kwarty amerykańskiej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kwartach amerykańskich"}\r
+                        many{"{0} kwartach amerykańskich"}\r
+                        one{"{0} kwarcie amerykańskiej"}\r
+                        other{"{0} kwarty amerykańskiej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} kwarty amerykańskie"}\r
+                        many{"{0} kwart amerykańskich"}\r
+                        one{"{0} kwarto amerykańska"}\r
+                        other{"{0} kwarty amerykańskiej"}\r
+                    }\r
+                }\r
                 dnam{"kwarty amerykańskie"}\r
                 few{"{0} kwarty amerykańskie"}\r
+                gender{"feminine"}\r
                 many{"{0} kwart amerykańskich"}\r
                 one{"{0} kwarta amerykańska"}\r
                 other{"{0} kwarty amerykańskiej"}\r
             }\r
             quart-imperial{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} kwarty angielskie"}\r
+                        many{"{0} kwart angielskich"}\r
+                        one{"{0} kwartę angielską"}\r
+                        other{"{0} kwarty angielskiej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} kwartom angielskim"}\r
+                        many{"{0} kwartom angielskim"}\r
+                        one{"{0} kwarcie angielskiej"}\r
+                        other{"{0} kwarty angielskiej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} kwart angielskich"}\r
+                        many{"{0} kwart angielskich"}\r
+                        one{"{0} kwarty angielskiej"}\r
+                        other{"{0} kwarty angielskiej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} kwartami angielskimi"}\r
+                        many{"{0} kwartami angielskimi"}\r
+                        one{"{0} kwartą angielską"}\r
+                        other{"{0} kwarty angielskiej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} kwartach angielskich"}\r
+                        many{"{0} kwartach angielskich"}\r
+                        one{"{0} kwarcie angielskiej"}\r
+                        other{"{0} kwarty angielskiej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} kwarty angielskie"}\r
+                        many{"{0} kwart angielskich"}\r
+                        one{"{0} kwarto angielska"}\r
+                        other{"{0} kwarty angielskiej"}\r
+                    }\r
+                }\r
                 dnam{"kwarty angielskie"}\r
                 few{"{0} kwarty angielskie"}\r
+                gender{"feminine"}\r
                 many{"{0} kwart angielskich"}\r
                 one{"{0} kwarta angielska"}\r
                 other{"{0} kwarty angielskiej"}\r
             }\r
             tablespoon{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} łyżki stołowe"}\r
+                        many{"{0} łyżek stołowych"}\r
+                        one{"{0} łyżkę stołową"}\r
+                        other{"{0} łyżki stołowej"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} łyżkom stołowym"}\r
+                        many{"{0} łyżkom stołowym"}\r
+                        one{"{0} łyżce stołowej"}\r
+                        other{"{0} łyżki stołowej"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} łyżek stołowych"}\r
+                        many{"{0} łyżek stołowych"}\r
+                        one{"{0} łyżki stołowej"}\r
+                        other{"{0} łyżki stołowej"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} łyżkami stołowymi"}\r
+                        many{"{0} łyżkami stołowymi"}\r
+                        one{"{0} łyżką stołową"}\r
+                        other{"{0} łyżki stołowej"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} łyżkach stołowych"}\r
+                        many{"{0} łyżkach stołowych"}\r
+                        one{"{0} łyżce stołowej"}\r
+                        other{"{0} łyżki stołowej"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} łyżki stołowe"}\r
+                        many{"{0} łyżek stołowych"}\r
+                        one{"{0} łyżko stołowa"}\r
+                        other{"{0} łyżki stołowej"}\r
+                    }\r
+                }\r
                 dnam{"łyżki stołowe"}\r
                 few{"{0} łyżki stołowe"}\r
+                gender{"feminine"}\r
                 many{"{0} łyżek stołowych"}\r
                 one{"{0} łyżka stołowa"}\r
                 other{"{0} łyżki stołowej"}\r
             }\r
             teaspoon{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} łyżeczki"}\r
+                        many{"{0} łyżeczek"}\r
+                        one{"{0} łyżeczkę"}\r
+                        other{"{0} łyżeczki"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} łyżeczkom"}\r
+                        many{"{0} łyżeczkom"}\r
+                        one{"{0} łyżeczkce"}\r
+                        other{"{0} łyżeczki"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} lyżeczek"}\r
+                        many{"{0} łyżeczek"}\r
+                        one{"{0} łyżeczki"}\r
+                        other{"{0} łyżeczki"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} łyżeczkami"}\r
+                        many{"{0} łyżeczkami"}\r
+                        one{"{0} łyżeczką"}\r
+                        other{"{0} łyżeczki"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} łyżeczkach"}\r
+                        many{"{0} łyżeczkach"}\r
+                        one{"{0} łyżeczce"}\r
+                        other{"{0} łyżeczki"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} łyżeczki"}\r
+                        many{"{0} łyżeczek"}\r
+                        one{"{0} łyżeczko"}\r
+                        other{"{0} łyżeczki"}\r
+                    }\r
+                }\r
                 dnam{"łyżeczki"}\r
                 few{"{0} łyżeczki"}\r
+                gender{"feminine"}\r
                 many{"{0} łyżeczek"}\r
                 one{"{0} łyżeczka"}\r
                 other{"{0} łyżeczki"}\r
@@ -1331,6 +4404,15 @@ pl{
                 other{"{0}″"}\r
             }\r
         }\r
+        compound{\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+        }\r
         concentr{\r
             percent{\r
                 dnam{"%"}\r
@@ -1522,11 +4604,20 @@ pl{
                 other{"{0} jarda kw."}\r
             }\r
         }\r
+        compound{\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+        }\r
         concentr{\r
             karat{\r
                 dnam{"karaty"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 few{"{0} mg/dl"}\r
                 many{"{0} mg/dl"}\r
index debcad8..5695dde 100644 (file)
@@ -105,7 +105,51 @@ ps{
             }\r
         }\r
         compound{\r
+            10p-1{"پرېکړه{0}"}\r
+            10p-12{"پیکو {0}"}\r
+            10p-15{"فيمتو {0}"}\r
+            10p-18{"أتو{0}"}\r
+            10p-2{"سانتي {0}"}\r
+            10p-21{"زیپټو {0}"}\r
+            10p-24{"یکوټو {0}"}\r
+            10p-3{"ملی {0}"}\r
+            10p-6{"مایکرو {0}"}\r
+            10p-9{"نانو {0}"}\r
+            10p1{"ډیکا {0}"}\r
+            10p12{"تیرا {0}"}\r
+            10p15{"پیټا {0}"}\r
+            10p18{"إکساء {0}"}\r
+            10p2{"هیکو {0}"}\r
+            10p21{"زیټا {0}"}\r
+            10p24{"یوټا {0}"}\r
+            10p3{"کیلو {0}"}\r
+            10p6{"میگا {0}"}\r
+            10p9{"ګیګا {0}"}\r
             per{"{0}في {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}مربع"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} مربع"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"کیوبک {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}معکب"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +157,7 @@ ps{
                 one{"{0} قيراط"}\r
                 other{"{0} قيراط"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ملي ګرام في ډيسي ليټر"}\r
                 one{"{0} ملي ګرام في ډيسي ليټر"}\r
                 other{"{0} ملي ګرام في ډيسي ليټر"}\r
@@ -861,7 +905,39 @@ ps{
     }\r
     unitsNarrow{\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"مربع {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1079,7 +1155,52 @@ ps{
             }\r
         }\r
         compound{\r
+            1024p3{"Gi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"مربع {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1087,7 +1208,7 @@ ps{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1446,9 +1567,9 @@ ps{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmeters"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmeters"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"ميلونه"}\r
@@ -1539,9 +1660,9 @@ ps{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index c7a8996..577b924 100644 (file)
@@ -11,11 +11,13 @@ pt{
         acceleration{\r
             g-force{\r
                 dnam{"força g"}\r
+                gender{"feminine"}\r
                 one{"{0} força g"}\r
                 other{"{0} força g"}\r
             }\r
             meter-per-square-second{\r
                 dnam{"metros por segundo ao quadrado"}\r
+                gender{"masculine"}\r
                 one{"{0} metro por segundo ao quadrado"}\r
                 other{"{0} metros por segundo ao quadrado"}\r
             }\r
@@ -50,6 +52,7 @@ pt{
         area{\r
             acre{\r
                 dnam{"acres"}\r
+                gender{"masculine"}\r
                 one{"{0} acre"}\r
                 other{"{0} acres"}\r
             }\r
@@ -60,17 +63,20 @@ pt{
             }\r
             hectare{\r
                 dnam{"hectares"}\r
+                gender{"masculine"}\r
                 one{"{0} hectare"}\r
                 other{"{0} hectares"}\r
             }\r
             square-centimeter{\r
                 dnam{"centímetros quadrados"}\r
+                gender{"masculine"}\r
                 one{"{0} centímetro quadrado"}\r
                 other{"{0} centímetros quadrados"}\r
                 per{"{0} por centímetro quadrado"}\r
             }\r
             square-foot{\r
                 dnam{"pés quadrados"}\r
+                gender{"masculine"}\r
                 one{"{0} pé quadrado"}\r
                 other{"{0} pés quadrados"}\r
             }\r
@@ -82,6 +88,7 @@ pt{
             }\r
             square-kilometer{\r
                 dnam{"quilômetros quadrados"}\r
+                gender{"masculine"}\r
                 one{"{0} quilômetro quadrado"}\r
                 other{"{0} quilômetros quadrados"}\r
                 per{"{0} por quilômetro quadrado"}\r
@@ -94,6 +101,7 @@ pt{
             }\r
             square-mile{\r
                 dnam{"milhas quadradas"}\r
+                gender{"feminine"}\r
                 one{"{0} milha quadrada"}\r
                 other{"{0} milhas quadradas"}\r
                 per{"{0} por milha quadrada"}\r
@@ -105,7 +113,71 @@ pt{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"iocto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deca{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zeta{0}"}\r
+            10p24{"iota{0}"}\r
+            10p3{"quilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} por {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} quadrado"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} quadrada"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} quadrados"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} quadradas"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} cúbico"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} cúbica"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} cúbicos"}\r
+                    }\r
+                    feminine{\r
+                        _{"{0} cúbicas"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +185,7 @@ pt{
                 one{"{0} kilate"}\r
                 other{"{0} kilates"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramas por decilitro"}\r
                 one{"{0} miligrama por decilitro"}\r
                 other{"{0} miligramas por decilitro"}\r
@@ -130,6 +202,7 @@ pt{
             }\r
             percent{\r
                 dnam{"por cento"}\r
+                gender{"masculine"}\r
                 one{"{0} por cento"}\r
                 other{"{0} por cento"}\r
             }\r
@@ -151,21 +224,25 @@ pt{
         consumption{\r
             liter-per-100-kilometer{\r
                 dnam{"litros por 100 quilômetros"}\r
+                gender{"masculine"}\r
                 one{"{0} litro por 100 quilômetros"}\r
                 other{"{0} litros por 100 quilômetros"}\r
             }\r
             liter-per-kilometer{\r
                 dnam{"litros por quilômetro"}\r
+                gender{"masculine"}\r
                 one{"{0} litro por quilômetro"}\r
                 other{"{0} litros por quilômetro"}\r
             }\r
             mile-per-gallon{\r
                 dnam{"milhas por galão"}\r
+                gender{"feminine"}\r
                 one{"{0} milha por galão"}\r
                 other{"{0} milhas por galão"}\r
             }\r
             mile-per-gallon-imperial{\r
                 dnam{"milhas por galão imperial"}\r
+                gender{"feminine"}\r
                 one{"{0} milha por galão imperial"}\r
                 other{"{0} milhas por galão imperial"}\r
             }\r
@@ -242,6 +319,7 @@ pt{
             }\r
             day{\r
                 dnam{"dias"}\r
+                gender{"masculine"}\r
                 one{"{0} dia"}\r
                 other{"{0} dias"}\r
                 per{"{0} por dia"}\r
@@ -253,6 +331,7 @@ pt{
             }\r
             hour{\r
                 dnam{"horas"}\r
+                gender{"feminine"}\r
                 one{"{0} hora"}\r
                 other{"{0} horas"}\r
                 per{"{0} por hora"}\r
@@ -269,12 +348,14 @@ pt{
             }\r
             minute{\r
                 dnam{"minutos"}\r
+                gender{"masculine"}\r
                 one{"{0} minuto"}\r
                 other{"{0} minutos"}\r
                 per{"{0} por minuto"}\r
             }\r
             month{\r
                 dnam{"meses"}\r
+                gender{"masculine"}\r
                 one{"{0} mês"}\r
                 other{"{0} meses"}\r
                 per{"{0} por mês"}\r
@@ -286,18 +367,21 @@ pt{
             }\r
             second{\r
                 dnam{"segundos"}\r
+                gender{"masculine"}\r
                 one{"{0} segundo"}\r
                 other{"{0} segundos"}\r
                 per{"{0} por segundo"}\r
             }\r
             week{\r
                 dnam{"semanas"}\r
+                gender{"feminine"}\r
                 one{"{0} semana"}\r
                 other{"{0} semanas"}\r
                 per{"{0} por semana"}\r
             }\r
             year{\r
                 dnam{"anos"}\r
+                gender{"masculine"}\r
                 one{"{0} ano"}\r
                 other{"{0} anos"}\r
                 per{"{0} por ano"}\r
@@ -343,6 +427,7 @@ pt{
             }\r
             foodcalorie{\r
                 dnam{"Calorias"}\r
+                gender{"feminine"}\r
                 one{"{0} Caloria"}\r
                 other{"{0} Calorias"}\r
             }\r
@@ -353,6 +438,7 @@ pt{
             }\r
             kilocalorie{\r
                 dnam{"quilocalorias"}\r
+                gender{"feminine"}\r
                 one{"{0} quilocaloria"}\r
                 other{"{0} quilocalorias"}\r
             }\r
@@ -454,6 +540,7 @@ pt{
             }\r
             centimeter{\r
                 dnam{"centímetros"}\r
+                gender{"masculine"}\r
                 one{"{0} centímetro"}\r
                 other{"{0} centímetros"}\r
                 per{"{0} por centímetro"}\r
@@ -475,6 +562,7 @@ pt{
             }\r
             foot{\r
                 dnam{"pés"}\r
+                gender{"masculine"}\r
                 one{"{0} pé"}\r
                 other{"{0} pés"}\r
                 per{"{0} por pé"}\r
@@ -486,12 +574,14 @@ pt{
             }\r
             inch{\r
                 dnam{"polegadas"}\r
+                gender{"feminine"}\r
                 one{"{0} polegada"}\r
                 other{"{0} polegadas"}\r
                 per{"{0} por polegada"}\r
             }\r
             kilometer{\r
                 dnam{"quilômetros"}\r
+                gender{"masculine"}\r
                 one{"{0} quilômetro"}\r
                 other{"{0} quilômetros"}\r
                 per{"{0} por quilômetro"}\r
@@ -503,6 +593,7 @@ pt{
             }\r
             meter{\r
                 dnam{"metros"}\r
+                gender{"masculine"}\r
                 one{"{0} metro"}\r
                 other{"{0} metros"}\r
                 per{"{0} por metro"}\r
@@ -514,6 +605,7 @@ pt{
             }\r
             mile{\r
                 dnam{"milhas"}\r
+                gender{"feminine"}\r
                 one{"{0} milha"}\r
                 other{"{0} milhas"}\r
             }\r
@@ -524,6 +616,7 @@ pt{
             }\r
             millimeter{\r
                 dnam{"milímetros"}\r
+                gender{"masculine"}\r
                 one{"{0} milímetro"}\r
                 other{"{0} milímetros"}\r
             }\r
@@ -539,11 +632,13 @@ pt{
             }\r
             parsec{\r
                 dnam{"parsecs"}\r
+                gender{"masculine"}\r
                 one{"{0} parsec"}\r
                 other{"{0} parsecs"}\r
             }\r
             picometer{\r
                 dnam{"picômetros"}\r
+                gender{"masculine"}\r
                 one{"{0} picômetro"}\r
                 other{"{0} picômetros"}\r
             }\r
@@ -554,11 +649,13 @@ pt{
             }\r
             solar-radius{\r
                 dnam{"raios solares"}\r
+                gender{"masculine"}\r
                 one{"{0} raio solar"}\r
                 other{"{0} raios solares"}\r
             }\r
             yard{\r
                 dnam{"jardas"}\r
+                gender{"feminine"}\r
                 one{"{0} jarda"}\r
                 other{"{0} jardas"}\r
             }\r
@@ -581,6 +678,7 @@ pt{
             }\r
             solar-luminosity{\r
                 dnam{"luminosidades solares"}\r
+                gender{"feminine"}\r
                 one{"{0} luminosidade solar"}\r
                 other{"{0} luminosidades solares"}\r
             }\r
@@ -593,27 +691,32 @@ pt{
             }\r
             dalton{\r
                 dnam{"daltons"}\r
+                gender{"masculine"}\r
                 one{"{0} dalton"}\r
                 other{"{0} daltons"}\r
             }\r
             earth-mass{\r
                 dnam{"massa terrestre"}\r
+                gender{"feminine"}\r
                 one{"{0} massa terrestre"}\r
                 other{"{0} massas terrestres"}\r
             }\r
             grain{\r
                 dnam{"grão"}\r
+                gender{"masculine"}\r
                 one{"{0} grão"}\r
                 other{"{0} grãos"}\r
             }\r
             gram{\r
                 dnam{"gramas"}\r
+                gender{"masculine"}\r
                 one{"{0} grama"}\r
                 other{"{0} gramas"}\r
                 per{"{0} por grama"}\r
             }\r
             kilogram{\r
                 dnam{"quilogramas"}\r
+                gender{"masculine"}\r
                 one{"{0} quilograma"}\r
                 other{"{0} quilogramas"}\r
                 per{"{0} por quilograma"}\r
@@ -630,11 +733,13 @@ pt{
             }\r
             milligram{\r
                 dnam{"miligramas"}\r
+                gender{"masculine"}\r
                 one{"{0} miligrama"}\r
                 other{"{0} miligramas"}\r
             }\r
             ounce{\r
                 dnam{"onças"}\r
+                gender{"feminine"}\r
                 one{"{0} onça"}\r
                 other{"{0} onças"}\r
                 per{"{0} por onça"}\r
@@ -646,12 +751,14 @@ pt{
             }\r
             pound{\r
                 dnam{"libras"}\r
+                gender{"feminine"}\r
                 one{"{0} libra"}\r
                 other{"{0} libras"}\r
                 per{"{0} por libra"}\r
             }\r
             solar-mass{\r
                 dnam{"massas solares"}\r
+                gender{"feminine"}\r
                 one{"{0} massa solar"}\r
                 other{"{0} massas solares"}\r
             }\r
@@ -721,6 +828,7 @@ pt{
             }\r
             kilopascal{\r
                 dnam{"quilopascais"}\r
+                gender{"masculine"}\r
                 one{"{0} quilopascal"}\r
                 other{"{0} quilopascais"}\r
             }\r
@@ -753,6 +861,7 @@ pt{
         speed{\r
             kilometer-per-hour{\r
                 dnam{"quilômetros por hora"}\r
+                gender{"masculine"}\r
                 one{"{0} quilômetro por hora"}\r
                 other{"{0} quilômetros por hora"}\r
             }\r
@@ -763,11 +872,13 @@ pt{
             }\r
             meter-per-second{\r
                 dnam{"metros por segundo"}\r
+                gender{"masculine"}\r
                 one{"{0} metro por segundo"}\r
                 other{"{0} metros por segundo"}\r
             }\r
             mile-per-hour{\r
                 dnam{"milhas por hora"}\r
+                gender{"feminine"}\r
                 one{"{0} milha por hora"}\r
                 other{"{0} milhas por hora"}\r
             }\r
@@ -775,16 +886,22 @@ pt{
         temperature{\r
             celsius{\r
                 dnam{"graus Celsius"}\r
+                gender{"masculine"}\r
                 one{"{0} grau Celsius"}\r
                 other{"{0} graus Celsius"}\r
             }\r
             fahrenheit{\r
                 dnam{"graus Fahrenheit"}\r
+                gender{"masculine"}\r
                 one{"{0} grau Fahrenheit"}\r
                 other{"{0} graus Fahrenheit"}\r
             }\r
+            generic{\r
+                gender{"masculine"}\r
+            }\r
             kelvin{\r
                 dnam{"kelvins"}\r
+                gender{"masculine"}\r
                 one{"{0} kelvin"}\r
                 other{"{0} kelvins"}\r
             }\r
@@ -819,17 +936,20 @@ pt{
             }\r
             centiliter{\r
                 dnam{"centilitros"}\r
+                gender{"masculine"}\r
                 one{"{0} centilitro"}\r
                 other{"{0} centilitros"}\r
             }\r
             cubic-centimeter{\r
                 dnam{"centímetros cúbicos"}\r
+                gender{"masculine"}\r
                 one{"{0} centímetro cúbico"}\r
                 other{"{0} centímetros cúbicos"}\r
                 per{"{0} por centímetro cúbico"}\r
             }\r
             cubic-foot{\r
                 dnam{"pés cúbicos"}\r
+                gender{"masculine"}\r
                 one{"{0} pé cúbico"}\r
                 other{"{0} pés cúbicos"}\r
             }\r
@@ -851,6 +971,7 @@ pt{
             }\r
             cubic-mile{\r
                 dnam{"milhas cúbicas"}\r
+                gender{"feminine"}\r
                 one{"{0} milha cúbica"}\r
                 other{"{0} milhas cúbicas"}\r
             }\r
@@ -861,6 +982,7 @@ pt{
             }\r
             cup{\r
                 dnam{"xícaras"}\r
+                gender{"feminine"}\r
                 one{"{0} xícara"}\r
                 other{"{0} xícaras"}\r
             }\r
@@ -871,46 +993,55 @@ pt{
             }\r
             deciliter{\r
                 dnam{"decilitros"}\r
+                gender{"masculine"}\r
                 one{"{0} decilitro"}\r
                 other{"{0} decilitros"}\r
             }\r
             dessert-spoon{\r
                 dnam{"colher de sobremesa"}\r
+                gender{"feminine"}\r
                 one{"{0} colher de sobremesa"}\r
                 other{"{0} colheres de sobremesa"}\r
             }\r
             dessert-spoon-imperial{\r
+                gender{"feminine"}\r
                 one{"{0} colher de sobremesa imperial"}\r
                 other{"{0} colheres de sobremesa imperiais"}\r
             }\r
             dram{\r
                 dnam{"dracma"}\r
+                gender{"masculine"}\r
                 one{"{0} dracma líquido"}\r
                 other{"{0} dracmas líquidos"}\r
             }\r
             drop{\r
                 dnam{"gota"}\r
+                gender{"feminine"}\r
                 one{"{0} gota"}\r
                 other{"{0} gotas"}\r
             }\r
             fluid-ounce{\r
                 dnam{"onças fluidas"}\r
+                gender{"feminine"}\r
                 one{"{0} onça fluida"}\r
                 other{"{0} onças fluidas"}\r
             }\r
             fluid-ounce-imperial{\r
                 dnam{"onças fluidas imperiais"}\r
+                gender{"feminine"}\r
                 one{"{0} onça fluida imperial"}\r
                 other{"{0} onças fluidas imperiais"}\r
             }\r
             gallon{\r
                 dnam{"galões"}\r
+                gender{"masculine"}\r
                 one{"{0} galão"}\r
                 other{"{0} galões"}\r
                 per{"{0} por galão"}\r
             }\r
             gallon-imperial{\r
                 dnam{"galões imperiais"}\r
+                gender{"masculine"}\r
                 one{"{0} galão imperial"}\r
                 other{"{0} galões imperiais"}\r
                 per{"{0} por galão imperial"}\r
@@ -922,11 +1053,13 @@ pt{
             }\r
             jigger{\r
                 dnam{"dosador"}\r
+                gender{"masculine"}\r
                 one{"{0} dosador"}\r
                 other{"{0} dosadores"}\r
             }\r
             liter{\r
                 dnam{"litros"}\r
+                gender{"masculine"}\r
                 one{"{0} litro"}\r
                 other{"{0} litros"}\r
                 per{"{0} por litro"}\r
@@ -938,16 +1071,19 @@ pt{
             }\r
             milliliter{\r
                 dnam{"mililitros"}\r
+                gender{"masculine"}\r
                 one{"{0} mililitro"}\r
                 other{"{0} mililitros"}\r
             }\r
             pinch{\r
                 dnam{"pitada"}\r
+                gender{"feminine"}\r
                 one{"{0} pitada"}\r
                 other{"{0} pitadas"}\r
             }\r
             pint{\r
                 dnam{"pints"}\r
+                gender{"masculine"}\r
                 one{"{0} pint"}\r
                 other{"{0} pints"}\r
             }\r
@@ -958,21 +1094,25 @@ pt{
             }\r
             quart{\r
                 dnam{"quartos"}\r
+                gender{"masculine"}\r
                 one{"{0} quarto"}\r
                 other{"{0} quartos"}\r
             }\r
             quart-imperial{\r
                 dnam{"quarto imperial"}\r
+                gender{"masculine"}\r
                 one{"{0} quarto imperial"}\r
                 other{"{0} quartos imperiais"}\r
             }\r
             tablespoon{\r
                 dnam{"colheres de sopa"}\r
+                gender{"feminine"}\r
                 one{"{0} colher de sopa"}\r
                 other{"{0} colheres de sopa"}\r
             }\r
             teaspoon{\r
                 dnam{"colheres de chá"}\r
+                gender{"feminine"}\r
                 one{"{0} colher de chá"}\r
                 other{"{0} colheres de chá"}\r
             }\r
@@ -1000,6 +1140,16 @@ pt{
                 other{"{0} acres"}\r
             }\r
         }\r
+        compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+        }\r
         concentr{\r
             percent{\r
                 dnam{"%"}\r
@@ -1249,13 +1399,23 @@ pt{
                 dnam{"jardas²"}\r
             }\r
         }\r
+        compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+        }\r
         concentr{\r
             karat{\r
                 dnam{"kilates"}\r
                 one{"{0} k"}\r
                 other{"{0} k"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
index a9c5f4c..dce5688 100644 (file)
@@ -23,6 +23,52 @@ pt_PT{
                 per{"{0} por quilómetro quadrado"}\r
             }\r
         }\r
+        compound{\r
+            10p-1{"decí{0}"}\r
+            10p-12{"picó{0}"}\r
+            10p-15{"fentó{0}"}\r
+            10p-18{"ató{0}"}\r
+            10p-2{"centí{0}"}\r
+            10p-21{"zeptó{0}"}\r
+            10p-24{"ioctó{0}"}\r
+            10p-3{"milí{0}"}\r
+            10p-6{"micró{0}"}\r
+            10p-9{"nanó{0}"}\r
+            10p1{"decâ{0}"}\r
+            10p12{"terâ{0}"}\r
+            10p15{"petâ{0}"}\r
+            10p18{"exâ{0}"}\r
+            10p2{"hectó{0}"}\r
+            10p21{"zetâ{0}"}\r
+            10p24{"iotâ{0}"}\r
+            10p3{"quiló{0}"}\r
+            10p6{"megâ{0}"}\r
+            10p9{"gigâ{0}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} quadrado"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} quadrados"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} cúbico"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} cúbicos"}\r
+                    }\r
+                }\r
+            }\r
+        }\r
         concentr{\r
             karat{\r
                 dnam{"quilates"}\r
@@ -664,9 +710,9 @@ pt_PT{
                 other{"{0} m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 one{"{0} milha"}\r
@@ -727,9 +773,9 @@ pt_PT{
                 other{"{0} kg"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index d27a17e..c3bcb31 100644 (file)
@@ -62,7 +62,49 @@ qu{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} sapa {1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"cuadrado {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"cubico {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             permillion{\r
index d621228..386fbb2 100644 (file)
@@ -122,7 +122,69 @@ ro{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deca{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} pe {1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0} pătrați/pătrate"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} pătrat/ă"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} pătrați/pătrate"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0} cubi"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0} cub"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} cubi"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         concentr{\r
@@ -132,7 +194,7 @@ ro{
                 one{"{0} karată"}\r
                 other{"{0} de karate"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligrame pe decilitru"}\r
                 few{"{0} miligrame pe decilitru"}\r
                 one{"{0} miligram pe decilitru"}\r
@@ -1228,8 +1290,28 @@ ro{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
-            times{"{0}{1}"}\r
+            times{"{0} {1}"}\r
         }\r
         concentr{\r
             percent{\r
@@ -1384,10 +1466,10 @@ ro{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1472,10 +1554,10 @@ ro{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -1745,8 +1827,28 @@ ro{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
-            times{"{0}{1}"}\r
+            times{"{0} {1}"}\r
         }\r
         concentr{\r
             karat{\r
@@ -1755,7 +1857,7 @@ ro{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 few{"{0} mg/dl"}\r
                 one{"{0} mg/dl"}\r
@@ -2176,10 +2278,10 @@ ro{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -2296,10 +2398,10 @@ ro{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 1356ce4..b03fb0c 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 root{\r
-    Version{"38.1"}\r
+    Version{"39"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
@@ -91,7 +91,49 @@ root{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -99,7 +141,7 @@ root{
                 dnam{"kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 other{"{0} mg/dL"}\r
             }\r
@@ -220,8 +262,8 @@ root{
                 per{"{0}/h"}\r
             }\r
             microsecond{\r
-                dnam{"µs"}\r
-                other{"{0} µs"}\r
+                dnam{"μs"}\r
+                other{"{0} μs"}\r
             }\r
             millisecond{\r
                 dnam{"ms"}\r
@@ -291,10 +333,7 @@ root{
                 dnam{"eV"}\r
                 other{"{0} eV"}\r
             }\r
-            foodcalorie{\r
-                dnam{"Cal"}\r
-                other{"{0} Cal"}\r
-            }\r
+            foodcalorie:alias{"/LOCALE/unitsShort/energy/kilocalorie"}\r
             joule{\r
                 dnam{"joule"}\r
                 other{"{0} J"}\r
@@ -345,18 +384,9 @@ root{
             }\r
         }\r
         graphics{\r
-            dot{\r
-                dnam{"dot"}\r
-                other{"{0} dot"}\r
-            }\r
-            dot-per-centimeter{\r
-                dnam{"dpcm"}\r
-                other{"{0} dpcm"}\r
-            }\r
-            dot-per-inch{\r
-                dnam{"dpi"}\r
-                other{"{0} dpi"}\r
-            }\r
+            dot-per-centimeter:alias{"/LOCALE/unitsShort/graphics/pixel-per-centimeter"}\r
+            dot-per-inch:alias{"/LOCALE/unitsShort/graphics/pixel-per-inch"}\r
+            dot:alias{"/LOCALE/unitsShort/graphics/pixel"}\r
             em{\r
                 dnam{"em"}\r
                 other{"{0} em"}\r
@@ -429,8 +459,8 @@ root{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -523,8 +553,8 @@ root{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index e31f645..a33e756 100644 (file)
@@ -10,15 +10,103 @@ ru{
     units{\r
         acceleration{\r
             g-force{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} g"}\r
+                        many{"{0} g"}\r
+                        one{"{0} g"}\r
+                        other{"{0} g"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} g"}\r
+                        many{"{0} g"}\r
+                        one{"{0} g"}\r
+                        other{"{0} g"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} g"}\r
+                        many{"{0} g"}\r
+                        one{"{0} g"}\r
+                        other{"{0} g"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} g"}\r
+                        many{"{0} g"}\r
+                        one{"{0} g"}\r
+                        other{"{0} g"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} g"}\r
+                        many{"{0} g"}\r
+                        one{"{0} g"}\r
+                        other{"{0} g"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} g"}\r
+                        many{"{0} g"}\r
+                        one{"{0} g"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} g"}\r
+                        many{"{0} g"}\r
+                        one{"{0} g"}\r
+                        other{"{0} g"}\r
+                    }\r
+                }\r
                 dnam{"ускорение свободного падения"}\r
                 few{"{0} g"}\r
+                gender{"masculine"}\r
                 many{"{0} g"}\r
                 one{"{0} g"}\r
                 other{"{0} g"}\r
             }\r
             meter-per-square-second{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} метра на секунду в квадрате"}\r
+                        many{"{0} метров на секунду в квадрате"}\r
+                        one{"{0} метр на секунду в квадрате"}\r
+                        other{"{0} метра на секунду в квадрате"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} метрам на секунду в квадрате"}\r
+                        many{"{0} метрам на секунду в квадрате"}\r
+                        one{"{0} метру на секунду в квадрате"}\r
+                        other{"{0} метра на секунду в квадрате"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} метров на секунду в квадрате"}\r
+                        many{"{0} метров на секунду в квадрате"}\r
+                        one{"{0} метра на секунду в квадрате"}\r
+                        other{"{0} метра на секунду в квадрате"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} метрами на секунду в квадрате"}\r
+                        many{"{0} метрами на секунду в квадрате"}\r
+                        one{"{0} метром на секунду в квадрате"}\r
+                        other{"{0} метра на секунду в квадрате"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} метрах на секунду в квадрате"}\r
+                        many{"{0} метрах на секунду в квадрате"}\r
+                        one{"{0} метре на секунду в квадрате"}\r
+                        other{"{0} метра на секунду в квадрате"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} метрах на секунду в квадрате"}\r
+                        many{"{0} метрах на секунду в квадрате"}\r
+                        one{"{0} метре на секунду в квадрате"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} метра на секунду в квадрате"}\r
+                        many{"{0} метров на секунду в квадрате"}\r
+                        one{"{0} метр на секунду в квадрате"}\r
+                        other{"{0} метра на секунду в квадрате"}\r
+                    }\r
+                }\r
                 dnam{"метры на секунду в квадрате"}\r
                 few{"{0} метра на секунду в квадрате"}\r
+                gender{"masculine"}\r
                 many{"{0} метров на секунду в квадрате"}\r
                 one{"{0} метр на секунду в квадрате"}\r
                 other{"{0} метра на секунду в квадрате"}\r
@@ -63,8 +151,52 @@ ru{
         }\r
         area{\r
             acre{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} акра"}\r
+                        many{"{0} акров"}\r
+                        one{"{0} акр"}\r
+                        other{"{0} акра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} акрам"}\r
+                        many{"{0} акрам"}\r
+                        one{"{0} акру"}\r
+                        other{"{0} акра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} акров"}\r
+                        many{"{0} акров"}\r
+                        one{"{0} акра"}\r
+                        other{"{0} акра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} акрами"}\r
+                        many{"{0} акрами"}\r
+                        one{"{0} акром"}\r
+                        other{"{0} акра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} акрах"}\r
+                        many{"{0} акрах"}\r
+                        one{"{0} акре"}\r
+                        other{"{0} акра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} акрах"}\r
+                        many{"{0} акрах"}\r
+                        one{"{0} акре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} акра"}\r
+                        many{"{0} акров"}\r
+                        one{"{0} акр"}\r
+                        other{"{0} акра"}\r
+                    }\r
+                }\r
                 dnam{"акры"}\r
                 few{"{0} акра"}\r
+                gender{"masculine"}\r
                 many{"{0} акров"}\r
                 one{"{0} акр"}\r
                 other{"{0} акра"}\r
@@ -77,23 +209,155 @@ ru{
                 other{"{0} дунама"}\r
             }\r
             hectare{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} гектара"}\r
+                        many{"{0} гектаров"}\r
+                        one{"{0} гектар"}\r
+                        other{"{0} гектара"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} гектарам"}\r
+                        many{"{0} гектарам"}\r
+                        one{"{0} гектару"}\r
+                        other{"{0} гектара"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} гектаров"}\r
+                        many{"{0} гектаров"}\r
+                        one{"{0} гектара"}\r
+                        other{"{0} гектара"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} гектарами"}\r
+                        many{"{0} гектарами"}\r
+                        one{"{0} гектаром"}\r
+                        other{"{0} гектара"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} гектарах"}\r
+                        many{"{0} гектарах"}\r
+                        one{"{0} гектаре"}\r
+                        other{"{0} гектара"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} гектарах"}\r
+                        many{"{0} гектарах"}\r
+                        one{"{0} гектаре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} гектара"}\r
+                        many{"{0} гектаров"}\r
+                        one{"{0} гектар"}\r
+                        other{"{0} гектара"}\r
+                    }\r
+                }\r
                 dnam{"гектары"}\r
                 few{"{0} гектара"}\r
+                gender{"masculine"}\r
                 many{"{0} гектаров"}\r
                 one{"{0} гектар"}\r
                 other{"{0} гектара"}\r
             }\r
             square-centimeter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} квадратных сантиметра"}\r
+                        many{"{0} квадратных сантиметров"}\r
+                        one{"{0} квадратный сантиметр"}\r
+                        other{"{0} квадратного сантиметра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} квадратным сантиметрам"}\r
+                        many{"{0} квадратным сантиметрам"}\r
+                        one{"{0} квадратному сантиметру"}\r
+                        other{"{0} квадратного сантиметра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} квадратных сантиметров"}\r
+                        many{"{0} квадратных сантиметров"}\r
+                        one{"{0} квадратного сантиметра"}\r
+                        other{"{0} квадратного сантиметра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} квадратными сантиметрами"}\r
+                        many{"{0} квадратными сантиметрами"}\r
+                        one{"{0} квадратным сантиметром"}\r
+                        other{"{0} квадратного сантиметра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} квадратных сантиметрах"}\r
+                        many{"{0} квадратных сантиметрах"}\r
+                        one{"{0} квадратном сантиметре"}\r
+                        other{"{0} квадратного сантиметра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} квадратных сантиметрах"}\r
+                        many{"{0} квадратных сантиметрах"}\r
+                        one{"{0} квадратном сантиметре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} квадратных сантиметра"}\r
+                        many{"{0} квадратных сантиметров"}\r
+                        one{"{0} квадратный сантиметр"}\r
+                        other{"{0} квадратного сантиметра"}\r
+                    }\r
+                }\r
                 dnam{"квадратные сантиметры"}\r
                 few{"{0} квадратных сантиметра"}\r
+                gender{"masculine"}\r
                 many{"{0} квадратных сантиметров"}\r
                 one{"{0} квадратный сантиметр"}\r
                 other{"{0} квадратного сантиметра"}\r
                 per{"{0} на квадратный сантиметр"}\r
             }\r
             square-foot{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} квадратных фута"}\r
+                        many{"{0} квадратных футов"}\r
+                        one{"{0} квадратный фут"}\r
+                        other{"{0} квадратного фута"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} квадратным футам"}\r
+                        many{"{0} квадратным футам"}\r
+                        one{"{0} квадратному футу"}\r
+                        other{"{0} квадратного фута"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} квадратных футов"}\r
+                        many{"{0} квадратных футов"}\r
+                        one{"{0} квадратного фута"}\r
+                        other{"{0} квадратного фута"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} квадратными футами"}\r
+                        many{"{0} квадратными футами"}\r
+                        one{"{0} квадратным футом"}\r
+                        other{"{0} квадратного фута"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} квадратных футах"}\r
+                        many{"{0} квадратных футах"}\r
+                        one{"{0} квадратном футе"}\r
+                        other{"{0} квадратного фута"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} квадратных футах"}\r
+                        many{"{0} квадратных футах"}\r
+                        one{"{0} квадратном футе"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} квадратных фута"}\r
+                        many{"{0} квадратных футов"}\r
+                        one{"{0} квадратный фут"}\r
+                        other{"{0} квадратного фута"}\r
+                    }\r
+                }\r
                 dnam{"квадратные футы"}\r
                 few{"{0} квадратных фута"}\r
+                gender{"masculine"}\r
                 many{"{0} квадратных футов"}\r
                 one{"{0} квадратный фут"}\r
                 other{"{0} квадратного фута"}\r
@@ -107,8 +371,52 @@ ru{
                 per{"{0} на квадратный дюйм"}\r
             }\r
             square-kilometer{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} квадратных километра"}\r
+                        many{"{0} квадратных километров"}\r
+                        one{"{0} квадратный километр"}\r
+                        other{"{0} квадратного километра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} квадратным километрам"}\r
+                        many{"{0} квадратным километрам"}\r
+                        one{"{0} квадратному километру"}\r
+                        other{"{0} квадратного километра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} квадратных километров"}\r
+                        many{"{0} квадратных километров"}\r
+                        one{"{0} квадратного километра"}\r
+                        other{"{0} квадратного километра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} квадратными километрами"}\r
+                        many{"{0} квадратными километрами"}\r
+                        one{"{0} квадратным километром"}\r
+                        other{"{0} квадратного километра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} квадратных километрах"}\r
+                        many{"{0} квадратных километрах"}\r
+                        one{"{0} квадратном километре"}\r
+                        other{"{0} квадратного километра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} квадратных километрах"}\r
+                        many{"{0} квадратных километрах"}\r
+                        one{"{0} квадратном километре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} квадратных километра"}\r
+                        many{"{0} квадратных километров"}\r
+                        one{"{0} квадратный километр"}\r
+                        other{"{0} квадратного километра"}\r
+                    }\r
+                }\r
                 dnam{"квадратные километры"}\r
                 few{"{0} квадратных километра"}\r
+                gender{"masculine"}\r
                 many{"{0} квадратных километров"}\r
                 one{"{0} квадратный километр"}\r
                 other{"{0} квадратного километра"}\r
@@ -123,8 +431,52 @@ ru{
                 per{"{0} на квадратный метр"}\r
             }\r
             square-mile{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} квадратные мили"}\r
+                        many{"{0} квадратных миль"}\r
+                        one{"{0} квадратную милю"}\r
+                        other{"{0} квадратной мили"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} квадратным милям"}\r
+                        many{"{0} квадратным милям"}\r
+                        one{"{0} квадратной миле"}\r
+                        other{"{0} квадратной мили"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} квадратных миль"}\r
+                        many{"{0} квадратных миль"}\r
+                        one{"{0} квадратной мили"}\r
+                        other{"{0} квадратной мили"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} квадратными милями"}\r
+                        many{"{0} квадратными милями"}\r
+                        one{"{0} квадратной милей"}\r
+                        other{"{0} квадратной мили"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} квадратных милях"}\r
+                        many{"{0} квадратных милях"}\r
+                        one{"{0} квадратной миле"}\r
+                        other{"{0} квадратной мили"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} квадратных милях"}\r
+                        many{"{0} квадратных милях"}\r
+                        one{"{0} квадратной миле"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} квадратные мили"}\r
+                        many{"{0} квадратных миль"}\r
+                        one{"{0} квадратная миля"}\r
+                        other{"{0} квадратной мили"}\r
+                    }\r
+                }\r
                 dnam{"квадратные мили"}\r
                 few{"{0} квадратные мили"}\r
+                gender{"feminine"}\r
                 many{"{0} квадратных миль"}\r
                 one{"{0} квадратная миля"}\r
                 other{"{0} квадратной мили"}\r
@@ -139,7 +491,199 @@ ru{
             }\r
         }\r
         compound{\r
+            1024p1{"киби{0}"}\r
+            1024p2{"меби{0}"}\r
+            1024p3{"гиби{0}"}\r
+            1024p4{"теби{0}"}\r
+            1024p5{"пеби{0}"}\r
+            1024p6{"эксби{0}"}\r
+            1024p7{"зеби{0}"}\r
+            1024p8{"йоби{0}"}\r
+            10p-1{"деци{0}"}\r
+            10p-12{"пико{0}"}\r
+            10p-15{"фемто{0}"}\r
+            10p-18{"атто{0}"}\r
+            10p-2{"санти{0}"}\r
+            10p-21{"зепто{0}"}\r
+            10p-24{"иокто{0}"}\r
+            10p-3{"милли{0}"}\r
+            10p-6{"микро{0}"}\r
+            10p-9{"нано{0}"}\r
+            10p1{"дека{0}"}\r
+            10p12{"тера{0}"}\r
+            10p15{"пета{0}"}\r
+            10p18{"экса{0}"}\r
+            10p2{"гекто{0}"}\r
+            10p21{"зетта{0}"}\r
+            10p24{"иотта{0}"}\r
+            10p3{"кило{0}"}\r
+            10p6{"мега{0}"}\r
+            10p9{"гига{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"квадратных {0}"}\r
+                        accusative{"квадратного {0}"}\r
+                        dative{"квадратным {0}"}\r
+                        genitive{"квадратного {0}"}\r
+                        instrumental{"квадратными {0}"}\r
+                        locative{"квадратного {0}"}\r
+                        vocative{"квадратного {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"квадратные {0}"}\r
+                        accusative{"квадратные {0}"}\r
+                        dative{"квадратным {0}"}\r
+                        genitive{"квадратной {0}"}\r
+                        instrumental{"квадратными {0}"}\r
+                        locative{"квадратной {0}"}\r
+                        vocative{"квадратные {0}"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"квадратных {0}"}\r
+                        accusative{"квадратных {0}"}\r
+                        dative{"квадратным {0}"}\r
+                        genitive{"квадратных {0}"}\r
+                        instrumental{"квадратными {0}"}\r
+                        locative{"квадратных {0}"}\r
+                        vocative{"квадратных {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"квадратных {0}"}\r
+                        accusative{"квадратных {0}"}\r
+                        dative{"квадратным {0}"}\r
+                        genitive{"квадратных {0}"}\r
+                        instrumental{"квадратными {0}"}\r
+                        locative{"квадратных {0}"}\r
+                        vocative{"квадратных {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"квадратный {0}"}\r
+                        accusative{"квадратный {0}"}\r
+                        dative{"квадратному {0}"}\r
+                        genitive{"квадратного {0}"}\r
+                        instrumental{"квадратным {0}"}\r
+                        locative{"квадратном {0}"}\r
+                        vocative{"квадратный {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"квадратная {0}"}\r
+                        accusative{"квадратную {0}"}\r
+                        dative{"квадратной {0}"}\r
+                        genitive{"квадратной {0}"}\r
+                        instrumental{"квадратной {0}"}\r
+                        locative{"квадратной {0}"}\r
+                        vocative{"квадратная {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"квадратного {0}"}\r
+                        accusative{"квадратного {0}"}\r
+                        dative{"квадратного {0}"}\r
+                        genitive{"квадратного {0}"}\r
+                        instrumental{"квадратного {0}"}\r
+                        locative{"квадратного {0}"}\r
+                        vocative{"квадратного {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"квадратной {0}"}\r
+                        accusative{"квадратной {0}"}\r
+                        dative{"квадратной {0}"}\r
+                        genitive{"квадратной {0}"}\r
+                        instrumental{"квадратной {0}"}\r
+                        locative{"квадратной {0}"}\r
+                        vocative{"квадратной {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"кубических {0}"}\r
+                        accusative{"кубического {0}"}\r
+                        dative{"кубическим {0}"}\r
+                        genitive{"кубического {0}"}\r
+                        instrumental{"кубическими {0}"}\r
+                        locative{"кубического {0}"}\r
+                        vocative{"кубического {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"кубические {0}"}\r
+                        accusative{"кубические {0}"}\r
+                        dative{"кубическим {0}"}\r
+                        genitive{"кубической {0}"}\r
+                        instrumental{"кубическими {0}"}\r
+                        locative{"кубической {0}"}\r
+                        vocative{"кубические {0}"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"кубических {0}"}\r
+                        accusative{"кубических {0}"}\r
+                        dative{"кубическим {0}"}\r
+                        genitive{"кубических {0}"}\r
+                        instrumental{"кубическими {0}"}\r
+                        locative{"кубических {0}"}\r
+                        vocative{"кубических {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"кубических {0}"}\r
+                        accusative{"кубических {0}"}\r
+                        dative{"кубическим {0}"}\r
+                        genitive{"кубических {0}"}\r
+                        instrumental{"кубическими {0}"}\r
+                        locative{"кубических {0}"}\r
+                        vocative{"кубических {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"кубический {0}"}\r
+                        accusative{"кубический {0}"}\r
+                        dative{"кубическому {0}"}\r
+                        genitive{"кубического {0}"}\r
+                        instrumental{"кубическим {0}"}\r
+                        locative{"кубическом {0}"}\r
+                        vocative{"кубический {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"кубическая {0}"}\r
+                        accusative{"кубическую {0}"}\r
+                        dative{"кубической {0}"}\r
+                        genitive{"кубической {0}"}\r
+                        instrumental{"кубической {0}"}\r
+                        locative{"кубической {0}"}\r
+                        vocative{"кубическая {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"кубического {0}"}\r
+                        accusative{"кубического {0}"}\r
+                        dative{"кубического {0}"}\r
+                        genitive{"кубического {0}"}\r
+                        instrumental{"кубического {0}"}\r
+                        locative{"кубического {0}"}\r
+                        vocative{"кубического {0}"}\r
+                    }\r
+                    feminine{\r
+                        _{"кубической {0}"}\r
+                        accusative{"кубической {0}"}\r
+                        dative{"кубической {0}"}\r
+                        genitive{"кубической {0}"}\r
+                        instrumental{"кубической {0}"}\r
+                        locative{"кубической {0}"}\r
+                        vocative{"кубической {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -149,7 +693,7 @@ ru{
                 one{"{0} карат"}\r
                 other{"{0} карата"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"миллиграммы на децилитр"}\r
                 few{"{0} миллиграмма на децилитр"}\r
                 many{"{0} миллиграммов на децилитр"}\r
@@ -171,8 +715,52 @@ ru{
                 other{"{0} моля"}\r
             }\r
             percent{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} процента"}\r
+                        many{"{0} процентов"}\r
+                        one{"{0} процент"}\r
+                        other{"{0} процента"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} процентам"}\r
+                        many{"{0} процентам"}\r
+                        one{"{0} проценту"}\r
+                        other{"{0} процента"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} процентов"}\r
+                        many{"{0} процентов"}\r
+                        one{"{0} процента"}\r
+                        other{"{0} процента"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} процентами"}\r
+                        many{"{0} процентами"}\r
+                        one{"{0} процентом"}\r
+                        other{"{0} процента"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} процентах"}\r
+                        many{"{0} процентах"}\r
+                        one{"{0} проценте"}\r
+                        other{"{0} процента"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} процентах"}\r
+                        many{"{0} процентах"}\r
+                        one{"{0} проценте"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} процента"}\r
+                        many{"{0} процентов"}\r
+                        one{"{0} процент"}\r
+                        other{"{0} процента"}\r
+                    }\r
+                }\r
                 dnam{"проценты"}\r
                 few{"{0} процента"}\r
+                gender{"masculine"}\r
                 many{"{0} процентов"}\r
                 one{"{0} процент"}\r
                 other{"{0} процента"}\r
@@ -201,8 +789,52 @@ ru{
         }\r
         consumption{\r
             liter-per-100-kilometer{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} литра на 100 километров"}\r
+                        many{"{0} литров на 100 километров"}\r
+                        one{"{0} литр на 100 километров"}\r
+                        other{"{0} литра на 100 километров"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} литрам на 100 километров"}\r
+                        many{"{0} литрам на 100 километров"}\r
+                        one{"{0} литру на 100 километров"}\r
+                        other{"{0} литра на 100 километров"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} литров на 100 километров"}\r
+                        many{"{0} литров на 100 километров"}\r
+                        one{"{0} литра на 100 километров"}\r
+                        other{"{0} литра на 100 километров"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} литрами на 100 километров"}\r
+                        many{"{0} литрами на 100 километров"}\r
+                        one{"{0} литром на 100 километров"}\r
+                        other{"{0} литра на 100 километров"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} литрах на 100 километров"}\r
+                        many{"{0} литрах на 100 километров"}\r
+                        one{"{0} литре на 100 километров"}\r
+                        other{"{0} литра на 100 километров"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} литрах на 100 километров"}\r
+                        many{"{0} литрах на 100 километров"}\r
+                        one{"{0} литре на 100 километров"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} литра на 100 километров"}\r
+                        many{"{0} литров на 100 километров"}\r
+                        one{"{0} литр на 100 километров"}\r
+                        other{"{0} литра на 100 километров"}\r
+                    }\r
+                }\r
                 dnam{"литры на 100 километров"}\r
                 few{"{0} литра на 100 километров"}\r
+                gender{"masculine"}\r
                 many{"{0} литров на 100 километров"}\r
                 one{"{0} литр на 100 километров"}\r
                 other{"{0} литра на 100 километров"}\r
@@ -215,15 +847,103 @@ ru{
                 other{"{0} литра на километр"}\r
             }\r
             mile-per-gallon{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} мили на амер. галлон"}\r
+                        many{"{0} миль на амер. галлон"}\r
+                        one{"{0} милю на амер. галлон"}\r
+                        other{"{0} мили на амер. галлон"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} милям на амер. галлон"}\r
+                        many{"{0} милям на амер. галлон"}\r
+                        one{"{0} миле на амер. галлон"}\r
+                        other{"{0} мили на амер. галлон"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} миль на амер. галлон"}\r
+                        many{"{0} миль на амер. галлон"}\r
+                        one{"{0} мили на амер. галлон"}\r
+                        other{"{0} мили на амер. галлон"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} милями на амер. галлон"}\r
+                        many{"{0} милями на амер. галлон"}\r
+                        one{"{0} милей на амер. галлон"}\r
+                        other{"{0} мили на амер. галлон"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} милях на амер. галлон"}\r
+                        many{"{0} милях на амер. галлон"}\r
+                        one{"{0} миле на амер. галлон"}\r
+                        other{"{0} мили на амер. галлон"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} милях на амер. галлон"}\r
+                        many{"{0} милях на амер. галлон"}\r
+                        one{"{0} миле на амер. галлон"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} мили на амер. галлон"}\r
+                        many{"{0} миль на амер. галлон"}\r
+                        one{"{0} миля на амер. галлон"}\r
+                        other{"{0} мили на амер. галлон"}\r
+                    }\r
+                }\r
                 dnam{"мили на амер. галлон"}\r
                 few{"{0} мили на амер. галлон"}\r
+                gender{"feminine"}\r
                 many{"{0} миль на амер. галлон"}\r
                 one{"{0} миля на амер. галлон"}\r
                 other{"{0} мили на амер. галлон"}\r
             }\r
             mile-per-gallon-imperial{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} мили на имп. галлон"}\r
+                        many{"{0} миль на имп. галлон"}\r
+                        one{"{0} милю на имп. галлон"}\r
+                        other{"{0} мили на имп. галлон"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} милям на имп. галлон"}\r
+                        many{"{0} милям на имп. галлон"}\r
+                        one{"{0} миле на имп. галлон"}\r
+                        other{"{0} мили на имп. галлон"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} миль на имп. галлон"}\r
+                        many{"{0} миль на имп. галлон"}\r
+                        one{"{0} мили на имп. галлон"}\r
+                        other{"{0} мили на имп. галлон"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} милями на имп. галлон"}\r
+                        many{"{0} милями на имп. галлон"}\r
+                        one{"{0} милей на имп. галлон"}\r
+                        other{"{0} мили на имп. галлон"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} милях на имп. галлон"}\r
+                        many{"{0} милях на имп. галлон"}\r
+                        one{"{0} миле на имп. галлон"}\r
+                        other{"{0} мили на имп. галлон"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} милях на имп. галлон"}\r
+                        many{"{0} милях на имп. галлон"}\r
+                        one{"{0} миле на имп. галлон"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} мили на имп. галлон"}\r
+                        many{"{0} миль на имп. галлон"}\r
+                        one{"{0} миля на имп. галлон"}\r
+                        other{"{0} мили на имп. галлон"}\r
+                    }\r
+                }\r
                 dnam{"мили на имп. галлон"}\r
                 few{"{0} мили на имп. галлон"}\r
+                gender{"feminine"}\r
                 many{"{0} миль на имп. галлон"}\r
                 one{"{0} миля на имп. галлон"}\r
                 other{"{0} мили на имп. галлон"}\r
@@ -252,43 +972,271 @@ ru{
                 other{"{0} байта"}\r
             }\r
             gigabit{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} гигабита"}\r
+                        many{"{0} гигабит"}\r
+                        one{"{0} гигабит"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} гигабитам"}\r
+                        many{"{0} гигабитам"}\r
+                        one{"{0} гигабиту"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} гигабит"}\r
+                        many{"{0} гигабит"}\r
+                        one{"{0} гигабита"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} гигабитами"}\r
+                        many{"{0} гигабитами"}\r
+                        one{"{0} гигабитом"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} гигабитах"}\r
+                        many{"{0} гигабитах"}\r
+                        one{"{0} гигабите"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} гигабитах"}\r
+                        many{"{0} гигабитах"}\r
+                        one{"{0} гигабите"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} гигабита"}\r
+                        many{"{0} гигабит"}\r
+                        one{"{0} гигабит"}\r
+                    }\r
+                }\r
                 dnam{"гигабиты"}\r
                 few{"{0} гигабита"}\r
+                gender{"masculine"}\r
                 many{"{0} гигабит"}\r
                 one{"{0} гигабит"}\r
                 other{"{0} гигабита"}\r
             }\r
             gigabyte{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} гигабайта"}\r
+                        many{"{0} гигабайт"}\r
+                        one{"{0} гигабайт"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} гигабайтам"}\r
+                        many{"{0} гигабайтам"}\r
+                        one{"{0} гигабайту"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} гигабайт"}\r
+                        many{"{0} гигабайт"}\r
+                        one{"{0} гигабайта"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} гигабайтами"}\r
+                        many{"{0} гигабайтами"}\r
+                        one{"{0} гигабайтом"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} гигабайтах"}\r
+                        many{"{0} гигабайтах"}\r
+                        one{"{0} гигабайте"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} гигабайтах"}\r
+                        many{"{0} гигабайтах"}\r
+                        one{"{0} гигабайте"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} гигабайта"}\r
+                        many{"{0} гигабайт"}\r
+                        one{"{0} гигабайт"}\r
+                    }\r
+                }\r
                 dnam{"гигабайты"}\r
                 few{"{0} гигабайта"}\r
+                gender{"masculine"}\r
                 many{"{0} гигабайт"}\r
                 one{"{0} гигабайт"}\r
                 other{"{0} гигабайта"}\r
             }\r
             kilobit{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} килобита"}\r
+                        many{"{0} килобит"}\r
+                        one{"{0} килобит"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} килобитам"}\r
+                        many{"{0} килобитам"}\r
+                        one{"{0} килобиту"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} килобит"}\r
+                        many{"{0} килобит"}\r
+                        one{"{0} килобита"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} килобитами"}\r
+                        many{"{0} килобитами"}\r
+                        one{"{0} килобитом"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} килобитах"}\r
+                        many{"{0} килобитах"}\r
+                        one{"{0} килобите"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} килобитах"}\r
+                        many{"{0} килобитах"}\r
+                        one{"{0} килобите"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} килобита"}\r
+                        many{"{0} килобит"}\r
+                        one{"{0} килобит"}\r
+                    }\r
+                }\r
                 dnam{"килобиты"}\r
                 few{"{0} килобита"}\r
+                gender{"masculine"}\r
                 many{"{0} килобит"}\r
                 one{"{0} килобит"}\r
                 other{"{0} килобита"}\r
             }\r
             kilobyte{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} килобайта"}\r
+                        many{"{0} килобайт"}\r
+                        one{"{0} килобайт"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} килобайтам"}\r
+                        many{"{0} килобайтам"}\r
+                        one{"{0} килобайту"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} килобайт"}\r
+                        many{"{0} килобайт"}\r
+                        one{"{0} килобайта"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} килобайтами"}\r
+                        many{"{0} килобайтами"}\r
+                        one{"{0} килобайтом"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} килобайтах"}\r
+                        many{"{0} килобайтах"}\r
+                        one{"{0} килобайте"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} килобайтах"}\r
+                        many{"{0} килобайтах"}\r
+                        one{"{0} килобайте"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} килобайта"}\r
+                        many{"{0} килобайт"}\r
+                        one{"{0} килобайт"}\r
+                    }\r
+                }\r
                 dnam{"килобайты"}\r
                 few{"{0} килобайта"}\r
+                gender{"masculine"}\r
                 many{"{0} килобайт"}\r
                 one{"{0} килобайт"}\r
                 other{"{0} килобайта"}\r
             }\r
             megabit{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} мегабита"}\r
+                        many{"{0} мегабит"}\r
+                        one{"{0} мегабит"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} мегабитам"}\r
+                        many{"{0} мегабитам"}\r
+                        one{"{0} мегабиту"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} мегабит"}\r
+                        many{"{0} мегабит"}\r
+                        one{"{0} мегабита"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} мегабитами"}\r
+                        many{"{0} мегабитами"}\r
+                        one{"{0} мегабитом"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} мегабитах"}\r
+                        many{"{0} мегабитах"}\r
+                        one{"{0} мегабите"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} мегабитах"}\r
+                        many{"{0} мегабитах"}\r
+                        one{"{0} мегабите"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} мегабита"}\r
+                        many{"{0} мегабит"}\r
+                        one{"{0} мегабит"}\r
+                    }\r
+                }\r
                 dnam{"мегабиты"}\r
                 few{"{0} мегабита"}\r
+                gender{"masculine"}\r
                 many{"{0} мегабит"}\r
                 one{"{0} мегабит"}\r
                 other{"{0} мегабита"}\r
             }\r
             megabyte{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} мегабайта"}\r
+                        many{"{0} мегабайт"}\r
+                        one{"{0} мегабайт"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} мегабайтам"}\r
+                        many{"{0} мегабайтам"}\r
+                        one{"{0} мегабайту"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} мегабайт"}\r
+                        many{"{0} мегабайт"}\r
+                        one{"{0} мегабайта"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} мегабайтами"}\r
+                        many{"{0} мегабайтами"}\r
+                        one{"{0} мегабайтом"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} мегабайтах"}\r
+                        many{"{0} мегабайтах"}\r
+                        one{"{0} мегабайте"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} мегабайтах"}\r
+                        many{"{0} мегабайтах"}\r
+                        one{"{0} мегабайте"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} мегабайта"}\r
+                        many{"{0} мегабайт"}\r
+                        one{"{0} мегабайт"}\r
+                    }\r
+                }\r
                 dnam{"мегабайты"}\r
                 few{"{0} мегабайта"}\r
+                gender{"masculine"}\r
                 many{"{0} мегабайт"}\r
                 one{"{0} мегабайт"}\r
                 other{"{0} мегабайта"}\r
@@ -301,15 +1249,91 @@ ru{
                 other{"{0} петабайта"}\r
             }\r
             terabit{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} терабита"}\r
+                        many{"{0} терабит"}\r
+                        one{"{0} терабит"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} терабитам"}\r
+                        many{"{0} терабитам"}\r
+                        one{"{0} терабиту"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} терабит"}\r
+                        many{"{0} терабит"}\r
+                        one{"{0} терабита"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} терабитами"}\r
+                        many{"{0} терабитами"}\r
+                        one{"{0} терабитом"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} терабитах"}\r
+                        many{"{0} терабитах"}\r
+                        one{"{0} терабите"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} терабитах"}\r
+                        many{"{0} терабитах"}\r
+                        one{"{0} терабите"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} терабита"}\r
+                        many{"{0} терабит"}\r
+                        one{"{0} терабит"}\r
+                    }\r
+                }\r
                 dnam{"терабиты"}\r
                 few{"{0} терабита"}\r
+                gender{"masculine"}\r
                 many{"{0} терабит"}\r
                 one{"{0} терабит"}\r
                 other{"{0} терабита"}\r
             }\r
             terabyte{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} терабайта"}\r
+                        many{"{0} терабайт"}\r
+                        one{"{0} терабайт"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} терабайтам"}\r
+                        many{"{0} терабайтам"}\r
+                        one{"{0} терабайту"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} терабайт"}\r
+                        many{"{0} терабайт"}\r
+                        one{"{0} терабайта"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} терабайтами"}\r
+                        many{"{0} терабайтами"}\r
+                        one{"{0} терабайтом"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} терабайтах"}\r
+                        many{"{0} терабайтах"}\r
+                        one{"{0} терабайте"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} терабайтах"}\r
+                        many{"{0} терабайтах"}\r
+                        one{"{0} терабайте"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} терабайта"}\r
+                        many{"{0} терабайт"}\r
+                        one{"{0} терабайт"}\r
+                    }\r
+                }\r
                 dnam{"терабайты"}\r
                 few{"{0} терабайта"}\r
+                gender{"masculine"}\r
                 many{"{0} терабайт"}\r
                 one{"{0} терабайт"}\r
                 other{"{0} терабайта"}\r
@@ -324,8 +1348,52 @@ ru{
                 other{"{0} века"}\r
             }\r
             day{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} дня"}\r
+                        many{"{0} дней"}\r
+                        one{"{0} день"}\r
+                        other{"{0} дня"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} дням"}\r
+                        many{"{0} дням"}\r
+                        one{"{0} дню"}\r
+                        other{"{0} дня"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} дней"}\r
+                        many{"{0} дней"}\r
+                        one{"{0} дня"}\r
+                        other{"{0} дня"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} днями"}\r
+                        many{"{0} днями"}\r
+                        one{"{0} днём"}\r
+                        other{"{0} дня"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} днях"}\r
+                        many{"{0} днях"}\r
+                        one{"{0} дне"}\r
+                        other{"{0} дня"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} днях"}\r
+                        many{"{0} днях"}\r
+                        one{"{0} дне"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} дня"}\r
+                        many{"{0} дней"}\r
+                        one{"{0} день"}\r
+                        other{"{0} дня"}\r
+                    }\r
+                }\r
                 dnam{"дни"}\r
                 few{"{0} дня"}\r
+                gender{"masculine"}\r
                 many{"{0} дней"}\r
                 one{"{0} день"}\r
                 other{"{0} дня"}\r
@@ -339,8 +1407,52 @@ ru{
                 other{"{0} десятилетия"}\r
             }\r
             hour{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} часа"}\r
+                        many{"{0} часов"}\r
+                        one{"{0} час"}\r
+                        other{"{0} часа"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} часам"}\r
+                        many{"{0} часам"}\r
+                        one{"{0} часу"}\r
+                        other{"{0} часа"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} часов"}\r
+                        many{"{0} часов"}\r
+                        one{"{0} часа"}\r
+                        other{"{0} часа"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} часами"}\r
+                        many{"{0} часами"}\r
+                        one{"{0} часом"}\r
+                        other{"{0} часа"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} часах"}\r
+                        many{"{0} часах"}\r
+                        one{"{0} часе"}\r
+                        other{"{0} часа"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} часах"}\r
+                        many{"{0} часах"}\r
+                        one{"{0} часе"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} часа"}\r
+                        many{"{0} часов"}\r
+                        one{"{0} час"}\r
+                        other{"{0} часа"}\r
+                    }\r
+                }\r
                 dnam{"часы"}\r
                 few{"{0} часа"}\r
+                gender{"masculine"}\r
                 many{"{0} часов"}\r
                 one{"{0} час"}\r
                 other{"{0} часа"}\r
@@ -361,16 +1473,104 @@ ru{
                 other{"{0} миллисекунды"}\r
             }\r
             minute{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} минуты"}\r
+                        many{"{0} минут"}\r
+                        one{"{0} минуту"}\r
+                        other{"{0} минуты"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} минутам"}\r
+                        many{"{0} минутам"}\r
+                        one{"{0} минуте"}\r
+                        other{"{0} минуты"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} минут"}\r
+                        many{"{0} минут"}\r
+                        one{"{0} минуты"}\r
+                        other{"{0} минуты"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} минутами"}\r
+                        many{"{0} минутами"}\r
+                        one{"{0} минутой"}\r
+                        other{"{0} минуты"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} минутах"}\r
+                        many{"{0} минутах"}\r
+                        one{"{0} минуте"}\r
+                        other{"{0} минуты"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} минутах"}\r
+                        many{"{0} минутах"}\r
+                        one{"{0} минуте"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} минуты"}\r
+                        many{"{0} минут"}\r
+                        one{"{0} минута"}\r
+                        other{"{0} минуты"}\r
+                    }\r
+                }\r
                 dnam{"минуты"}\r
                 few{"{0} минуты"}\r
+                gender{"feminine"}\r
                 many{"{0} минут"}\r
                 one{"{0} минута"}\r
                 other{"{0} минуты"}\r
                 per{"{0} в минуту"}\r
             }\r
             month{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} месяца"}\r
+                        many{"{0} месяцев"}\r
+                        one{"{0} месяц"}\r
+                        other{"{0} месяца"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} месяцам"}\r
+                        many{"{0} месяцам"}\r
+                        one{"{0} месяцу"}\r
+                        other{"{0} месяца"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} месяцев"}\r
+                        many{"{0} месяцев"}\r
+                        one{"{0} месяца"}\r
+                        other{"{0} месяца"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} месяцами"}\r
+                        many{"{0} месяцами"}\r
+                        one{"{0} месяцем"}\r
+                        other{"{0} месяца"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} месяцах"}\r
+                        many{"{0} месяцах"}\r
+                        one{"{0} месяце"}\r
+                        other{"{0} месяца"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} месяцах"}\r
+                        many{"{0} месяцах"}\r
+                        one{"{0} месяце"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} месяца"}\r
+                        many{"{0} месяцев"}\r
+                        one{"{0} месяц"}\r
+                        other{"{0} месяца"}\r
+                    }\r
+                }\r
                 dnam{"месяцы"}\r
                 few{"{0} месяца"}\r
+                gender{"masculine"}\r
                 many{"{0} месяцев"}\r
                 one{"{0} месяц"}\r
                 other{"{0} месяца"}\r
@@ -384,24 +1584,156 @@ ru{
                 other{"{0} наносекунды"}\r
             }\r
             second{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} секунды"}\r
+                        many{"{0} секунд"}\r
+                        one{"{0} секунду"}\r
+                        other{"{0} секунды"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} секундам"}\r
+                        many{"{0} секундам"}\r
+                        one{"{0} секунде"}\r
+                        other{"{0} секунды"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} секунд"}\r
+                        many{"{0} секунд"}\r
+                        one{"{0} секунды"}\r
+                        other{"{0} секунды"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} секундами"}\r
+                        many{"{0} секундами"}\r
+                        one{"{0} секундой"}\r
+                        other{"{0} секунды"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} секундах"}\r
+                        many{"{0} секундах"}\r
+                        one{"{0} секунде"}\r
+                        other{"{0} секунды"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} секундах"}\r
+                        many{"{0} секундах"}\r
+                        one{"{0} секунде"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} секунды"}\r
+                        many{"{0} секунд"}\r
+                        one{"{0} секунда"}\r
+                        other{"{0} секунды"}\r
+                    }\r
+                }\r
                 dnam{"секунды"}\r
                 few{"{0} секунды"}\r
+                gender{"feminine"}\r
                 many{"{0} секунд"}\r
                 one{"{0} секунда"}\r
                 other{"{0} секунды"}\r
                 per{"{0} в секунду"}\r
             }\r
             week{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} недели"}\r
+                        many{"{0} недель"}\r
+                        one{"{0} неделю"}\r
+                        other{"{0} недели"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} неделям"}\r
+                        many{"{0} неделям"}\r
+                        one{"{0} неделе"}\r
+                        other{"{0} недели"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} недель"}\r
+                        many{"{0} недель"}\r
+                        one{"{0} недели"}\r
+                        other{"{0} недели"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} неделями"}\r
+                        many{"{0} неделями"}\r
+                        one{"{0} неделей"}\r
+                        other{"{0} недели"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} неделях"}\r
+                        many{"{0} неделях"}\r
+                        one{"{0} неделе"}\r
+                        other{"{0} недели"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} неделях"}\r
+                        many{"{0} неделях"}\r
+                        one{"{0} неделе"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} недели"}\r
+                        many{"{0} недель"}\r
+                        one{"{0} неделя"}\r
+                        other{"{0} недели"}\r
+                    }\r
+                }\r
                 dnam{"недели"}\r
                 few{"{0} недели"}\r
+                gender{"feminine"}\r
                 many{"{0} недель"}\r
                 one{"{0} неделя"}\r
                 other{"{0} недели"}\r
                 per{"{0} в неделю"}\r
             }\r
             year{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} года"}\r
+                        many{"{0} лет"}\r
+                        one{"{0} год"}\r
+                        other{"{0} года"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} годам"}\r
+                        many{"{0} годам"}\r
+                        one{"{0} году"}\r
+                        other{"{0} года"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} лет"}\r
+                        many{"{0} лет"}\r
+                        one{"{0} года"}\r
+                        other{"{0} года"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} годами"}\r
+                        many{"{0} годами"}\r
+                        one{"{0} годом"}\r
+                        other{"{0} года"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} годах"}\r
+                        many{"{0} годах"}\r
+                        one{"{0} годе"}\r
+                        other{"{0} года"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} годах"}\r
+                        many{"{0} годах"}\r
+                        one{"{0} годе"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} года"}\r
+                        many{"{0} лет"}\r
+                        one{"{0} год"}\r
+                        other{"{0} года"}\r
+                    }\r
+                }\r
                 dnam{"годы"}\r
                 few{"{0} года"}\r
+                gender{"masculine"}\r
                 many{"{0} лет"}\r
                 one{"{0} год"}\r
                 other{"{0} года"}\r
@@ -461,8 +1793,52 @@ ru{
                 other{"{0} электронвольта"}\r
             }\r
             foodcalorie{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} килокалории"}\r
+                        many{"{0} килокалорий"}\r
+                        one{"{0} килокалорию"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} килокалориям"}\r
+                        many{"{0} килокалориям"}\r
+                        one{"{0} килокалории"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} килокалорий"}\r
+                        many{"{0} килокалорий"}\r
+                        one{"{0} килокалории"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} килокалориями"}\r
+                        many{"{0} килокалориями"}\r
+                        one{"{0} килокалорией"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} килокалориях"}\r
+                        many{"{0} килокалориях"}\r
+                        one{"{0} килокалории"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} килокалориях"}\r
+                        many{"{0} килокалориях"}\r
+                        one{"{0} килокалории"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} килокалории"}\r
+                        many{"{0} килокалорий"}\r
+                        one{"{0} килокалория"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                }\r
                 dnam{"килокалории"}\r
                 few{"{0} килокалории"}\r
+                gender{"feminine"}\r
                 many{"{0} килокалорий"}\r
                 one{"{0} килокалория"}\r
                 other{"{0} килокалории"}\r
@@ -475,8 +1851,52 @@ ru{
                 other{"{0} джоуля"}\r
             }\r
             kilocalorie{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} килокалории"}\r
+                        many{"{0} килокалорий"}\r
+                        one{"{0} килокалорию"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} килокалориям"}\r
+                        many{"{0} килокалориям"}\r
+                        one{"{0} килокалории"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} килокалорий"}\r
+                        many{"{0} килокалорий"}\r
+                        one{"{0} килокалории"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} килокалориями"}\r
+                        many{"{0} килокалориями"}\r
+                        one{"{0} килокалорией"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} килокалориях"}\r
+                        many{"{0} килокалориях"}\r
+                        one{"{0} килокалории"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} килокалориях"}\r
+                        many{"{0} килокалориях"}\r
+                        one{"{0} килокалории"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} килокалории"}\r
+                        many{"{0} килокалорий"}\r
+                        one{"{0} килокалория"}\r
+                        other{"{0} килокалории"}\r
+                    }\r
+                }\r
                 dnam{"килокалории"}\r
                 few{"{0} килокалории"}\r
+                gender{"feminine"}\r
                 many{"{0} килокалорий"}\r
                 one{"{0} килокалория"}\r
                 other{"{0} килокалории"}\r
@@ -616,8 +2036,52 @@ ru{
                 other{"{0} астрономической единицы"}\r
             }\r
             centimeter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} сантиметра"}\r
+                        many{"{0} сантиметров"}\r
+                        one{"{0} сантиметр"}\r
+                        other{"{0} сантиметра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} сантиметрам"}\r
+                        many{"{0} сантиметрам"}\r
+                        one{"{0} сантиметру"}\r
+                        other{"{0} сантиметра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} сантиметров"}\r
+                        many{"{0} сантиметров"}\r
+                        one{"{0} сантиметра"}\r
+                        other{"{0} сантиметра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} сантиметрами"}\r
+                        many{"{0} сантиметрами"}\r
+                        one{"{0} сантиметром"}\r
+                        other{"{0} сантиметра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} сантиметрах"}\r
+                        many{"{0} сантиметрах"}\r
+                        one{"{0} сантиметре"}\r
+                        other{"{0} сантиметра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} сантиметрах"}\r
+                        many{"{0} сантиметрах"}\r
+                        one{"{0} сантиметре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} сантиметра"}\r
+                        many{"{0} сантиметров"}\r
+                        one{"{0} сантиметр"}\r
+                        other{"{0} сантиметра"}\r
+                    }\r
+                }\r
                 dnam{"сантиметры"}\r
                 few{"{0} сантиметра"}\r
+                gender{"masculine"}\r
                 many{"{0} сантиметров"}\r
                 one{"{0} сантиметр"}\r
                 other{"{0} сантиметра"}\r
@@ -645,8 +2109,52 @@ ru{
                 other{"{0} морской сажени"}\r
             }\r
             foot{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} фута"}\r
+                        many{"{0} футов"}\r
+                        one{"{0} фут"}\r
+                        other{"{0} фута"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} футам"}\r
+                        many{"{0} футам"}\r
+                        one{"{0} футу"}\r
+                        other{"{0} фута"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} футов"}\r
+                        many{"{0} футов"}\r
+                        one{"{0} фута"}\r
+                        other{"{0} фута"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} футами"}\r
+                        many{"{0} футами"}\r
+                        one{"{0} футом"}\r
+                        other{"{0} фута"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} футах"}\r
+                        many{"{0} футах"}\r
+                        one{"{0} футе"}\r
+                        other{"{0} фута"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} футах"}\r
+                        many{"{0} футах"}\r
+                        one{"{0} футе"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} фута"}\r
+                        many{"{0} футов"}\r
+                        one{"{0} фут"}\r
+                        other{"{0} фута"}\r
+                    }\r
+                }\r
                 dnam{"футы"}\r
                 few{"{0} фута"}\r
+                gender{"masculine"}\r
                 many{"{0} футов"}\r
                 one{"{0} фут"}\r
                 other{"{0} фута"}\r
@@ -660,16 +2168,104 @@ ru{
                 other{"{0} фурлонга"}\r
             }\r
             inch{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} дюйма"}\r
+                        many{"{0} дюймов"}\r
+                        one{"{0} дюйм"}\r
+                        other{"{0} дюйма"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} дюймам"}\r
+                        many{"{0} дюймам"}\r
+                        one{"{0} дюйму"}\r
+                        other{"{0} дюйма"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} дюймов"}\r
+                        many{"{0} дюймов"}\r
+                        one{"{0} дюйма"}\r
+                        other{"{0} дюйма"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} дюймами"}\r
+                        many{"{0} дюймами"}\r
+                        one{"{0} дюймом"}\r
+                        other{"{0} дюйма"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} дюймах"}\r
+                        many{"{0} дюймах"}\r
+                        one{"{0} дюйме"}\r
+                        other{"{0} дюйма"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} дюймах"}\r
+                        many{"{0} дюймах"}\r
+                        one{"{0} дюйме"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} дюйма"}\r
+                        many{"{0} дюймов"}\r
+                        one{"{0} дюйм"}\r
+                        other{"{0} дюйма"}\r
+                    }\r
+                }\r
                 dnam{"дюймы"}\r
                 few{"{0} дюйма"}\r
+                gender{"masculine"}\r
                 many{"{0} дюймов"}\r
                 one{"{0} дюйм"}\r
                 other{"{0} дюйма"}\r
                 per{"{0} на дюйм"}\r
             }\r
             kilometer{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} километра"}\r
+                        many{"{0} километров"}\r
+                        one{"{0} километр"}\r
+                        other{"{0} километра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} километрам"}\r
+                        many{"{0} километрам"}\r
+                        one{"{0} километру"}\r
+                        other{"{0} километра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} километров"}\r
+                        many{"{0} километров"}\r
+                        one{"{0} километра"}\r
+                        other{"{0} километра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} километрами"}\r
+                        many{"{0} километрами"}\r
+                        one{"{0} километром"}\r
+                        other{"{0} километра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} километрах"}\r
+                        many{"{0} километрах"}\r
+                        one{"{0} километре"}\r
+                        other{"{0} километра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} километрах"}\r
+                        many{"{0} километрах"}\r
+                        one{"{0} километре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} километра"}\r
+                        many{"{0} километров"}\r
+                        one{"{0} километр"}\r
+                        other{"{0} километра"}\r
+                    }\r
+                }\r
                 dnam{"километры"}\r
                 few{"{0} километра"}\r
+                gender{"masculine"}\r
                 many{"{0} километров"}\r
                 one{"{0} километр"}\r
                 other{"{0} километра"}\r
@@ -683,8 +2279,52 @@ ru{
                 other{"{0} светового года"}\r
             }\r
             meter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} метра"}\r
+                        many{"{0} метров"}\r
+                        one{"{0} метр"}\r
+                        other{"{0} метра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} метрам"}\r
+                        many{"{0} метрам"}\r
+                        one{"{0} метру"}\r
+                        other{"{0} метра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} метров"}\r
+                        many{"{0} метров"}\r
+                        one{"{0} метра"}\r
+                        other{"{0} метра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} метрами"}\r
+                        many{"{0} метрами"}\r
+                        one{"{0} метром"}\r
+                        other{"{0} метра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} метрах"}\r
+                        many{"{0} метрах"}\r
+                        one{"{0} метре"}\r
+                        other{"{0} метра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} метрах"}\r
+                        many{"{0} метрах"}\r
+                        one{"{0} метре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} метра"}\r
+                        many{"{0} метров"}\r
+                        one{"{0} метр"}\r
+                        other{"{0} метра"}\r
+                    }\r
+                }\r
                 dnam{"метры"}\r
                 few{"{0} метра"}\r
+                gender{"masculine"}\r
                 many{"{0} метров"}\r
                 one{"{0} метр"}\r
                 other{"{0} метра"}\r
@@ -698,8 +2338,52 @@ ru{
                 other{"{0} микрометра"}\r
             }\r
             mile{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} мили"}\r
+                        many{"{0} миль"}\r
+                        one{"{0} милю"}\r
+                        other{"{0} мили"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} милям"}\r
+                        many{"{0} милям"}\r
+                        one{"{0} миле"}\r
+                        other{"{0} мили"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} миль"}\r
+                        many{"{0} миль"}\r
+                        one{"{0} мили"}\r
+                        other{"{0} мили"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} милями"}\r
+                        many{"{0} милями"}\r
+                        one{"{0} милей"}\r
+                        other{"{0} мили"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} милях"}\r
+                        many{"{0} милях"}\r
+                        one{"{0} миле"}\r
+                        other{"{0} мили"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} милях"}\r
+                        many{"{0} милях"}\r
+                        one{"{0} миле"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} мили"}\r
+                        many{"{0} миль"}\r
+                        one{"{0} миля"}\r
+                        other{"{0} мили"}\r
+                    }\r
+                }\r
                 dnam{"мили"}\r
                 few{"{0} мили"}\r
+                gender{"feminine"}\r
                 many{"{0} миль"}\r
                 one{"{0} миля"}\r
                 other{"{0} мили"}\r
@@ -712,8 +2396,52 @@ ru{
                 other{"{0} скандинавской мили"}\r
             }\r
             millimeter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} миллиметра"}\r
+                        many{"{0} миллиметров"}\r
+                        one{"{0} миллиметр"}\r
+                        other{"{0} миллиметра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} миллиметрам"}\r
+                        many{"{0} миллиметрам"}\r
+                        one{"{0} миллиметру"}\r
+                        other{"{0} миллиметра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} миллиметров"}\r
+                        many{"{0} миллиметров"}\r
+                        one{"{0} миллиметра"}\r
+                        other{"{0} миллиметра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} миллиметрами"}\r
+                        many{"{0} миллиметрами"}\r
+                        one{"{0} миллиметром"}\r
+                        other{"{0} миллиметра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} миллиметрах"}\r
+                        many{"{0} миллиметрах"}\r
+                        one{"{0} миллиметре"}\r
+                        other{"{0} миллиметра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} миллиметрах"}\r
+                        many{"{0} миллиметрах"}\r
+                        one{"{0} миллиметре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} миллиметра"}\r
+                        many{"{0} миллиметров"}\r
+                        one{"{0} миллиметр"}\r
+                        other{"{0} миллиметра"}\r
+                    }\r
+                }\r
                 dnam{"миллиметры"}\r
                 few{"{0} миллиметра"}\r
+                gender{"masculine"}\r
                 many{"{0} миллиметров"}\r
                 one{"{0} миллиметр"}\r
                 other{"{0} миллиметра"}\r
@@ -733,15 +2461,103 @@ ru{
                 other{"{0} морской мили"}\r
             }\r
             parsec{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} парсека"}\r
+                        many{"{0} парсеков"}\r
+                        one{"{0} парсек"}\r
+                        other{"{0} парсека"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} парсекам"}\r
+                        many{"{0} парсекам"}\r
+                        one{"{0} парсеку"}\r
+                        other{"{0} парсека"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} парсеков"}\r
+                        many{"{0} парсеков"}\r
+                        one{"{0} парсека"}\r
+                        other{"{0} парсека"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} парсеками"}\r
+                        many{"{0} парсеками"}\r
+                        one{"{0} парсеком"}\r
+                        other{"{0} парсека"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} парсеках"}\r
+                        many{"{0} парсеках"}\r
+                        one{"{0} парсеке"}\r
+                        other{"{0} парсека"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} парсеках"}\r
+                        many{"{0} парсеках"}\r
+                        one{"{0} парсеке"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} парсека"}\r
+                        many{"{0} парсеков"}\r
+                        one{"{0} парсек"}\r
+                        other{"{0} парсека"}\r
+                    }\r
+                }\r
                 dnam{"парсеки"}\r
                 few{"{0} парсека"}\r
+                gender{"masculine"}\r
                 many{"{0} парсеков"}\r
                 one{"{0} парсек"}\r
                 other{"{0} парсека"}\r
             }\r
             picometer{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} пикометра"}\r
+                        many{"{0} пикометров"}\r
+                        one{"{0} пикометр"}\r
+                        other{"{0} пикометра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} пикометрам"}\r
+                        many{"{0} пикометрам"}\r
+                        one{"{0} пикометру"}\r
+                        other{"{0} пикометра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} пикометров"}\r
+                        many{"{0} пикометров"}\r
+                        one{"{0} пикометра"}\r
+                        other{"{0} пикометра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} пикометрами"}\r
+                        many{"{0} пикометрами"}\r
+                        one{"{0} пикометром"}\r
+                        other{"{0} пикометра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} пикометрах"}\r
+                        many{"{0} пикометрах"}\r
+                        one{"{0} пикометре"}\r
+                        other{"{0} пикометра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} пикометрах"}\r
+                        many{"{0} пикометрах"}\r
+                        one{"{0} пикометре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} пикометра"}\r
+                        many{"{0} пикометров"}\r
+                        one{"{0} пикометр"}\r
+                        other{"{0} пикометра"}\r
+                    }\r
+                }\r
                 dnam{"пикометры"}\r
                 few{"{0} пикометра"}\r
+                gender{"masculine"}\r
                 many{"{0} пикометров"}\r
                 one{"{0} пикометр"}\r
                 other{"{0} пикометра"}\r
@@ -754,15 +2570,103 @@ ru{
                 other{"{0} пункта"}\r
             }\r
             solar-radius{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} солнечных радиуса"}\r
+                        many{"{0} солнечных радиусов"}\r
+                        one{"{0} солнечный радиус"}\r
+                        other{"{0} солнечного радиуса"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} солнечным радиусам"}\r
+                        many{"{0} солнечным радиусам"}\r
+                        one{"{0} солнечному радиусу"}\r
+                        other{"{0} солнечного радиуса"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} солнечных радиусов"}\r
+                        many{"{0} солнечных радиусов"}\r
+                        one{"{0} солнечного радиуса"}\r
+                        other{"{0} солнечного радиуса"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} солнечными радиусами"}\r
+                        many{"{0} солнечными радиусами"}\r
+                        one{"{0} солнечным радиусом"}\r
+                        other{"{0} солнечного радиуса"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} солнечных радиусах"}\r
+                        many{"{0} солнечных радиусах"}\r
+                        one{"{0} солнечном радиусе"}\r
+                        other{"{0} солнечного радиуса"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} солнечных радиусах"}\r
+                        many{"{0} солнечных радиусах"}\r
+                        one{"{0} солнечном радиусе"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} солнечных радиуса"}\r
+                        many{"{0} солнечных радиусов"}\r
+                        one{"{0} солнечный радиус"}\r
+                        other{"{0} солнечного радиуса"}\r
+                    }\r
+                }\r
                 dnam{"солнечные радиусы"}\r
                 few{"{0} солнечных радиуса"}\r
+                gender{"masculine"}\r
                 many{"{0} солнечных радиусов"}\r
                 one{"{0} солнечный радиус"}\r
                 other{"{0} солнечного радиуса"}\r
             }\r
             yard{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} ярда"}\r
+                        many{"{0} ярдов"}\r
+                        one{"{0} ярд"}\r
+                        other{"{0} ярда"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} ярдам"}\r
+                        many{"{0} ярдам"}\r
+                        one{"{0} ярду"}\r
+                        other{"{0} ярда"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} ярдов"}\r
+                        many{"{0} ярдов"}\r
+                        one{"{0} ярда"}\r
+                        other{"{0} ярда"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} ярдами"}\r
+                        many{"{0} ярдами"}\r
+                        one{"{0} ярдом"}\r
+                        other{"{0} ярда"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} ярдах"}\r
+                        many{"{0} ярдах"}\r
+                        one{"{0} ярде"}\r
+                        other{"{0} ярда"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} ярдах"}\r
+                        many{"{0} ярдах"}\r
+                        one{"{0} ярде"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} ярда"}\r
+                        many{"{0} ярдов"}\r
+                        one{"{0} ярд"}\r
+                        other{"{0} ярда"}\r
+                    }\r
+                }\r
                 dnam{"ярды"}\r
                 few{"{0} ярда"}\r
+                gender{"masculine"}\r
                 many{"{0} ярдов"}\r
                 one{"{0} ярд"}\r
                 other{"{0} ярда"}\r
@@ -791,8 +2695,52 @@ ru{
                 other{"{0} люкса"}\r
             }\r
             solar-luminosity{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} солнечные светимости"}\r
+                        many{"{0} солнечных светимостей"}\r
+                        one{"{0} солнечную светимость"}\r
+                        other{"{0} солнечной светимости"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} солнечным светимостям"}\r
+                        many{"{0} солнечным светимостям"}\r
+                        one{"{0} солнечной светимости"}\r
+                        other{"{0} солнечной светимости"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} солнечных светимостей"}\r
+                        many{"{0} солнечных светимостей"}\r
+                        one{"{0} солнечной светимости"}\r
+                        other{"{0} солнечной светимости"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} солнечными светимостями"}\r
+                        many{"{0} солнечными светимостями"}\r
+                        one{"{0} солнечной светимостью"}\r
+                        other{"{0} солнечной светимости"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} солнечных светимостях"}\r
+                        many{"{0} солнечных светимостях"}\r
+                        one{"{0} солнечной светимости"}\r
+                        other{"{0} солнечной светимости"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} солнечных светимостях"}\r
+                        many{"{0} солнечных светимостях"}\r
+                        one{"{0} солнечной светимости"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} солнечные светимости"}\r
+                        many{"{0} солнечных светимостей"}\r
+                        one{"{0} солнечная светимость"}\r
+                        other{"{0} солнечной светимости"}\r
+                    }\r
+                }\r
                 dnam{"солнечные светимости"}\r
                 few{"{0} солнечные светимости"}\r
+                gender{"feminine"}\r
                 many{"{0} солнечных светимостей"}\r
                 one{"{0} солнечная светимость"}\r
                 other{"{0} солнечной светимости"}\r
@@ -807,37 +2755,257 @@ ru{
                 other{"{0} карата"}\r
             }\r
             dalton{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} дальтона"}\r
+                        many{"{0} дальтонов"}\r
+                        one{"{0} дальтон"}\r
+                        other{"{0} дальтона"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} дальтонам"}\r
+                        many{"{0} дальтонам"}\r
+                        one{"{0} дальтону"}\r
+                        other{"{0} дальтона"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} дальтонов"}\r
+                        many{"{0} дальтонов"}\r
+                        one{"{0} дальтона"}\r
+                        other{"{0} дальтона"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} дальтонами"}\r
+                        many{"{0} дальтонами"}\r
+                        one{"{0} дальтоном"}\r
+                        other{"{0} дальтона"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} дальтонах"}\r
+                        many{"{0} дальтонах"}\r
+                        one{"{0} дальтоне"}\r
+                        other{"{0} дальтона"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} дальтонах"}\r
+                        many{"{0} дальтонах"}\r
+                        one{"{0} дальтоне"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} дальтона"}\r
+                        many{"{0} дальтонов"}\r
+                        one{"{0} дальтон"}\r
+                        other{"{0} дальтона"}\r
+                    }\r
+                }\r
                 dnam{"дальтоны"}\r
                 few{"{0} дальтона"}\r
+                gender{"masculine"}\r
                 many{"{0} дальтонов"}\r
                 one{"{0} дальтон"}\r
                 other{"{0} дальтона"}\r
             }\r
             earth-mass{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} массы Земли"}\r
+                        many{"{0} масс Земли"}\r
+                        one{"{0} массу Земли"}\r
+                        other{"{0} массы Земли"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} массам Земли"}\r
+                        many{"{0} массам Земли"}\r
+                        one{"{0} массе Земли"}\r
+                        other{"{0} массы Земли"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} масс Земли"}\r
+                        many{"{0} масс Земли"}\r
+                        one{"{0} массы Земли"}\r
+                        other{"{0} массы Земли"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} массами Земли"}\r
+                        many{"{0} массами Земли"}\r
+                        one{"{0} массой Земли"}\r
+                        other{"{0} массы Земли"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} массах Земли"}\r
+                        many{"{0} массах Земли"}\r
+                        one{"{0} массе Земли"}\r
+                        other{"{0} массы Земли"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} массах Земли"}\r
+                        many{"{0} массах Земли"}\r
+                        one{"{0} массе Земли"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} массы Земли"}\r
+                        many{"{0} масс Земли"}\r
+                        one{"{0} масса Земли"}\r
+                        other{"{0} массы Земли"}\r
+                    }\r
+                }\r
                 dnam{"массы Земли"}\r
                 few{"{0} массы Земли"}\r
+                gender{"feminine"}\r
                 many{"{0} масс Земли"}\r
                 one{"{0} масса Земли"}\r
                 other{"{0} массы Земли"}\r
             }\r
             grain{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} грана"}\r
+                        many{"{0} гранов"}\r
+                        one{"{0} гран"}\r
+                        other{"{0} грана"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} гранам"}\r
+                        many{"{0} гранам"}\r
+                        one{"{0} грану"}\r
+                        other{"{0} грана"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} гранов"}\r
+                        many{"{0} гранов"}\r
+                        one{"{0} грана"}\r
+                        other{"{0} грана"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} гранами"}\r
+                        many{"{0} гранами"}\r
+                        one{"{0} граном"}\r
+                        other{"{0} грана"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} гранах"}\r
+                        many{"{0} гранах"}\r
+                        one{"{0} гране"}\r
+                        other{"{0} грана"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} гранах"}\r
+                        many{"{0} гранах"}\r
+                        one{"{0} гране"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} грана"}\r
+                        many{"{0} гранов"}\r
+                        one{"{0} гран"}\r
+                        other{"{0} грана"}\r
+                    }\r
+                }\r
                 dnam{"гран"}\r
                 few{"{0} грана"}\r
+                gender{"masculine"}\r
                 many{"{0} гранов"}\r
                 one{"{0} гран"}\r
                 other{"{0} грана"}\r
             }\r
             gram{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} грамма"}\r
+                        many{"{0} грамм"}\r
+                        one{"{0} грамм"}\r
+                        other{"{0} грамма"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} граммам"}\r
+                        many{"{0} граммам"}\r
+                        one{"{0} грамму"}\r
+                        other{"{0} грамма"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} грамм"}\r
+                        many{"{0} грамм"}\r
+                        one{"{0} грамма"}\r
+                        other{"{0} грамма"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} граммами"}\r
+                        many{"{0} граммами"}\r
+                        one{"{0} граммом"}\r
+                        other{"{0} грамма"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} граммах"}\r
+                        many{"{0} граммах"}\r
+                        one{"{0} грамме"}\r
+                        other{"{0} грамма"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} граммах"}\r
+                        many{"{0} граммах"}\r
+                        one{"{0} грамме"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} грамма"}\r
+                        many{"{0} грамм"}\r
+                        one{"{0} грамм"}\r
+                        other{"{0} грамма"}\r
+                    }\r
+                }\r
                 dnam{"граммы"}\r
                 few{"{0} грамма"}\r
+                gender{"masculine"}\r
                 many{"{0} грамм"}\r
                 one{"{0} грамм"}\r
                 other{"{0} грамма"}\r
                 per{"{0} на грамм"}\r
             }\r
             kilogram{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} килограмма"}\r
+                        many{"{0} килограмм"}\r
+                        one{"{0} килограмм"}\r
+                        other{"{0} килограмма"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} килограммам"}\r
+                        many{"{0} килограммам"}\r
+                        one{"{0} килограмму"}\r
+                        other{"{0} килограмма"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} килограмм"}\r
+                        many{"{0} килограмм"}\r
+                        one{"{0} килограмма"}\r
+                        other{"{0} килограмма"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} килограммами"}\r
+                        many{"{0} килограммами"}\r
+                        one{"{0} килограммом"}\r
+                        other{"{0} килограмма"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} килограммах"}\r
+                        many{"{0} килограммах"}\r
+                        one{"{0} килограмме"}\r
+                        other{"{0} килограмма"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} килограммах"}\r
+                        many{"{0} килограммах"}\r
+                        one{"{0} килограмме"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} килограмма"}\r
+                        many{"{0} килограмм"}\r
+                        one{"{0} килограмм"}\r
+                        other{"{0} килограмма"}\r
+                    }\r
+                }\r
                 dnam{"килограммы"}\r
                 few{"{0} килограмма"}\r
+                gender{"masculine"}\r
                 many{"{0} килограмм"}\r
                 one{"{0} килограмм"}\r
                 other{"{0} килограмма"}\r
@@ -858,15 +3026,103 @@ ru{
                 other{"{0} микрограмма"}\r
             }\r
             milligram{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} миллиграмма"}\r
+                        many{"{0} миллиграмм"}\r
+                        one{"{0} миллиграмм"}\r
+                        other{"{0} миллиграмма"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} миллиграммам"}\r
+                        many{"{0} миллиграммам"}\r
+                        one{"{0} миллиграмму"}\r
+                        other{"{0} миллиграмма"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} миллиграмм"}\r
+                        many{"{0} миллиграмм"}\r
+                        one{"{0} миллиграмма"}\r
+                        other{"{0} миллиграмма"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} миллиграммами"}\r
+                        many{"{0} миллиграммами"}\r
+                        one{"{0} миллиграммом"}\r
+                        other{"{0} миллиграмма"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} миллиграммах"}\r
+                        many{"{0} миллиграммах"}\r
+                        one{"{0} миллиграмме"}\r
+                        other{"{0} миллиграмма"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} миллиграммах"}\r
+                        many{"{0} миллиграммах"}\r
+                        one{"{0} миллиграмме"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} миллиграмма"}\r
+                        many{"{0} миллиграмм"}\r
+                        one{"{0} миллиграмм"}\r
+                        other{"{0} миллиграмма"}\r
+                    }\r
+                }\r
                 dnam{"миллиграммы"}\r
                 few{"{0} миллиграмма"}\r
+                gender{"masculine"}\r
                 many{"{0} миллиграммов"}\r
                 one{"{0} миллиграмм"}\r
                 other{"{0} миллиграмма"}\r
             }\r
             ounce{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} унции"}\r
+                        many{"{0} унций"}\r
+                        one{"{0} унцию"}\r
+                        other{"{0} унции"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} унциям"}\r
+                        many{"{0} унциям"}\r
+                        one{"{0} унции"}\r
+                        other{"{0} унции"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} унций"}\r
+                        many{"{0} унций"}\r
+                        one{"{0} унции"}\r
+                        other{"{0} унции"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} унциями"}\r
+                        many{"{0} унциями"}\r
+                        one{"{0} унцией"}\r
+                        other{"{0} унции"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} унциях"}\r
+                        many{"{0} унциях"}\r
+                        one{"{0} унции"}\r
+                        other{"{0} унции"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} унциях"}\r
+                        many{"{0} унциях"}\r
+                        one{"{0} унции"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} унции"}\r
+                        many{"{0} унций"}\r
+                        one{"{0} унция"}\r
+                        other{"{0} унции"}\r
+                    }\r
+                }\r
                 dnam{"унции"}\r
                 few{"{0} унции"}\r
+                gender{"feminine"}\r
                 many{"{0} унций"}\r
                 one{"{0} унция"}\r
                 other{"{0} унции"}\r
@@ -880,16 +3136,104 @@ ru{
                 other{"{0} тройской унции"}\r
             }\r
             pound{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} фунта"}\r
+                        many{"{0} фунтов"}\r
+                        one{"{0} фунт"}\r
+                        other{"{0} фунта"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} фунтам"}\r
+                        many{"{0} фунтам"}\r
+                        one{"{0} фунту"}\r
+                        other{"{0} фунта"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} фунтов"}\r
+                        many{"{0} фунтов"}\r
+                        one{"{0} фунта"}\r
+                        other{"{0} фунта"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} фунтами"}\r
+                        many{"{0} фунтами"}\r
+                        one{"{0} фунтом"}\r
+                        other{"{0} фунта"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} фунтах"}\r
+                        many{"{0} фунтах"}\r
+                        one{"{0} фунте"}\r
+                        other{"{0} фунта"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} фунтах"}\r
+                        many{"{0} фунтах"}\r
+                        one{"{0} фунте"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} фунта"}\r
+                        many{"{0} фунтов"}\r
+                        one{"{0} фунт"}\r
+                        other{"{0} фунта"}\r
+                    }\r
+                }\r
                 dnam{"фунты"}\r
                 few{"{0} фунта"}\r
+                gender{"masculine"}\r
                 many{"{0} фунтов"}\r
                 one{"{0} фунт"}\r
                 other{"{0} фунта"}\r
                 per{"{0} на фунт"}\r
             }\r
             solar-mass{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} солнечные массы"}\r
+                        many{"{0} солнечных масс"}\r
+                        one{"{0} солнечную массу"}\r
+                        other{"{0} солнечной массы"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} солнечным массам"}\r
+                        many{"{0} солнечным массам"}\r
+                        one{"{0} солнечной массе"}\r
+                        other{"{0} солнечной массы"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} солнечных масс"}\r
+                        many{"{0} солнечных масс"}\r
+                        one{"{0} солнечной массы"}\r
+                        other{"{0} солнечной массы"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} солнечными массами"}\r
+                        many{"{0} солнечными массами"}\r
+                        one{"{0} солнечной массой"}\r
+                        other{"{0} солнечной массы"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} солнечных массах"}\r
+                        many{"{0} солнечных массах"}\r
+                        one{"{0} солнечной массе"}\r
+                        other{"{0} солнечной массы"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} солнечных массах"}\r
+                        many{"{0} солнечных массах"}\r
+                        one{"{0} солнечной массе"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} солнечные массы"}\r
+                        many{"{0} солнечных масс"}\r
+                        one{"{0} солнечная масса"}\r
+                        other{"{0} солнечной массы"}\r
+                    }\r
+                }\r
                 dnam{"солнечные массы"}\r
                 few{"{0} солнечные массы"}\r
+                gender{"feminine"}\r
                 many{"{0} солнечных масс"}\r
                 one{"{0} солнечная масса"}\r
                 other{"{0} солнечной массы"}\r
@@ -983,8 +3327,52 @@ ru{
                 other{"{0} дюйма ртутного столба"}\r
             }\r
             kilopascal{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} килопаскаля"}\r
+                        many{"{0} килопаскалей"}\r
+                        one{"{0} килопаскаль"}\r
+                        other{"{0} килопаскаля"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} килопаскалям"}\r
+                        many{"{0} килопаскалям"}\r
+                        one{"{0} килопаскалю"}\r
+                        other{"{0} килопаскаля"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} килопаскалей"}\r
+                        many{"{0} килопаскалей"}\r
+                        one{"{0} килопаскаля"}\r
+                        other{"{0} килопаскаля"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} килопаскалями"}\r
+                        many{"{0} килопаскалями"}\r
+                        one{"{0} килопаскалем"}\r
+                        other{"{0} килопаскаля"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} килопаскалях"}\r
+                        many{"{0} килопаскалях"}\r
+                        one{"{0} килопаскале"}\r
+                        other{"{0} килопаскаля"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} килопаскалях"}\r
+                        many{"{0} килопаскалях"}\r
+                        one{"{0} килопаскале"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} килопаскаля"}\r
+                        many{"{0} килопаскалей"}\r
+                        one{"{0} килопаскаль"}\r
+                        other{"{0} килопаскаля"}\r
+                    }\r
+                }\r
                 dnam{"килопаскали"}\r
                 few{"{0} килопаскаля"}\r
+                gender{"masculine"}\r
                 many{"{0} килопаскалей"}\r
                 one{"{0} килопаскаль"}\r
                 other{"{0} килопаскаля"}\r
@@ -1027,8 +3415,52 @@ ru{
         }\r
         speed{\r
             kilometer-per-hour{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} километра в час"}\r
+                        many{"{0} километров в час"}\r
+                        one{"{0} километр в час"}\r
+                        other{"{0} километра в час"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} километрам в час"}\r
+                        many{"{0} километрам в час"}\r
+                        one{"{0} километру в час"}\r
+                        other{"{0} километра в час"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} километров в час"}\r
+                        many{"{0} километров в час"}\r
+                        one{"{0} километра в час"}\r
+                        other{"{0} километра в час"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} километрами в час"}\r
+                        many{"{0} километрами в час"}\r
+                        one{"{0} километром в час"}\r
+                        other{"{0} километра в час"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} километрах в час"}\r
+                        many{"{0} километрах в час"}\r
+                        one{"{0} километре в час"}\r
+                        other{"{0} километра в час"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} километрах в час"}\r
+                        many{"{0} километрах в час"}\r
+                        one{"{0} километре в час"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} километра в час"}\r
+                        many{"{0} километров в час"}\r
+                        one{"{0} километр в час"}\r
+                        other{"{0} километра в час"}\r
+                    }\r
+                }\r
                 dnam{"километры в час"}\r
                 few{"{0} километра в час"}\r
+                gender{"masculine"}\r
                 many{"{0} километров в час"}\r
                 one{"{0} километр в час"}\r
                 other{"{0} километра в час"}\r
@@ -1041,15 +3473,103 @@ ru{
                 other{"{0} узла"}\r
             }\r
             meter-per-second{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} метра в секунду"}\r
+                        many{"{0} метров в секунду"}\r
+                        one{"{0} метр в секунду"}\r
+                        other{"{0} метра в секунду"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} метрам в секунду"}\r
+                        many{"{0} метрам в секунду"}\r
+                        one{"{0} метру в секунду"}\r
+                        other{"{0} метра в секунду"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} метров в секунду"}\r
+                        many{"{0} метров в секунду"}\r
+                        one{"{0} метра в секунду"}\r
+                        other{"{0} метра в секунду"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} метрами в секунду"}\r
+                        many{"{0} метрами в секунду"}\r
+                        one{"{0} метром в секунду"}\r
+                        other{"{0} метра в секунду"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} метрах в секунду"}\r
+                        many{"{0} метрах в секунду"}\r
+                        one{"{0} метре в секунду"}\r
+                        other{"{0} метра в секунду"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} метрах в секунду"}\r
+                        many{"{0} метрах в секунду"}\r
+                        one{"{0} метре в секунду"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} метра в секунду"}\r
+                        many{"{0} метров в секунду"}\r
+                        one{"{0} метр в секунду"}\r
+                        other{"{0} метра в секунду"}\r
+                    }\r
+                }\r
                 dnam{"метры в секунду"}\r
                 few{"{0} метра в секунду"}\r
+                gender{"masculine"}\r
                 many{"{0} метров в секунду"}\r
                 one{"{0} метр в секунду"}\r
                 other{"{0} метра в секунду"}\r
             }\r
             mile-per-hour{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} мили в час"}\r
+                        many{"{0} миль в час"}\r
+                        one{"{0} милю в час"}\r
+                        other{"{0} мили в час"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} милям в час"}\r
+                        many{"{0} милям в час"}\r
+                        one{"{0} миле в час"}\r
+                        other{"{0} мили в час"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} миль в час"}\r
+                        many{"{0} миль в час"}\r
+                        one{"{0} мили в час"}\r
+                        other{"{0} мили в час"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} милями в час"}\r
+                        many{"{0} милями в час"}\r
+                        one{"{0} милей в час"}\r
+                        other{"{0} мили в час"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} милях в час"}\r
+                        many{"{0} милях в час"}\r
+                        one{"{0} миле в час"}\r
+                        other{"{0} мили в час"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} милях в час"}\r
+                        many{"{0} милях в час"}\r
+                        one{"{0} миле в час"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} мили в час"}\r
+                        many{"{0} миль в час"}\r
+                        one{"{0} миля в час"}\r
+                        other{"{0} мили в час"}\r
+                    }\r
+                }\r
                 dnam{"мили в час"}\r
                 few{"{0} мили в час"}\r
+                gender{"feminine"}\r
                 many{"{0} миль в час"}\r
                 one{"{0} миля в час"}\r
                 other{"{0} мили в час"}\r
@@ -1057,29 +3577,205 @@ ru{
         }\r
         temperature{\r
             celsius{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} градуса Цельсия"}\r
+                        many{"{0} градусов Цельсия"}\r
+                        one{"{0} градус Цельсия"}\r
+                        other{"{0} градуса Цельсия"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} градусам Цельсия"}\r
+                        many{"{0} градусам Цельсия"}\r
+                        one{"{0} градусу Цельсия"}\r
+                        other{"{0} градуса Цельсия"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} градусов Цельсия"}\r
+                        many{"{0} градусов Цельсия"}\r
+                        one{"{0} градуса Цельсия"}\r
+                        other{"{0} градуса Цельсия"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} градусами Цельсия"}\r
+                        many{"{0} градусами Цельсия"}\r
+                        one{"{0} градусом Цельсия"}\r
+                        other{"{0} градуса Цельсия"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} градусах Цельсия"}\r
+                        many{"{0} градусах Цельсия"}\r
+                        one{"{0} градусе Цельсия"}\r
+                        other{"{0} градуса Цельсия"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} градусах Цельсия"}\r
+                        many{"{0} градусах Цельсия"}\r
+                        one{"{0} градусе Цельсия"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} градуса Цельсия"}\r
+                        many{"{0} градусов Цельсия"}\r
+                        one{"{0} градус Цельсия"}\r
+                        other{"{0} градуса Цельсия"}\r
+                    }\r
+                }\r
                 dnam{"градусы Цельсия"}\r
                 few{"{0} градуса Цельсия"}\r
+                gender{"masculine"}\r
                 many{"{0} градусов Цельсия"}\r
                 one{"{0} градус Цельсия"}\r
                 other{"{0} градуса Цельсия"}\r
             }\r
             fahrenheit{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} градуса Фаренгейта"}\r
+                        many{"{0} градусов Фаренгейта"}\r
+                        one{"{0} градус Фаренгейта"}\r
+                        other{"{0} градуса Фаренгейта"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} градусам Фаренгейта"}\r
+                        many{"{0} градусам Фаренгейта"}\r
+                        one{"{0} градусу Фаренгейта"}\r
+                        other{"{0} градуса Фаренгейта"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} градусов Фаренгейта"}\r
+                        many{"{0} градусов Фаренгейта"}\r
+                        one{"{0} градуса Фаренгейта"}\r
+                        other{"{0} градуса Фаренгейта"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} градусами Фаренгейта"}\r
+                        many{"{0} градусами Фаренгейта"}\r
+                        one{"{0} градусом Фаренгейта"}\r
+                        other{"{0} градуса Фаренгейта"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} градусах Фаренгейта"}\r
+                        many{"{0} градусах Фаренгейта"}\r
+                        one{"{0} градусе Фаренгейта"}\r
+                        other{"{0} градуса Фаренгейта"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} градусах Фаренгейта"}\r
+                        many{"{0} градусах Фаренгейта"}\r
+                        one{"{0} градусе Фаренгейта"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} градуса Фаренгейта"}\r
+                        many{"{0} градусов Фаренгейта"}\r
+                        one{"{0} градус Фаренгейта"}\r
+                        other{"{0} градуса Фаренгейта"}\r
+                    }\r
+                }\r
                 dnam{"градусы Фаренгейта"}\r
                 few{"{0} градуса Фаренгейта"}\r
+                gender{"masculine"}\r
                 many{"{0} градусов Фаренгейта"}\r
                 one{"{0} градус Фаренгейта"}\r
                 other{"{0} градуса Фаренгейта"}\r
             }\r
             generic{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} градуса"}\r
+                        many{"{0} градусов"}\r
+                        one{"{0} градус"}\r
+                        other{"{0} градуса"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} градусам"}\r
+                        many{"{0} градусам"}\r
+                        one{"{0} градусу"}\r
+                        other{"{0} градуса"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} градусов"}\r
+                        many{"{0} градусов"}\r
+                        one{"{0} градуса"}\r
+                        other{"{0} градуса"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} градусами"}\r
+                        many{"{0} градусами"}\r
+                        one{"{0} градусом"}\r
+                        other{"{0} градуса"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} градусах"}\r
+                        many{"{0} градусах"}\r
+                        one{"{0} градусе"}\r
+                        other{"{0} градуса"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} градусах"}\r
+                        many{"{0} градусах"}\r
+                        one{"{0} градусе"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} градуса"}\r
+                        many{"{0} градусов"}\r
+                        one{"{0} градус"}\r
+                        other{"{0} градуса"}\r
+                    }\r
+                }\r
                 dnam{"°"}\r
                 few{"{0} градуса"}\r
+                gender{"masculine"}\r
                 many{"{0} градусов"}\r
                 one{"{0} градус"}\r
                 other{"{0} градуса"}\r
             }\r
             kelvin{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} кельвина"}\r
+                        many{"{0} кельвинов"}\r
+                        one{"{0} кельвин"}\r
+                        other{"{0} кельвина"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} кельвинам"}\r
+                        many{"{0} кельвинам"}\r
+                        one{"{0} кельвину"}\r
+                        other{"{0} кельвина"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} кельвинов"}\r
+                        many{"{0} кельвинов"}\r
+                        one{"{0} кельвина"}\r
+                        other{"{0} кельвина"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} кельвинами"}\r
+                        many{"{0} кельвинами"}\r
+                        one{"{0} кельвином"}\r
+                        other{"{0} кельвина"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} кельвинах"}\r
+                        many{"{0} кельвинах"}\r
+                        one{"{0} кельвине"}\r
+                        other{"{0} кельвина"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} кельвинах"}\r
+                        many{"{0} кельвинах"}\r
+                        one{"{0} кельвине"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} кельвина"}\r
+                        many{"{0} кельвинов"}\r
+                        one{"{0} кельвин"}\r
+                        other{"{0} кельвина"}\r
+                    }\r
+                }\r
                 dnam{"кельвины"}\r
                 few{"{0} кельвина"}\r
+                gender{"masculine"}\r
                 many{"{0} кельвинов"}\r
                 one{"{0} кельвин"}\r
                 other{"{0} кельвина"}\r
@@ -1124,23 +3820,155 @@ ru{
                 other{"{0} бушеля"}\r
             }\r
             centiliter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} сантилитра"}\r
+                        many{"{0} сантилитров"}\r
+                        one{"{0} сантилитр"}\r
+                        other{"{0} сантилитра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} сантилитрам"}\r
+                        many{"{0} сантилитрам"}\r
+                        one{"{0} сантилитру"}\r
+                        other{"{0} сантилитра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} сантилитров"}\r
+                        many{"{0} сантилитров"}\r
+                        one{"{0} сантилитра"}\r
+                        other{"{0} сантилитра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} сантилитрами"}\r
+                        many{"{0} сантилитрами"}\r
+                        one{"{0} сантилитром"}\r
+                        other{"{0} сантилитра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} сантилитрах"}\r
+                        many{"{0} сантилитрах"}\r
+                        one{"{0} сантилитре"}\r
+                        other{"{0} сантилитра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} сантилитрах"}\r
+                        many{"{0} сантилитрах"}\r
+                        one{"{0} сантилитре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} сантилитра"}\r
+                        many{"{0} сантилитров"}\r
+                        one{"{0} сантилитр"}\r
+                        other{"{0} сантилитра"}\r
+                    }\r
+                }\r
                 dnam{"сантилитры"}\r
                 few{"{0} сантилитра"}\r
+                gender{"masculine"}\r
                 many{"{0} сантилитров"}\r
                 one{"{0} сантилитр"}\r
                 other{"{0} сантилитра"}\r
             }\r
             cubic-centimeter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} кубических сантиметра"}\r
+                        many{"{0} кубических сантиметров"}\r
+                        one{"{0} кубический сантиметр"}\r
+                        other{"{0} кубического сантиметра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} кубическим сантиметрам"}\r
+                        many{"{0} кубическим сантиметрам"}\r
+                        one{"{0} кубическому сантиметру"}\r
+                        other{"{0} кубического сантиметра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} кубических сантиметров"}\r
+                        many{"{0} кубических сантиметров"}\r
+                        one{"{0} кубического сантиметра"}\r
+                        other{"{0} кубического сантиметра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} кубическими сантиметрами"}\r
+                        many{"{0} кубическими сантиметрами"}\r
+                        one{"{0} кубическим сантиметром"}\r
+                        other{"{0} кубического сантиметра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} кубических сантиметрах"}\r
+                        many{"{0} кубических сантиметрах"}\r
+                        one{"{0} кубическом сантиметре"}\r
+                        other{"{0} кубического сантиметра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} кубических сантиметрах"}\r
+                        many{"{0} кубических сантиметрах"}\r
+                        one{"{0} кубическом сантиметре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} кубических сантиметра"}\r
+                        many{"{0} кубических сантиметров"}\r
+                        one{"{0} кубический сантиметр"}\r
+                        other{"{0} кубического сантиметра"}\r
+                    }\r
+                }\r
                 dnam{"кубические сантиметры"}\r
                 few{"{0} кубических сантиметра"}\r
+                gender{"masculine"}\r
                 many{"{0} кубических сантиметров"}\r
                 one{"{0} кубический сантиметр"}\r
                 other{"{0} кубического сантиметра"}\r
                 per{"{0} на кубический сантиметр"}\r
             }\r
             cubic-foot{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} кубических фута"}\r
+                        many{"{0} кубических футов"}\r
+                        one{"{0} кубический фут"}\r
+                        other{"{0} кубического фута"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} кубическим футам"}\r
+                        many{"{0} кубическим футам"}\r
+                        one{"{0} кубическому футу"}\r
+                        other{"{0} кубического фута"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} кубических футов"}\r
+                        many{"{0} кубических футов"}\r
+                        one{"{0} кубического фута"}\r
+                        other{"{0} кубического фута"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} кубическими футами"}\r
+                        many{"{0} кубическими футами"}\r
+                        one{"{0} кубическим футом"}\r
+                        other{"{0} кубического фута"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} кубических футах"}\r
+                        many{"{0} кубических футах"}\r
+                        one{"{0} кубическом футе"}\r
+                        other{"{0} кубического фута"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} кубических футах"}\r
+                        many{"{0} кубических футах"}\r
+                        one{"{0} кубическом футе"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} кубических фута"}\r
+                        many{"{0} кубических футов"}\r
+                        one{"{0} кубический фут"}\r
+                        other{"{0} кубического фута"}\r
+                    }\r
+                }\r
                 dnam{"кубические футы"}\r
                 few{"{0} кубических фута"}\r
+                gender{"masculine"}\r
                 many{"{0} кубических футов"}\r
                 one{"{0} кубический фут"}\r
                 other{"{0} кубического фута"}\r
@@ -1168,8 +3996,52 @@ ru{
                 per{"{0} на кубический метр"}\r
             }\r
             cubic-mile{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} кубические мили"}\r
+                        many{"{0} кубических миль"}\r
+                        one{"{0} кубическую милю"}\r
+                        other{"{0} кубической мили"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} кубическим милям"}\r
+                        many{"{0} кубическим милям"}\r
+                        one{"{0} кубической миле"}\r
+                        other{"{0} кубической мили"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} кубических миль"}\r
+                        many{"{0} кубических миль"}\r
+                        one{"{0} кубической мили"}\r
+                        other{"{0} кубической мили"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} кубическими милями"}\r
+                        many{"{0} кубическими милями"}\r
+                        one{"{0} кубической милей"}\r
+                        other{"{0} кубической мили"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} кубических милях"}\r
+                        many{"{0} кубических милях"}\r
+                        one{"{0} кубической миле"}\r
+                        other{"{0} кубической мили"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} кубических милях"}\r
+                        many{"{0} кубических милях"}\r
+                        one{"{0} кубической миле"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} кубические мили"}\r
+                        many{"{0} кубических миль"}\r
+                        one{"{0} кубическая миля"}\r
+                        other{"{0} кубической мили"}\r
+                    }\r
+                }\r
                 dnam{"кубические мили"}\r
                 few{"{0} кубические мили"}\r
+                gender{"feminine"}\r
                 many{"{0} кубических миль"}\r
                 one{"{0} кубическая миля"}\r
                 other{"{0} кубической мили"}\r
@@ -1182,8 +4054,52 @@ ru{
                 other{"{0} кубического ярда"}\r
             }\r
             cup{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} амер. чашки"}\r
+                        many{"{0} амер. чашек"}\r
+                        one{"{0} амер. чашку"}\r
+                        other{"{0} амер. чашки"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} амер. чашкам"}\r
+                        many{"{0} амер. чашкам"}\r
+                        one{"{0} амер. чашке"}\r
+                        other{"{0} амер. чашки"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} амер. чашек"}\r
+                        many{"{0} амер. чашек"}\r
+                        one{"{0} амер. чашки"}\r
+                        other{"{0} амер. чашки"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} амер. чашками"}\r
+                        many{"{0} амер. чашками"}\r
+                        one{"{0} амер. чашкой"}\r
+                        other{"{0} амер. чашки"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} амер. чашках"}\r
+                        many{"{0} амер. чашках"}\r
+                        one{"{0} амер. чашке"}\r
+                        other{"{0} амер. чашки"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} амер. чашках"}\r
+                        many{"{0} амер. чашках"}\r
+                        one{"{0} амер. чашке"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} амер. чашки"}\r
+                        many{"{0} амер. чашек"}\r
+                        one{"{0} амер. чашка"}\r
+                        other{"{0} амер. чашки"}\r
+                    }\r
+                }\r
                 dnam{"амер. чашки"}\r
                 few{"{0} амер. чашки"}\r
+                gender{"feminine"}\r
                 many{"{0} амер. чашек"}\r
                 one{"{0} амер. чашка"}\r
                 other{"{0} амер. чашки"}\r
@@ -1196,64 +4112,460 @@ ru{
                 other{"{0} метрической чашки"}\r
             }\r
             deciliter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} децилитра"}\r
+                        many{"{0} децилитров"}\r
+                        one{"{0} децилитр"}\r
+                        other{"{0} децилитра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} децилитрам"}\r
+                        many{"{0} децилитрам"}\r
+                        one{"{0} децилитру"}\r
+                        other{"{0} децилитра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} децилитров"}\r
+                        many{"{0} децилитров"}\r
+                        one{"{0} децилитра"}\r
+                        other{"{0} децилитра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} децилитрами"}\r
+                        many{"{0} децилитрами"}\r
+                        one{"{0} децилитром"}\r
+                        other{"{0} децилитра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} децилитрах"}\r
+                        many{"{0} децилитрах"}\r
+                        one{"{0} децилитре"}\r
+                        other{"{0} децилитра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} децилитрах"}\r
+                        many{"{0} децилитрах"}\r
+                        one{"{0} децилитре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} децилитра"}\r
+                        many{"{0} децилитров"}\r
+                        one{"{0} децилитр"}\r
+                        other{"{0} децилитра"}\r
+                    }\r
+                }\r
                 dnam{"децилитры"}\r
                 few{"{0} децилитра"}\r
+                gender{"masculine"}\r
                 many{"{0} децилитров"}\r
                 one{"{0} децилитр"}\r
                 other{"{0} децилитра"}\r
             }\r
             dessert-spoon{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} десертные ложки"}\r
+                        many{"{0} десертных ложек"}\r
+                        one{"{0} десертную ложку"}\r
+                        other{"{0} десертной ложки"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} десертным ложкам"}\r
+                        many{"{0} десертным ложкам"}\r
+                        one{"{0} десертной ложке"}\r
+                        other{"{0} десертной ложки"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} десертных ложек"}\r
+                        many{"{0} десертных ложек"}\r
+                        one{"{0} десертной ложки"}\r
+                        other{"{0} десертной ложки"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} десертными ложками"}\r
+                        many{"{0} десертными ложками"}\r
+                        one{"{0} десертной ложкой"}\r
+                        other{"{0} десертной ложки"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} десертных ложках"}\r
+                        many{"{0} десертных ложках"}\r
+                        one{"{0} десертной ложке"}\r
+                        other{"{0} десертной ложки"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} десертных ложках"}\r
+                        many{"{0} десертных ложках"}\r
+                        one{"{0} десертной ложке"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} десертные ложки"}\r
+                        many{"{0} десертных ложек"}\r
+                        one{"{0} десертная ложка"}\r
+                        other{"{0} десертной ложки"}\r
+                    }\r
+                }\r
                 dnam{"десертная ложка"}\r
                 few{"{0} десертные ложки"}\r
+                gender{"feminine"}\r
                 many{"{0} десертных ложек"}\r
                 one{"{0} десертная ложка"}\r
                 other{"{0} десертной ложки"}\r
             }\r
             dessert-spoon-imperial{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} имп. десертные ложки"}\r
+                        many{"{0} имп. десертных ложек"}\r
+                        one{"{0} имп. десертную ложку"}\r
+                        other{"{0} имп. десертной ложки"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} имп. десертным ложкам"}\r
+                        many{"{0} имп. десертным ложкам"}\r
+                        one{"{0} имп. десертной ложке"}\r
+                        other{"{0} имп. десертной ложки"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} имп. десертных ложек"}\r
+                        many{"{0} имп. десертных ложек"}\r
+                        one{"{0} имп. десертной ложки"}\r
+                        other{"{0} имп. десертной ложки"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} имп. десертными ложками"}\r
+                        many{"{0} имп. десертными ложками"}\r
+                        one{"{0} имп. десертной ложкой"}\r
+                        other{"{0} имп. десертной ложки"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} имп. десертных ложках"}\r
+                        many{"{0} имп. десертных ложках"}\r
+                        one{"{0} имп. десертной ложке"}\r
+                        other{"{0} имп. десертной ложки"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} имп. десертных ложках"}\r
+                        many{"{0} имп. десертных ложках"}\r
+                        one{"{0} имп. десертной ложке"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} имп. десертные ложки"}\r
+                        many{"{0} имп. десертных ложек"}\r
+                        one{"{0} имп. десертная ложка"}\r
+                        other{"{0} имп. десертной ложки"}\r
+                    }\r
+                }\r
                 dnam{"имп. десертная ложка"}\r
                 few{"{0} имп. десертные ложки"}\r
+                gender{"feminine"}\r
                 many{"{0} имп. десертных ложек"}\r
                 one{"{0} имп. десертная ложка"}\r
                 other{"{0} имп. десертной ложки"}\r
             }\r
             dram{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} жидкие драхмы"}\r
+                        many{"{0} жидких драхм"}\r
+                        one{"{0} жидкую драхму"}\r
+                        other{"{0} жидкой драхмы"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} жидким драхмам"}\r
+                        many{"{0} жидким драхмам"}\r
+                        one{"{0} жидкой драхме"}\r
+                        other{"{0} жидкой драхмы"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} жидких драхм"}\r
+                        many{"{0} жидких драхм"}\r
+                        one{"{0} жидкой драхмы"}\r
+                        other{"{0} жидкой драхмы"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} жидкими драхмами"}\r
+                        many{"{0} жидкими драхмами"}\r
+                        one{"{0} жидкой драхмой"}\r
+                        other{"{0} жидкой драхмы"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} жидких драхмах"}\r
+                        many{"{0} жидких драхмах"}\r
+                        one{"{0} жидкой драхме"}\r
+                        other{"{0} жидкой драхмы"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} жидких драхмах"}\r
+                        many{"{0} жидких драхмах"}\r
+                        one{"{0} жидкой драхме"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} жидкие драхмы"}\r
+                        many{"{0} жидких драхм"}\r
+                        one{"{0} жидкая драхма"}\r
+                        other{"{0} жидкой драхмы"}\r
+                    }\r
+                }\r
                 few{"{0} жидкие драхмы"}\r
+                gender{"feminine"}\r
                 many{"{0} жидких драхм"}\r
                 one{"{0} жидкая драхма"}\r
                 other{"{0} жидкой драхмы"}\r
             }\r
             drop{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} капли"}\r
+                        many{"{0} капель"}\r
+                        one{"{0} каплю"}\r
+                        other{"{0} капли"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} каплям"}\r
+                        many{"{0} каплям"}\r
+                        one{"{0} капле"}\r
+                        other{"{0} капли"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} капель"}\r
+                        many{"{0} капель"}\r
+                        one{"{0} капли"}\r
+                        other{"{0} капли"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} каплями"}\r
+                        many{"{0} каплями"}\r
+                        one{"{0} каплей"}\r
+                        other{"{0} капли"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} каплях"}\r
+                        many{"{0} каплях"}\r
+                        one{"{0} капле"}\r
+                        other{"{0} капли"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} каплях"}\r
+                        many{"{0} каплях"}\r
+                        one{"{0} капле"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} капли"}\r
+                        many{"{0} капель"}\r
+                        one{"{0} капля"}\r
+                        other{"{0} капли"}\r
+                    }\r
+                }\r
                 dnam{"капля"}\r
                 few{"{0} капли"}\r
+                gender{"feminine"}\r
                 many{"{0} капель"}\r
                 one{"{0} капля"}\r
                 other{"{0} капли"}\r
             }\r
             fluid-ounce{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} амер. жидкие унции"}\r
+                        many{"{0} амер. жидких унций"}\r
+                        one{"{0} амер. жидкую унцию"}\r
+                        other{"{0} амер. жидкой унции"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} амер. жидким унциям"}\r
+                        many{"{0} амер. жидким унциям"}\r
+                        one{"{0} амер. жидкой унции"}\r
+                        other{"{0} амер. жидкой унции"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} амер. жидких унций"}\r
+                        many{"{0} амер. жидких унций"}\r
+                        one{"{0} амер. жидкой унции"}\r
+                        other{"{0} амер. жидкой унции"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} амер. жидкими унциями"}\r
+                        many{"{0} амер. жидкими унциями"}\r
+                        one{"{0} амер. жидкой унцией"}\r
+                        other{"{0} амер. жидкой унции"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} амер. жидких унциях"}\r
+                        many{"{0} амер. жидких унциях"}\r
+                        one{"{0} амер. жидкой унции"}\r
+                        other{"{0} амер. жидкой унции"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} амер. жидких унциях"}\r
+                        many{"{0} амер. жидких унциях"}\r
+                        one{"{0} амер. жидкой унции"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} амер. жидкие унции"}\r
+                        many{"{0} амер. жидких унций"}\r
+                        one{"{0} амер. жидкая унция"}\r
+                        other{"{0} амер. жидкой унции"}\r
+                    }\r
+                }\r
                 dnam{"амер. жидкие унции"}\r
                 few{"{0} амер. жидкие унции"}\r
+                gender{"feminine"}\r
                 many{"{0} амер. жидких унций"}\r
                 one{"{0} амер. жидкая унция"}\r
                 other{"{0} амер. жидкой унции"}\r
             }\r
             fluid-ounce-imperial{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} имп. жидкие унции"}\r
+                        many{"{0} имп. жидких унций"}\r
+                        one{"{0} имп. жидкую унцию"}\r
+                        other{"{0} имп. жидкой унции"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} имп. жидким унциям"}\r
+                        many{"{0} имп. жидким унциям"}\r
+                        one{"{0} имп. жидкой унции"}\r
+                        other{"{0} имп. жидкой унции"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} имп. жидких унций"}\r
+                        many{"{0} имп. жидких унций"}\r
+                        one{"{0} имп. жидкой унции"}\r
+                        other{"{0} имп. жидкой унции"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} имп. жидкими унциями"}\r
+                        many{"{0} имп. жидкими унциями"}\r
+                        one{"{0} имп. жидкой унцией"}\r
+                        other{"{0} имп. жидкой унции"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} имп. жидких унциях"}\r
+                        many{"{0} имп. жидких унциях"}\r
+                        one{"{0} имп. жидкой унции"}\r
+                        other{"{0} имп. жидкой унции"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} имп. жидких унциях"}\r
+                        many{"{0} имп. жидких унциях"}\r
+                        one{"{0} имп. жидкой унции"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} имп. жидкие унции"}\r
+                        many{"{0} имп. жидких унций"}\r
+                        one{"{0} имп. жидкая унция"}\r
+                        other{"{0} имп. жидкой унции"}\r
+                    }\r
+                }\r
                 dnam{"имп. жидкие унции"}\r
                 few{"{0} имп. жидкие унции"}\r
+                gender{"feminine"}\r
                 many{"{0} имп. жидких унций"}\r
                 one{"{0} имп. жидкая унция"}\r
                 other{"{0} имп. жидкой унции"}\r
             }\r
             gallon{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} амер. галлона"}\r
+                        many{"{0} амер. галлонов"}\r
+                        one{"{0} амер. галлон"}\r
+                        other{"{0} амер. галлона"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} амер. галлонам"}\r
+                        many{"{0} амер. галлонам"}\r
+                        one{"{0} амер. галлону"}\r
+                        other{"{0} амер. галлона"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} амер. галлонов"}\r
+                        many{"{0} амер. галлонов"}\r
+                        one{"{0} амер. галлона"}\r
+                        other{"{0} амер. галлона"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} амер. галлонами"}\r
+                        many{"{0} амер. галлонами"}\r
+                        one{"{0} амер. галлоном"}\r
+                        other{"{0} амер. галлона"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} амер. галлонах"}\r
+                        many{"{0} амер. галлонах"}\r
+                        one{"{0} амер. галлоне"}\r
+                        other{"{0} амер. галлона"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} амер. галлонах"}\r
+                        many{"{0} амер. галлонах"}\r
+                        one{"{0} амер. галлоне"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} амер. галлона"}\r
+                        many{"{0} амер. галлонов"}\r
+                        one{"{0} амер. галлон"}\r
+                        other{"{0} амер. галлона"}\r
+                    }\r
+                }\r
                 dnam{"амер. галлоны"}\r
                 few{"{0} амер. галлона"}\r
+                gender{"masculine"}\r
                 many{"{0} амер. галлонов"}\r
                 one{"{0} амер. галлон"}\r
                 other{"{0} амер. галлона"}\r
                 per{"{0} на амер. галлон"}\r
             }\r
             gallon-imperial{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} имп. галлона"}\r
+                        many{"{0} имп. галлонов"}\r
+                        one{"{0} имп. галлон"}\r
+                        other{"{0} имп. галлона"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} имп. галлонам"}\r
+                        many{"{0} имп. галлонам"}\r
+                        one{"{0} имп. галлону"}\r
+                        other{"{0} имп. галлона"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} имп. галлонов"}\r
+                        many{"{0} имп. галлонов"}\r
+                        one{"{0} имп. галлона"}\r
+                        other{"{0} имп. галлона"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} имп. галлонами"}\r
+                        many{"{0} имп. галлонами"}\r
+                        one{"{0} имп. галлоном"}\r
+                        other{"{0} имп. галлона"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} имп. галлонах"}\r
+                        many{"{0} имп. галлонах"}\r
+                        one{"{0} имп. галлоне"}\r
+                        other{"{0} имп. галлона"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} имп. галлонах"}\r
+                        many{"{0} имп. галлонах"}\r
+                        one{"{0} имп. галлоне"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} имп. галлона"}\r
+                        many{"{0} имп. галлонов"}\r
+                        one{"{0} имп. галлон"}\r
+                        other{"{0} имп. галлона"}\r
+                    }\r
+                }\r
                 dnam{"имп. галлоны"}\r
                 few{"{0} имп. галлона"}\r
+                gender{"masculine"}\r
                 many{"{0} имп. галлонов"}\r
                 one{"{0} имп. галлон"}\r
                 other{"{0} имп. галлона"}\r
@@ -1267,15 +4579,103 @@ ru{
                 other{"{0} гектолитра"}\r
             }\r
             jigger{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} джиггера"}\r
+                        many{"{0} джиггеров"}\r
+                        one{"{0} джиггер"}\r
+                        other{"{0} джиггера"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} джиггерам"}\r
+                        many{"{0} джиггерам"}\r
+                        one{"{0} джиггеру"}\r
+                        other{"{0} джиггера"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} джиггеров"}\r
+                        many{"{0} джиггеров"}\r
+                        one{"{0} джиггера"}\r
+                        other{"{0} джиггера"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} джиггерами"}\r
+                        many{"{0} джиггерами"}\r
+                        one{"{0} джиггером"}\r
+                        other{"{0} джиггера"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} джиггерах"}\r
+                        many{"{0} джиггерах"}\r
+                        one{"{0} джиггере"}\r
+                        other{"{0} джиггера"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} джиггерах"}\r
+                        many{"{0} джиггерах"}\r
+                        one{"{0} джиггере"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} джиггера"}\r
+                        many{"{0} джиггеров"}\r
+                        one{"{0} джиггер"}\r
+                        other{"{0} джиггера"}\r
+                    }\r
+                }\r
                 dnam{"джиггер"}\r
                 few{"{0} джиггера"}\r
+                gender{"masculine"}\r
                 many{"{0} джиггеров"}\r
                 one{"{0} джиггер"}\r
                 other{"{0} джиггера"}\r
             }\r
             liter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} литра"}\r
+                        many{"{0} литров"}\r
+                        one{"{0} литр"}\r
+                        other{"{0} литра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} литрам"}\r
+                        many{"{0} литрам"}\r
+                        one{"{0} литру"}\r
+                        other{"{0} литра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} литров"}\r
+                        many{"{0} литров"}\r
+                        one{"{0} литра"}\r
+                        other{"{0} литра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} литрами"}\r
+                        many{"{0} литрами"}\r
+                        one{"{0} литром"}\r
+                        other{"{0} литра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} литрах"}\r
+                        many{"{0} литрах"}\r
+                        one{"{0} литре"}\r
+                        other{"{0} литра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} литрах"}\r
+                        many{"{0} литрах"}\r
+                        one{"{0} литре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} литра"}\r
+                        many{"{0} литров"}\r
+                        one{"{0} литр"}\r
+                        other{"{0} литра"}\r
+                    }\r
+                }\r
                 dnam{"литры"}\r
                 few{"{0} литра"}\r
+                gender{"masculine"}\r
                 many{"{0} литров"}\r
                 one{"{0} литр"}\r
                 other{"{0} литра"}\r
@@ -1289,22 +4689,154 @@ ru{
                 other{"{0} мегалитра"}\r
             }\r
             milliliter{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} миллилитра"}\r
+                        many{"{0} миллилитров"}\r
+                        one{"{0} миллилитр"}\r
+                        other{"{0} миллилитра"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} миллилитрам"}\r
+                        many{"{0} миллилитрам"}\r
+                        one{"{0} миллилитру"}\r
+                        other{"{0} миллилитра"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} миллилитров"}\r
+                        many{"{0} миллилитров"}\r
+                        one{"{0} миллилитра"}\r
+                        other{"{0} миллилитра"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} миллилитрами"}\r
+                        many{"{0} миллилитрами"}\r
+                        one{"{0} миллилитром"}\r
+                        other{"{0} миллилитра"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} миллилитрах"}\r
+                        many{"{0} миллилитрах"}\r
+                        one{"{0} миллилитре"}\r
+                        other{"{0} миллилитра"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} миллилитрах"}\r
+                        many{"{0} миллилитрах"}\r
+                        one{"{0} миллилитре"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} миллилитра"}\r
+                        many{"{0} миллилитров"}\r
+                        one{"{0} миллилитр"}\r
+                        other{"{0} миллилитра"}\r
+                    }\r
+                }\r
                 dnam{"миллилитры"}\r
                 few{"{0} миллилитра"}\r
+                gender{"masculine"}\r
                 many{"{0} миллилитров"}\r
                 one{"{0} миллилитр"}\r
                 other{"{0} миллилитра"}\r
             }\r
             pinch{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} щепотки"}\r
+                        many{"{0} щепоток"}\r
+                        one{"{0} щепотку"}\r
+                        other{"{0} щепотки"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} щепоткам"}\r
+                        many{"{0} щепоткам"}\r
+                        one{"{0} щепотке"}\r
+                        other{"{0} щепотки"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} щепоток"}\r
+                        many{"{0} щепоток"}\r
+                        one{"{0} щепотки"}\r
+                        other{"{0} щепотки"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} щепотками"}\r
+                        many{"{0} щепотками"}\r
+                        one{"{0} щепоткой"}\r
+                        other{"{0} щепотки"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} щепотках"}\r
+                        many{"{0} щепотках"}\r
+                        one{"{0} щепотке"}\r
+                        other{"{0} щепотки"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} щепотках"}\r
+                        many{"{0} щепотках"}\r
+                        one{"{0} щепотке"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} щепотки"}\r
+                        many{"{0} щепот."}\r
+                        one{"{0} щепотка"}\r
+                        other{"{0} щепотки"}\r
+                    }\r
+                }\r
                 dnam{"щепотка"}\r
                 few{"{0} щепотки"}\r
+                gender{"feminine"}\r
                 many{"{0} щепот."}\r
                 one{"{0} щепотка"}\r
                 other{"{0} щепотки"}\r
             }\r
             pint{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} амер. пинты"}\r
+                        many{"{0} амер. пинт"}\r
+                        one{"{0} амер. пинту"}\r
+                        other{"{0} амер. пинты"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} амер. пинтам"}\r
+                        many{"{0} амер. пинтам"}\r
+                        one{"{0} амер. пинте"}\r
+                        other{"{0} амер. пинты"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} амер. пинт"}\r
+                        many{"{0} амер. пинт"}\r
+                        one{"{0} амер. пинты"}\r
+                        other{"{0} амер. пинты"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} амер. пинтами"}\r
+                        many{"{0} амер. пинтами"}\r
+                        one{"{0} амер. пинтой"}\r
+                        other{"{0} амер. пинты"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} амер. пинтах"}\r
+                        many{"{0} амер. пинтах"}\r
+                        one{"{0} амер. пинте"}\r
+                        other{"{0} амер. пинты"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} амер. пинтах"}\r
+                        many{"{0} амер. пинтах"}\r
+                        one{"{0} амер. пинте"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} амер. пинты"}\r
+                        many{"{0} амер. пинт"}\r
+                        one{"{0} амер. пинта"}\r
+                        other{"{0} амер. пинты"}\r
+                    }\r
+                }\r
                 dnam{"амер. пинты"}\r
                 few{"{0} амер. пинты"}\r
+                gender{"feminine"}\r
                 many{"{0} амер. пинт"}\r
                 one{"{0} амер. пинта"}\r
                 other{"{0} амер. пинты"}\r
@@ -1317,29 +4849,205 @@ ru{
                 other{"{0} метрической пинты"}\r
             }\r
             quart{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} амер. кварты"}\r
+                        many{"{0} амер. кварт"}\r
+                        one{"{0} амер. кварту"}\r
+                        other{"{0} амер. кварты"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} амер. квартам"}\r
+                        many{"{0} амер. квартам"}\r
+                        one{"{0} амер. кварте"}\r
+                        other{"{0} амер. кварты"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} амер. кварт"}\r
+                        many{"{0} амер. кварт"}\r
+                        one{"{0} амер. кварты"}\r
+                        other{"{0} амер. кварты"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} амер. квартами"}\r
+                        many{"{0} амер. квартами"}\r
+                        one{"{0} амер. квартой"}\r
+                        other{"{0} амер. кварты"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} амер. квартах"}\r
+                        many{"{0} амер. квартах"}\r
+                        one{"{0} амер. кварте"}\r
+                        other{"{0} амер. кварты"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} амер. квартах"}\r
+                        many{"{0} амер. квартах"}\r
+                        one{"{0} амер. кварте"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} амер. кварты"}\r
+                        many{"{0} амер. кварт"}\r
+                        one{"{0} амер. кварта"}\r
+                        other{"{0} амер. кварты"}\r
+                    }\r
+                }\r
                 dnam{"амер. кварты"}\r
                 few{"{0} амер. кварты"}\r
+                gender{"feminine"}\r
                 many{"{0} амер. кварт"}\r
                 one{"{0} амер. кварта"}\r
                 other{"{0} амер. кварты"}\r
             }\r
             quart-imperial{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} имп. кварты"}\r
+                        many{"{0} имп. кварт"}\r
+                        one{"{0} имп. кварту"}\r
+                        other{"{0} имп. кварты"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} имп. квартам"}\r
+                        many{"{0} имп. квартам"}\r
+                        one{"{0} имп. кварте"}\r
+                        other{"{0} имп. кварты"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} имп. кварт"}\r
+                        many{"{0} имп. кварт"}\r
+                        one{"{0} имп. кварты"}\r
+                        other{"{0} имп. кварты"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} имп. квартами"}\r
+                        many{"{0} имп. квартами"}\r
+                        one{"{0} имп. квартой"}\r
+                        other{"{0} имп. кварты"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} имп. квартах"}\r
+                        many{"{0} имп. квартах"}\r
+                        one{"{0} имп. кварте"}\r
+                        other{"{0} имп. кварты"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} имп. квартах"}\r
+                        many{"{0} имп. квартах"}\r
+                        one{"{0} имп. кварте"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} имп. кварты"}\r
+                        many{"{0} имп. кварт"}\r
+                        one{"{0} имп. кварта"}\r
+                        other{"{0} имп. кварты"}\r
+                    }\r
+                }\r
                 dnam{"имп. кварта"}\r
                 few{"{0} имп. кварты"}\r
+                gender{"feminine"}\r
                 many{"{0} имп. кварт"}\r
                 one{"{0} имп. кварта"}\r
                 other{"{0} имп. кварты"}\r
             }\r
             tablespoon{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} столовые ложки"}\r
+                        many{"{0} столовых ложек"}\r
+                        one{"{0} столовую ложку"}\r
+                        other{"{0} столовой ложки"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} столовым ложкам"}\r
+                        many{"{0} столовым ложкам"}\r
+                        one{"{0} столовой ложке"}\r
+                        other{"{0} столовой ложки"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} столовых ложек"}\r
+                        many{"{0} столовых ложек"}\r
+                        one{"{0} столовой ложки"}\r
+                        other{"{0} столовой ложки"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} столовыми ложками"}\r
+                        many{"{0} столовыми ложками"}\r
+                        one{"{0} столовой ложкой"}\r
+                        other{"{0} столовой ложки"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} столовых ложках"}\r
+                        many{"{0} столовых ложках"}\r
+                        one{"{0} столовой ложке"}\r
+                        other{"{0} столовой ложки"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} столовых ложках"}\r
+                        many{"{0} столовых ложках"}\r
+                        one{"{0} столовой ложке"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} столовые ложки"}\r
+                        many{"{0} столовых ложек"}\r
+                        one{"{0} столовая ложка"}\r
+                        other{"{0} столовой ложки"}\r
+                    }\r
+                }\r
                 dnam{"столовые ложки"}\r
                 few{"{0} столовые ложки"}\r
+                gender{"feminine"}\r
                 many{"{0} столовых ложек"}\r
                 one{"{0} столовая ложка"}\r
                 other{"{0} столовой ложки"}\r
             }\r
             teaspoon{\r
+                case{\r
+                    accusative{\r
+                        few{"{0} чайные ложки"}\r
+                        many{"{0} чайных ложек"}\r
+                        one{"{0} чайную ложку"}\r
+                        other{"{0} чайной ложки"}\r
+                    }\r
+                    dative{\r
+                        few{"{0} чайным ложкам"}\r
+                        many{"{0} чайным ложкам"}\r
+                        one{"{0} чайной ложке"}\r
+                        other{"{0} чайной ложки"}\r
+                    }\r
+                    genitive{\r
+                        few{"{0} чайных ложек"}\r
+                        many{"{0} чайных ложек"}\r
+                        one{"{0} чайной ложки"}\r
+                        other{"{0} чайной ложки"}\r
+                    }\r
+                    instrumental{\r
+                        few{"{0} чайными ложками"}\r
+                        many{"{0} чайными ложками"}\r
+                        one{"{0} чайной ложкой"}\r
+                        other{"{0} чайной ложки"}\r
+                    }\r
+                    locative{\r
+                        few{"{0} чайных ложках"}\r
+                        many{"{0} чайных ложках"}\r
+                        one{"{0} чайной ложке"}\r
+                        other{"{0} чайной ложки"}\r
+                    }\r
+                    prepositional{\r
+                        few{"{0} чайных ложках"}\r
+                        many{"{0} чайных ложках"}\r
+                        one{"{0} чайной ложке"}\r
+                    }\r
+                    vocative{\r
+                        few{"{0} чайные ложки"}\r
+                        many{"{0} чайных ложек"}\r
+                        one{"{0} чайная ложка"}\r
+                        other{"{0} чайной ложки"}\r
+                    }\r
+                }\r
                 dnam{"чайные ложки"}\r
                 few{"{0} чайные ложки"}\r
+                gender{"feminine"}\r
                 many{"{0} чайных ложек"}\r
                 one{"{0} чайная ложка"}\r
                 other{"{0} чайной ложки"}\r
@@ -1422,7 +5130,57 @@ ru{
             }\r
         }\r
         compound{\r
+            1024p1{"Ки{0}"}\r
+            1024p2{"Ми{0}"}\r
+            1024p3{"Ги{0}"}\r
+            1024p4{"Ти{0}"}\r
+            1024p5{"Пи{0}"}\r
+            1024p6{"Эи{0}"}\r
+            1024p7{"Зи{0}"}\r
+            1024p8{"Йи{0}"}\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"а{0}"}\r
+            10p-2{"с{0}"}\r
+            10p-21{"з{0}"}\r
+            10p-24{"и{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-6{"мк{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"да{0}"}\r
+            10p12{"Т{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"Э{0}"}\r
+            10p2{"г{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"И{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"М{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -2036,7 +5794,57 @@ ru{
             }\r
         }\r
         compound{\r
+            1024p1{"Ки{0}"}\r
+            1024p2{"Ми{0}"}\r
+            1024p3{"Ги{0}"}\r
+            1024p4{"Ти{0}"}\r
+            1024p5{"Пи{0}"}\r
+            1024p6{"Эи{0}"}\r
+            1024p7{"Зи{0}"}\r
+            1024p8{"Йи{0}"}\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"а{0}"}\r
+            10p-2{"с{0}"}\r
+            10p-21{"з{0}"}\r
+            10p-24{"и{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-6{"мк{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"да{0}"}\r
+            10p12{"Т{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"Э{0}"}\r
+            10p2{"г{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"И{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"М{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"куб. {0}"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"куб. {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"куб. {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"куб. {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -2046,7 +5854,7 @@ ru{
                 one{"{0} кар"}\r
                 other{"{0} кар"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"мг/дл"}\r
                 few{"{0} мг/дл"}\r
                 many{"{0} мг/дл"}\r
index 5962685..d08bb54 100644 (file)
@@ -105,7 +105,58 @@ sd{
             }\r
         }\r
         compound{\r
+            1024p1{"ڪبي{0}"}\r
+            1024p2{"ميبي{0}"}\r
+            1024p3{"جيبي{0}"}\r
+            1024p4{"ٽيبي{0}"}\r
+            1024p5{"پيبي{0}"}\r
+            1024p6{"اڪسبي{0}"}\r
+            1024p7{"زيبي{0}"}\r
+            1024p8{"يوب{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"سينٽي{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} في {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"اسڪوائر {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"اسڪوائر {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"cubic {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ڪيوبڪ{0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -114,7 +165,7 @@ sd{
                 one{"{0} قيراط"}\r
                 other{"{0} قيراط"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ملي گرامز في ڊيسي ليٽر"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} ملي گرامز في ڊيسي ليٽر"}\r
@@ -919,7 +970,38 @@ sd{
     }\r
     unitsNarrow{\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1151,7 +1233,50 @@ sd{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1160,7 +1285,7 @@ sd{
                 one{"{0} قيراط"}\r
                 other{"{0} قيراط"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ملي گرامز في ڊيسي ليٽر"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1605,8 +1730,8 @@ sd{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 one{"{0} mg"}\r
index a61c78d..3582668 100644 (file)
@@ -105,7 +105,59 @@ si{
             }\r
         }\r
         compound{\r
+            1024p1{"කිබි{0}"}\r
+            1024p2{"මෙබි{0}"}\r
+            1024p3{"ගිබි{0}"}\r
+            1024p4{"ටෙබි{0}"}\r
+            1024p5{"පෙබි{0}"}\r
+            1024p6{"එක්ස්බි{0}"}\r
+            1024p7{"සෙබි{0}"}\r
+            1024p8{"යොබේ{0}"}\r
+            10p-1{"ඩෙසි{0}"}\r
+            10p-12{"පිකෝ{0}"}\r
+            10p-15{"ෆෙම්ටෝ{0}"}\r
+            10p-18{"ඇටෝ{0}"}\r
+            10p-2{"සෙන්ටි{0}"}\r
+            10p-21{"සෙප්ටෝ{0}"}\r
+            10p-24{"යොක්ටෝ{0}"}\r
+            10p-3{"මිලි{0}"}\r
+            10p-6{"මයික්‍රො{0}"}\r
+            10p-9{"නැනෝ{0}"}\r
+            10p1{"ඩෙකා{0}"}\r
+            10p12{"ටෙරා{0}"}\r
+            10p15{"පෙටා{0}"}\r
+            10p18{"එක්සා{0}"}\r
+            10p2{"හෙක්ටෝ{0}"}\r
+            10p21{"සෙටා{0}"}\r
+            10p24{"යොටා{0}"}\r
+            10p3{"කිලෝ{0}"}\r
+            10p6{"මෙගා{0}"}\r
+            10p9{"ගිගා{0}"}\r
             per{"{1} ට {0} බැගින්"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"වර්ග {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"වර්ග {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"ඝන {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"ඝන {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ si{
                 one{"ක්‍රාත් {0}"}\r
                 other{"ක්‍රාත් {0}"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ඩෙසිලීටරයකට මිලිග්‍රෑම්"}\r
                 one{"ඩෙසිලීටරයකට මිලිග්‍රෑම් {0}"}\r
                 other{"ඩෙසිලීටරයකට මිලිග්‍රෑම් {0}"}\r
@@ -1033,6 +1085,34 @@ si{
             }\r
         }\r
         compound{\r
+            1024p1{"කි{0}"}\r
+            1024p2{"මි{0}"}\r
+            1024p3{"ගි{0}"}\r
+            1024p4{"ටි{0}"}\r
+            1024p5{"පි{0}"}\r
+            1024p6{"එයි{0}"}\r
+            1024p7{"සි{0}"}\r
+            1024p8{"යි{0}"}\r
+            10p-1{"ඩෙ{0}"}\r
+            10p-12{"පි{0}"}\r
+            10p-15{"ෆෙ{0}"}\r
+            10p-18{"ඇ{0}"}\r
+            10p-2{"සෙ{0}"}\r
+            10p-21{"සෙ{0}"}\r
+            10p-24{"යො{0}"}\r
+            10p-3{"මි{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"නැ{0}"}\r
+            10p1{"ඩෙ{0}"}\r
+            10p12{"ටෙ{0}"}\r
+            10p15{"පෙ{0}"}\r
+            10p18{"එ{0}"}\r
+            10p2{"හෙ{0}"}\r
+            10p21{"සෙ{0}"}\r
+            10p24{"යො{0}"}\r
+            10p3{"කි{0}"}\r
+            10p6{"මෙ{0}"}\r
+            10p9{"ගි{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1332,6 +1412,34 @@ si{
             }\r
         }\r
         compound{\r
+            1024p1{"කි{0}"}\r
+            1024p2{"මෙබි{0}"}\r
+            1024p3{"ගි{0}"}\r
+            1024p4{"ටි{0}"}\r
+            1024p5{"පෙබි{0}"}\r
+            1024p6{"එයි{0}"}\r
+            1024p7{"සි{0}"}\r
+            1024p8{"යි{0}"}\r
+            10p-1{"ඩෙස{0}"}\r
+            10p-12{"පි{0}"}\r
+            10p-15{"ෆෙ{0}"}\r
+            10p-18{"ඇ{0}"}\r
+            10p-2{"සෙන්{0}"}\r
+            10p-21{"සෙප්{0}"}\r
+            10p-24{"යො{0}"}\r
+            10p-3{"මි{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"නැ{0}"}\r
+            10p1{"ඩෙක{0}"}\r
+            10p12{"ටෙ{0}"}\r
+            10p15{"පෙ{0}"}\r
+            10p18{"එ{0}"}\r
+            10p2{"හෙ{0}"}\r
+            10p21{"සෙට{0}"}\r
+            10p24{"යොට{0}"}\r
+            10p3{"ක{0}"}\r
+            10p6{"මෙ{0}"}\r
+            10p9{"ගිගා{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1341,7 +1449,7 @@ si{
                 one{"ක්‍රාත් {0}"}\r
                 other{"ක්‍රාත් {0}"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"මිග්‍රෑ/ඩෙලි"}\r
                 one{"{0} මිග්‍රෑ/ඩෙලි"}\r
                 other{"{0} මිග්‍රෑ/ඩෙලි"}\r
@@ -1643,12 +1751,12 @@ si{
             }\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                one{"{0} dpcm"}\r
+                one{"{0} ppcm"}\r
                 other{"{0} dpcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                one{"{0} dpi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
             }\r
             em{\r
index cc8af5d..4ece2ca 100644 (file)
@@ -139,7 +139,79 @@ sk{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"štvorcové {0}"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"štvorcového {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"štvorcový {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"štvorcových {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"kubické {0}"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"kubického {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"kubický {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubických {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}{1}"}\r
         }\r
         concentr{\r
@@ -150,7 +222,7 @@ sk{
                 one{"{0} karát"}\r
                 other{"{0} karátov"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramy na deciliter"}\r
                 few{"{0} miligramy na deciliter"}\r
                 many{"{0} miligramu na deciliter"}\r
@@ -1434,6 +1506,15 @@ sk{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p18{"E{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}{1}"}\r
         }\r
@@ -1643,11 +1724,11 @@ sk{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                many{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                many{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1753,11 +1834,11 @@ sk{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                many{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                many{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -2195,6 +2276,15 @@ sk{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p18{"E{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}{1}"}\r
         }\r
@@ -2206,7 +2296,7 @@ sk{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 few{"{0} mg/dl"}\r
                 many{"{0} mg/dl"}\r
@@ -2623,9 +2713,9 @@ sk{
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                few{"{0} dpi"}\r
-                many{"{0} dpi"}\r
-                one{"{0} dpi"}\r
+                few{"{0} ppi"}\r
+                many{"{0} ppi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
             }\r
             em{\r
@@ -2741,11 +2831,11 @@ sk{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                many{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                many{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -2901,11 +2991,11 @@ sk{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                many{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                many{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 8c624b3..8df4d29 100644 (file)
@@ -139,7 +139,79 @@ sl{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"jokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zeta{0}"}\r
+            10p24{"jota{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} na {1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"kvadratni {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"kvadratni {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kvadratnih {0}"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"kvadratna {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"kubični {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"kubični {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubičnih {0}"}\r
+                    }\r
+                }\r
+                two{\r
+                    _{\r
+                        _{"kubična {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -149,7 +221,7 @@ sl{
                 other{"{0} karatov"}\r
                 two{"{0} karata"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligrami na deciliter"}\r
                 few{"{0} miligrami na deciliter"}\r
                 one{"{0} miligram na deciliter"}\r
@@ -1317,6 +1389,21 @@ sl{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1726,6 +1813,13 @@ sl{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1737,7 +1831,7 @@ sl{
                 other{"{0} kt"}\r
                 two{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 few{"{0} mg/dl"}\r
                 one{"{0} mg/dl"}\r
@@ -2147,17 +2241,17 @@ sl{
             }\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                few{"{0} dpcm"}\r
-                one{"{0} dpcm"}\r
+                few{"{0} ppcm"}\r
+                one{"{0} ppcm"}\r
                 other{"{0} dpcm"}\r
-                two{"{0} dpcm"}\r
+                two{"{0} ppcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                few{"{0} dpi"}\r
-                one{"{0} dpi"}\r
+                few{"{0} ppi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
-                two{"{0} dpi"}\r
+                two{"{0} ppi"}\r
             }\r
             em{\r
                 dnam{"em"}\r
@@ -2279,11 +2373,11 @@ sl{
                 two{"{0} m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
-                two{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
+                two{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -2425,11 +2519,11 @@ sl{
                 two{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
-                two{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
+                two{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 9f8dd36..fb5ebfb 100644 (file)
@@ -99,13 +99,46 @@ so{
                 other{"{0} yaardi jibaaran"}\r
             }\r
         }\r
+        compound{\r
+            1024p8{"dheer{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"laba-jibaar {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"laba-jibaar {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"saddex-jibaar {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"saddex-jibaar {0}"}\r
+                    }\r
+                }\r
+            }\r
+        }\r
         concentr{\r
             karat{\r
                 dnam{"karaatis"}\r
                 one{"{0} karaat"}\r
                 other{"{0} karaat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligaraam disilitirkiiba"}\r
                 one{"{0} miligaraam disilitirkiiba"}\r
                 other{"{0} miligaraam disilitirkiiba"}\r
@@ -1294,7 +1327,7 @@ so{
                 dnam{"m"}\r
             }\r
             micrometer{\r
-                dnam{"µmitir"}\r
+                dnam{"μmitir"}\r
             }\r
             mile{\r
                 dnam{"meyl"}\r
index 721c8a9..8cbd9a6 100644 (file)
@@ -105,7 +105,59 @@ sq{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"jobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"josto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"ekza{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zeta{0}"}\r
+            10p24{"jota{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} në {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} katror"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} katror"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} kub"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} kub"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ sq{
                 one{"{0} karat"}\r
                 other{"{0} karatë"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramë për decilitër"}\r
                 one{"{0} miligram për decilitër"}\r
                 other{"{0} miligramë për decilitër"}\r
@@ -1312,7 +1364,7 @@ sq{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1624,9 +1676,9 @@ sq{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1705,9 +1757,9 @@ sq{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 65c269d..18655a6 100644 (file)
@@ -122,7 +122,69 @@ sr{
             }\r
         }\r
         compound{\r
+            1024p1{"киби{0}"}\r
+            1024p2{"меби{0}"}\r
+            1024p3{"гиби{0}"}\r
+            1024p4{"теби{0}"}\r
+            1024p5{"пеби{0}"}\r
+            1024p6{"ексби{0}"}\r
+            1024p7{"зеби{0}"}\r
+            1024p8{"јобе{0}"}\r
+            10p-1{"деци{0}"}\r
+            10p-12{"пико{0}"}\r
+            10p-15{"фемто{0}"}\r
+            10p-18{"ато{0}"}\r
+            10p-2{"центи{0}"}\r
+            10p-21{"зепто{0}"}\r
+            10p-24{"јокто{0}"}\r
+            10p-3{"мили{0}"}\r
+            10p-6{"микро{0}"}\r
+            10p-9{"нано{0}"}\r
+            10p1{"дека{0}"}\r
+            10p12{"тера{0}"}\r
+            10p15{"пета{0}"}\r
+            10p18{"екса{0}"}\r
+            10p2{"хекто{0}"}\r
+            10p21{"зета{0}"}\r
+            10p24{"јота{0}"}\r
+            10p3{"кило{0}"}\r
+            10p6{"мега{0}"}\r
+            10p9{"гига{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"квадратна {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"квадратни {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"квадратних {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"кубна {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"кубни {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"кубних {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -132,7 +194,7 @@ sr{
                 one{"{0} карат"}\r
                 other{"{0} карата"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"милиграми по децилитру"}\r
                 few{"{0} милиграма по децилитру"}\r
                 one{"{0} милиграм по децилитру"}\r
@@ -1170,6 +1232,23 @@ sr{
         }\r
         compound{\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1526,6 +1605,23 @@ sr{
         }\r
         compound{\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1535,7 +1631,7 @@ sr{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 few{"{0} mg/dL"}\r
                 one{"{0} mg/dL"}\r
@@ -1864,14 +1960,14 @@ sr{
             }\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                few{"{0} dpcm"}\r
-                one{"{0} dpcm"}\r
+                few{"{0} ppcm"}\r
+                one{"{0} ppcm"}\r
                 other{"{0} dpcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                few{"{0} dpi"}\r
-                one{"{0} dpi"}\r
+                few{"{0} ppi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
             }\r
             em{\r
@@ -1978,10 +2074,10 @@ sr{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"миље"}\r
@@ -2077,10 +2173,10 @@ sr{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index a05ab8a..0624088 100644 (file)
@@ -3,6 +3,9 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 sr_Cyrl_BA{\r
     units{\r
+        compound{\r
+            1024p8{"јоби{0}"}\r
+        }\r
         duration{\r
             century{\r
                 dnam{"вијекови"}\r
index 846ef38..950784c 100644 (file)
@@ -123,7 +123,69 @@ sr_Latn{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"jobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"jokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zeta{0}"}\r
+            10p24{"jota{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"kvadratna {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"kvadratni {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kvadratnih {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"kubna {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"kubni {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubnih {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -133,7 +195,7 @@ sr_Latn{
                 one{"{0} karat"}\r
                 other{"{0} karata"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligrami po decilitru"}\r
                 few{"{0} miligrama po decilitru"}\r
                 one{"{0} miligram po decilitru"}\r
@@ -1169,6 +1231,18 @@ sr_Latn{
         }\r
         compound{\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1251,24 +1325,12 @@ sr_Latn{
                 one{"{0} cm"}\r
                 other{"{0} cm"}\r
             }\r
-            fathom{\r
-                dnam{"hv"}\r
-                few{"{0} fth"}\r
-                one{"{0} fth"}\r
-                other{"{0} fth"}\r
-            }\r
             foot{\r
                 dnam{"ft"}\r
                 few{"{0} ft"}\r
                 one{"{0} ft"}\r
                 other{"{0} ft"}\r
             }\r
-            furlong{\r
-                dnam{"furlonzi"}\r
-                few{"{0} fur"}\r
-                one{"{0} fur"}\r
-                other{"{0} fur"}\r
-            }\r
             inch{\r
                 few{"{0} inča"}\r
                 one{"{0} inč"}\r
@@ -1537,6 +1599,23 @@ sr_Latn{
         }\r
         compound{\r
             per{"{0}/{1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1546,7 +1625,7 @@ sr_Latn{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 few{"{0} mg/dL"}\r
                 one{"{0} mg/dL"}\r
@@ -1932,7 +2011,6 @@ sr_Latn{
                 dnam{"hv"}\r
                 few{"{0} fth"}\r
                 one{"{0} fth"}\r
-                other{"{0} fth"}\r
             }\r
             foot{\r
                 dnam{"ft"}\r
@@ -1944,8 +2022,6 @@ sr_Latn{
             furlong{\r
                 dnam{"furlonzi"}\r
                 few{"{0} fur"}\r
-                one{"{0} fur"}\r
-                other{"{0} fur"}\r
             }\r
             inch{\r
                 dnam{"inči"}\r
@@ -1975,10 +2051,10 @@ sr_Latn{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                few{"{0} µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                few{"{0} μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"milje"}\r
@@ -2074,10 +2150,10 @@ sr_Latn{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                few{"{0} µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                few{"{0} μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index ab6ae1c..6b46748 100644 (file)
@@ -3,6 +3,9 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 sr_Latn_BA{\r
     units{\r
+        compound{\r
+            1024p8{"jobi{0}"}\r
+        }\r
         duration{\r
             century{\r
                 dnam{"vijekovi"}\r
index 58adf52..ae79d75 100644 (file)
@@ -11,11 +11,13 @@ sv{
         acceleration{\r
             g-force{\r
                 dnam{"g-kraft"}\r
+                gender{"common"}\r
                 one{"{0} g-kraft"}\r
                 other{"{0} g-kraft"}\r
             }\r
             meter-per-square-second{\r
                 dnam{"meter per kvadratsekund"}\r
+                gender{"common"}\r
                 one{"{0} meter per kvadratsekund"}\r
                 other{"{0} meter per kvadratsekund"}\r
             }\r
@@ -50,6 +52,7 @@ sv{
         area{\r
             acre{\r
                 dnam{"engelska tunnland"}\r
+                gender{"neuter"}\r
                 one{"{0} engelskt tunnland"}\r
                 other{"{0} engelska tunnland"}\r
             }\r
@@ -60,17 +63,20 @@ sv{
             }\r
             hectare{\r
                 dnam{"hektar"}\r
+                gender{"common"}\r
                 one{"{0} hektar"}\r
                 other{"{0} hektar"}\r
             }\r
             square-centimeter{\r
                 dnam{"kvadratcentimeter"}\r
+                gender{"common"}\r
                 one{"{0} kvadratcentimeter"}\r
                 other{"{0} kvadratcentimeter"}\r
                 per{"{0} per kvadratcentimeter"}\r
             }\r
             square-foot{\r
                 dnam{"kvadratfot"}\r
+                gender{"common"}\r
                 one{"{0} kvadratfot"}\r
                 other{"{0} kvadratfot"}\r
             }\r
@@ -82,6 +88,7 @@ sv{
             }\r
             square-kilometer{\r
                 dnam{"kvadratkilometer"}\r
+                gender{"common"}\r
                 one{"{0} kvadratkilometer"}\r
                 other{"{0} kvadratkilometer"}\r
                 per{"{0} per kvadratkilometer"}\r
@@ -94,6 +101,7 @@ sv{
             }\r
             square-mile{\r
                 dnam{"engelska kvadratmil"}\r
+                gender{"common"}\r
                 one{"{0} engelsk kvadratmil"}\r
                 other{"{0} engelska kvadratmil"}\r
                 per{"{0} per engelsk kvadratmil"}\r
@@ -105,7 +113,71 @@ sv{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"deci{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} per {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                    common{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                    common{\r
+                        _{"kvadrat{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                    common{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                    common{\r
+                        _{"kubik{0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}-{1}"}\r
         }\r
         concentr{\r
@@ -114,7 +186,7 @@ sv{
                 one{"{0} karat"}\r
                 other{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligram per deciliter"}\r
                 one{"{0} milligram per deciliter"}\r
                 other{"{0} milligram per deciliter"}\r
@@ -126,6 +198,7 @@ sv{
             }\r
             percent{\r
                 dnam{"procent"}\r
+                gender{"common"}\r
                 one{"{0} procent"}\r
                 other{"{0} procent"}\r
             }\r
@@ -148,6 +221,7 @@ sv{
         consumption{\r
             liter-per-100-kilometer{\r
                 dnam{"liter per 100 kilometer"}\r
+                gender{"common"}\r
                 one{"{0} liter per 100 kilometer"}\r
                 other{"{0} liter per 100 kilometer"}\r
             }\r
@@ -158,11 +232,13 @@ sv{
             }\r
             mile-per-gallon{\r
                 dnam{"miles per gallon"}\r
+                gender{"common"}\r
                 one{"{0} mile per gallon"}\r
                 other{"{0} miles per gallon"}\r
             }\r
             mile-per-gallon-imperial{\r
                 dnam{"UK mpg"}\r
+                gender{"common"}\r
                 one{"{0} UK mil/gn"}\r
                 other{"{0} UK mil/gn"}\r
             }\r
@@ -239,6 +315,7 @@ sv{
             }\r
             day{\r
                 dnam{"dygn"}\r
+                gender{"common"}\r
                 one{"{0} dygn"}\r
                 other{"{0} dygn"}\r
                 per{"{0} per dygn"}\r
@@ -250,6 +327,7 @@ sv{
             }\r
             hour{\r
                 dnam{"timmar"}\r
+                gender{"common"}\r
                 one{"{0} timme"}\r
                 other{"{0} timmar"}\r
                 per{"{0} per timme"}\r
@@ -266,12 +344,14 @@ sv{
             }\r
             minute{\r
                 dnam{"minuter"}\r
+                gender{"common"}\r
                 one{"{0} minut"}\r
                 other{"{0} minuter"}\r
                 per{"{0} per minut"}\r
             }\r
             month{\r
                 dnam{"månader"}\r
+                gender{"common"}\r
                 one{"{0} månad"}\r
                 other{"{0} månader"}\r
                 per{"{0} per månad"}\r
@@ -283,18 +363,21 @@ sv{
             }\r
             second{\r
                 dnam{"sekunder"}\r
+                gender{"common"}\r
                 one{"{0} sekund"}\r
                 other{"{0} sekunder"}\r
                 per{"{0} per sekund"}\r
             }\r
             week{\r
                 dnam{"veckor"}\r
+                gender{"common"}\r
                 one{"{0} vecka"}\r
                 other{"{0} veckor"}\r
                 per{"{0} per vecka"}\r
             }\r
             year{\r
                 dnam{"år"}\r
+                gender{"neuter"}\r
                 one{"{0} år"}\r
                 other{"{0} år"}\r
                 per{"{0} per år"}\r
@@ -340,6 +423,7 @@ sv{
             }\r
             foodcalorie{\r
                 dnam{"kilokalorier"}\r
+                gender{"common"}\r
                 one{"{0} kilokalori"}\r
                 other{"{0} kilokalorier"}\r
             }\r
@@ -350,6 +434,7 @@ sv{
             }\r
             kilocalorie{\r
                 dnam{"kilokalorier"}\r
+                gender{"common"}\r
                 one{"{0} kilokalori"}\r
                 other{"{0} kilokalorier"}\r
             }\r
@@ -448,12 +533,14 @@ sv{
             }\r
             centimeter{\r
                 dnam{"centimeter"}\r
+                gender{"common"}\r
                 one{"{0} centimeter"}\r
                 other{"{0} centimeter"}\r
                 per{"{0} per centimeter"}\r
             }\r
             decimeter{\r
                 dnam{"decimeter"}\r
+                gender{"common"}\r
                 one{"{0} decimeter"}\r
                 other{"{0} decimeter"}\r
             }\r
@@ -469,6 +556,7 @@ sv{
             }\r
             foot{\r
                 dnam{"fot"}\r
+                gender{"common"}\r
                 one{"{0} fot"}\r
                 other{"{0} fot"}\r
                 per{"{0} per fot"}\r
@@ -480,12 +568,14 @@ sv{
             }\r
             inch{\r
                 dnam{"tum"}\r
+                gender{"common"}\r
                 one{"{0} tum"}\r
                 other{"{0} tum"}\r
                 per{"{0} per tum"}\r
             }\r
             kilometer{\r
                 dnam{"kilometer"}\r
+                gender{"common"}\r
                 one{"{0} kilometer"}\r
                 other{"{0} kilometer"}\r
                 per{"{0} per kilometer"}\r
@@ -497,6 +587,7 @@ sv{
             }\r
             meter{\r
                 dnam{"meter"}\r
+                gender{"common"}\r
                 one{"{0} meter"}\r
                 other{"{0} meter"}\r
                 per{"{0} per meter"}\r
@@ -508,16 +599,19 @@ sv{
             }\r
             mile{\r
                 dnam{"engelska mil"}\r
+                gender{"common"}\r
                 one{"{0} engelsk mil"}\r
                 other{"{0} engelska mil"}\r
             }\r
             mile-scandinavian{\r
                 dnam{"mil"}\r
+                gender{"common"}\r
                 one{"{0} mil"}\r
                 other{"{0} mil"}\r
             }\r
             millimeter{\r
                 dnam{"millimeter"}\r
+                gender{"common"}\r
                 one{"{0} millimeter"}\r
                 other{"{0} millimeter"}\r
             }\r
@@ -533,11 +627,13 @@ sv{
             }\r
             parsec{\r
                 dnam{"parsec"}\r
+                gender{"common"}\r
                 one{"{0} parsec"}\r
                 other{"{0} parsec"}\r
             }\r
             picometer{\r
                 dnam{"pikometer"}\r
+                gender{"common"}\r
                 one{"{0} pikometer"}\r
                 other{"{0} pikometer"}\r
             }\r
@@ -548,11 +644,13 @@ sv{
             }\r
             solar-radius{\r
                 dnam{"solradier"}\r
+                gender{"common"}\r
                 one{"{0} solradie"}\r
                 other{"{0} solradier"}\r
             }\r
             yard{\r
                 dnam{"engelska yard"}\r
+                gender{"common"}\r
                 one{"{0} engelsk yard"}\r
                 other{"{0} engelska yard"}\r
             }\r
@@ -575,6 +673,7 @@ sv{
             }\r
             solar-luminosity{\r
                 dnam{"solluminositeter"}\r
+                gender{"common"}\r
                 one{"{0} solluminositet"}\r
                 other{"{0} solluminositeter"}\r
             }\r
@@ -587,26 +686,31 @@ sv{
             }\r
             dalton{\r
                 dnam{"dalton"}\r
+                gender{"common"}\r
                 one{"{0} dalton"}\r
                 other{"{0} dalton"}\r
             }\r
             earth-mass{\r
                 dnam{"jordmassor"}\r
+                gender{"common"}\r
                 one{"{0} jordmassa"}\r
                 other{"{0} jordmassor"}\r
             }\r
             grain{\r
+                gender{"common"}\r
                 one{"{0} grain"}\r
                 other{"{0} grains"}\r
             }\r
             gram{\r
                 dnam{"gram"}\r
+                gender{"neuter"}\r
                 one{"{0} gram"}\r
                 other{"{0} gram"}\r
                 per{"{0} per gram"}\r
             }\r
             kilogram{\r
                 dnam{"kilogram"}\r
+                gender{"neuter"}\r
                 one{"{0} kilogram"}\r
                 other{"{0} kilogram"}\r
                 per{"{0} per kilogram"}\r
@@ -623,11 +727,13 @@ sv{
             }\r
             milligram{\r
                 dnam{"milligram"}\r
+                gender{"neuter"}\r
                 one{"{0} milligram"}\r
                 other{"{0} milligram"}\r
             }\r
             ounce{\r
                 dnam{"uns"}\r
+                gender{"common"}\r
                 one{"{0} uns"}\r
                 other{"{0} uns"}\r
                 per{"{0} per uns"}\r
@@ -639,12 +745,14 @@ sv{
             }\r
             pound{\r
                 dnam{"pund"}\r
+                gender{"neuter"}\r
                 one{"{0} pund"}\r
                 other{"{0} pund"}\r
                 per{"{0} per pund"}\r
             }\r
             solar-mass{\r
                 dnam{"solmassor"}\r
+                gender{"common"}\r
                 one{"{0} solmassa"}\r
                 other{"{0} solmassor"}\r
             }\r
@@ -709,6 +817,7 @@ sv{
             }\r
             kilopascal{\r
                 dnam{"kilopascal"}\r
+                gender{"common"}\r
                 one{"{0} kilopascal"}\r
                 other{"{0} kilopascal"}\r
             }\r
@@ -741,6 +850,7 @@ sv{
         speed{\r
             kilometer-per-hour{\r
                 dnam{"kilometer per timme"}\r
+                gender{"common"}\r
                 one{"{0} kilometer per timme"}\r
                 other{"{0} kilometer per timme"}\r
             }\r
@@ -751,11 +861,13 @@ sv{
             }\r
             meter-per-second{\r
                 dnam{"meter per sekund"}\r
+                gender{"common"}\r
                 one{"{0} meter per sekund"}\r
                 other{"{0} meter per sekund"}\r
             }\r
             mile-per-hour{\r
                 dnam{"engelska mil per timme"}\r
+                gender{"common"}\r
                 one{"{0} engelsk mil per timme"}\r
                 other{"{0} engelska mil per timme"}\r
             }\r
@@ -763,21 +875,25 @@ sv{
         temperature{\r
             celsius{\r
                 dnam{"grader Celsius"}\r
+                gender{"common"}\r
                 one{"{0} grad Celsius"}\r
                 other{"{0} grader Celsius"}\r
             }\r
             fahrenheit{\r
                 dnam{"grader Fahrenheit"}\r
+                gender{"common"}\r
                 one{"{0} grad Fahrenheit"}\r
                 other{"{0} grader Fahrenheit"}\r
             }\r
             generic{\r
                 dnam{"grader"}\r
+                gender{"common"}\r
                 one{"{0}°"}\r
                 other{"{0}°"}\r
             }\r
             kelvin{\r
                 dnam{"kelvin"}\r
+                gender{"common"}\r
                 one{"{0} kelvin"}\r
                 other{"{0} kelvin"}\r
             }\r
@@ -810,17 +926,20 @@ sv{
             }\r
             centiliter{\r
                 dnam{"centiliter"}\r
+                gender{"common"}\r
                 one{"{0} centiliter"}\r
                 other{"{0} centiliter"}\r
             }\r
             cubic-centimeter{\r
                 dnam{"kubikcentimeter"}\r
+                gender{"common"}\r
                 one{"{0} kubikcentimeter"}\r
                 other{"{0} kubikcentimeter"}\r
                 per{"{0} per kubikcentimeter"}\r
             }\r
             cubic-foot{\r
                 dnam{"kubikfot"}\r
+                gender{"common"}\r
                 one{"{0} kubikfot"}\r
                 other{"{0} kubikfot"}\r
             }\r
@@ -842,6 +961,7 @@ sv{
             }\r
             cubic-mile{\r
                 dnam{"engelska kubikmil"}\r
+                gender{"common"}\r
                 one{"{0} engelsk kubikmil"}\r
                 other{"{0} engelska kubikmil"}\r
             }\r
@@ -852,6 +972,7 @@ sv{
             }\r
             cup{\r
                 dnam{"koppar"}\r
+                gender{"common"}\r
                 one{"{0} kopp"}\r
                 other{"{0} koppar"}\r
             }\r
@@ -862,41 +983,52 @@ sv{
             }\r
             deciliter{\r
                 dnam{"deciliter"}\r
+                gender{"common"}\r
                 one{"{0} deciliter"}\r
                 other{"{0} deciliter"}\r
             }\r
             dessert-spoon{\r
                 dnam{"dessertsked"}\r
+                gender{"common"}\r
                 one{"{0} dessertsked"}\r
                 other{"{0} dessertsked"}\r
             }\r
             dessert-spoon-imperial{\r
                 dnam{"brittisk dessertsked"}\r
+                gender{"common"}\r
                 one{"{0} brittiska dessertskedar"}\r
                 other{"{0} brittiska dessertskedar"}\r
             }\r
             dram{\r
+                gender{"common"}\r
                 one{"{0} brittisk dram"}\r
                 other{"{0} brittiska dramer"}\r
             }\r
             drop{\r
                 dnam{"droppe"}\r
+                gender{"common"}\r
                 one{"{0} droppe"}\r
                 other{"{0} droppe"}\r
             }\r
             fluid-ounce{\r
                 dnam{"fluid ounces"}\r
+                gender{"common"}\r
                 one{"{0} fluid ounce"}\r
                 other{"{0} fluid ounces"}\r
             }\r
+            fluid-ounce-imperial{\r
+                gender{"neuter"}\r
+            }\r
             gallon{\r
                 dnam{"gallon"}\r
+                gender{"common"}\r
                 one{"{0} gallon"}\r
                 other{"{0} gallon"}\r
                 per{"{0} per gallon"}\r
             }\r
             gallon-imperial{\r
                 dnam{"ämbar à 4,6 l"}\r
+                gender{"neuter"}\r
                 one{"{0} ämbar à 4,6 l"}\r
                 other{"{0} ämbar à 4,6 l"}\r
                 per{"{0} per ämbar à 4,6 l"}\r
@@ -908,11 +1040,13 @@ sv{
             }\r
             jigger{\r
                 dnam{"mätglas"}\r
+                gender{"neuter"}\r
                 one{"{0} mätglas"}\r
                 other{"{0} mätglas"}\r
             }\r
             liter{\r
                 dnam{"liter"}\r
+                gender{"common"}\r
                 one{"{0} liter"}\r
                 other{"{0} liter"}\r
                 per{"{0} per liter"}\r
@@ -924,14 +1058,17 @@ sv{
             }\r
             milliliter{\r
                 dnam{"milliliter"}\r
+                gender{"common"}\r
                 one{"{0} milliliter"}\r
                 other{"{0} milliliter"}\r
             }\r
             pinch{\r
                 dnam{"nypa"}\r
+                gender{"common"}\r
             }\r
             pint{\r
                 dnam{"pint"}\r
+                gender{"common"}\r
                 one{"{0} pint"}\r
                 other{"{0} pint"}\r
             }\r
@@ -942,21 +1079,25 @@ sv{
             }\r
             quart{\r
                 dnam{"quart"}\r
+                gender{"common"}\r
                 one{"{0} quart"}\r
                 other{"{0} quart"}\r
             }\r
             quart-imperial{\r
                 dnam{"br quart"}\r
+                gender{"common"}\r
                 one{"{0} brittisk quart"}\r
                 other{"{0} brittiska quarts"}\r
             }\r
             tablespoon{\r
                 dnam{"matskedar"}\r
+                gender{"common"}\r
                 one{"{0} matsked"}\r
                 other{"{0} matskedar"}\r
             }\r
             teaspoon{\r
                 dnam{"teskedar"}\r
+                gender{"common"}\r
                 one{"{0} tesked"}\r
                 other{"{0} teskedar"}\r
             }\r
@@ -1053,6 +1194,19 @@ sv{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p24{"Y{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1061,7 +1215,7 @@ sv{
                 one{"{0} krt"}\r
                 other{"{0} krt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0}mg/dL"}\r
                 other{"{0}mg/dL"}\r
@@ -1890,6 +2044,16 @@ sv{
             }\r
         }\r
         compound{\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p12{"T{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p24{"Y{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1898,7 +2062,7 @@ sv{
                 one{"{0} kar"}\r
                 other{"{0} kar"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
index e6ff760..0c5bf3f 100644 (file)
@@ -105,7 +105,59 @@ sw{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksibi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekta{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} kwa kila {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} mraba"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} mraba"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} mchemraba"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} mchemraba"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ sw{
                 one{"karati {0}"}\r
                 other{"karati {0}"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligramu kwa kila desilita"}\r
                 one{"miligramu kwa kila desilita"}\r
                 other{"miligramu {0} kwa kila desilita"}\r
@@ -1035,6 +1087,34 @@ sw{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksibi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekta{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1341,6 +1421,34 @@ sw{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksibi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekta{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1349,7 +1457,7 @@ sw{
                 one{"karati {0}"}\r
                 other{"karati {0}"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
index 57c3c76..e3bfa6b 100644 (file)
@@ -105,7 +105,59 @@ ta{
             }\r
         }\r
         compound{\r
+            1024p1{"கிபி{0}"}\r
+            1024p2{"மெபி{0}"}\r
+            1024p3{"ஜிபி{0}"}\r
+            1024p4{"டெபி{0}"}\r
+            1024p5{"பெபி{0}"}\r
+            1024p6{"எக்ஸ்பி{0}"}\r
+            1024p7{"செபி{0}"}\r
+            1024p8{"யோபி{0}"}\r
+            10p-1{"டெசி{0}"}\r
+            10p-12{"பிக்கோ{0}"}\r
+            10p-15{"பெம்டோ{0}"}\r
+            10p-18{"அட்டோ{0}"}\r
+            10p-2{"சென்டி{0}"}\r
+            10p-21{"ஜெப்டோ{0}"}\r
+            10p-24{"யொக்டோ{0}"}\r
+            10p-3{"மில்லி{0}"}\r
+            10p-6{"மைக்ரோ{0}"}\r
+            10p-9{"நானோ{0}"}\r
+            10p1{"டெக்கா{0}"}\r
+            10p12{"டெரா{0}"}\r
+            10p15{"பெட்டா{0}"}\r
+            10p18{"எக்ஸா{0}"}\r
+            10p2{"ஹெக்டா{0}"}\r
+            10p21{"ஜெட்டா{0}"}\r
+            10p24{"யாட்டா{0}"}\r
+            10p3{"கிலோ{0}"}\r
+            10p6{"மெகா{0}"}\r
+            10p9{"ஜிகா{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"சதுர {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"சதுர {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"கன {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"கன {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ ta{
                 one{"{0} காரட்"}\r
                 other{"{0} காரட்கள்"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"மில்லிகிராம்கள்/டெசிலிட்டர்"}\r
                 one{"{0} மில்லிகிராம்/டெசிலிட்டர்"}\r
                 other{"{0} மில்லிகிராம்கள்/டெசிலிட்டர்"}\r
@@ -1035,6 +1087,16 @@ ta{
             }\r
         }\r
         compound{\r
+            1024p1{"கிபி{0}"}\r
+            1024p2{"மெபி{0}"}\r
+            1024p3{"ஜிபி{0}"}\r
+            1024p4{"டெபி{0}"}\r
+            1024p5{"பெபி{0}"}\r
+            1024p6{"ஈ.{0}"}\r
+            1024p7{"சி.{0}"}\r
+            1024p8{"யி.{0}"}\r
+            10p-6{"மைக்ரோ{0}"}\r
+            10p12{"டெரா{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1394,6 +1456,33 @@ ta{
             }\r
         }\r
         compound{\r
+            1024p1{"கிபி{0}"}\r
+            1024p2{"மெபி{0}"}\r
+            1024p3{"ஜிபி{0}"}\r
+            1024p4{"டெபி{0}"}\r
+            1024p5{"பெபி{0}"}\r
+            1024p6{"ஈ.{0}"}\r
+            1024p7{"சி.{0}"}\r
+            1024p8{"யி.{0}"}\r
+            10p-1{"டெ.{0}"}\r
+            10p-12{"பி.{0}"}\r
+            10p-15{"பெ.{0}"}\r
+            10p-18{"அட்.{0}"}\r
+            10p-2{"செ.{0}"}\r
+            10p-21{"ஜெப்.{0}"}\r
+            10p-24{"யொ.{0}"}\r
+            10p-3{"மி.{0}"}\r
+            10p-9{"நா.{0}"}\r
+            10p1{"டெக்.{0}"}\r
+            10p12{"டெரா{0}"}\r
+            10p15{"பெட்.{0}"}\r
+            10p18{"எ.{0}"}\r
+            10p2{"ஹெ.{0}"}\r
+            10p21{"ஜெ.{0}"}\r
+            10p24{"யா.{0}"}\r
+            10p3{"கி.{0}"}\r
+            10p6{"மெ.{0}"}\r
+            10p9{"ஜி.{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1402,7 +1491,7 @@ ta{
                 one{"{0} கார."}\r
                 other{"{0} கார."}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"மி.கி./டெ.லி."}\r
                 one{"{0} மி.கி./டெ.லி."}\r
                 other{"{0} மி.கி./டெ.லி."}\r
@@ -1791,9 +1880,9 @@ ta{
                 per{"{0}/மீ."}\r
             }\r
             micrometer{\r
-                dnam{"µமீ."}\r
-                one{"{0} µமீ."}\r
-                other{"{0} µமீ."}\r
+                dnam{"μமீ."}\r
+                one{"{0} μமீ."}\r
+                other{"{0} μமீ."}\r
             }\r
             mile{\r
                 dnam{"மைல்கள்"}\r
@@ -1901,9 +1990,9 @@ ta{
                 other{"{0} ட."}\r
             }\r
             microgram{\r
-                dnam{"µகி"}\r
-                one{"{0} µகி"}\r
-                other{"{0} µகி"}\r
+                dnam{"μகி"}\r
+                one{"{0} μகி"}\r
+                other{"{0} μகி"}\r
             }\r
             milligram{\r
                 dnam{"மி.கி."}\r
index c315a51..a2a4898 100644 (file)
@@ -104,7 +104,59 @@ te{
             }\r
         }\r
         compound{\r
+            1024p1{"కిబి{0}"}\r
+            1024p2{"మెబి{0}"}\r
+            1024p3{"గిబి{0}"}\r
+            1024p4{"తెబి{0}"}\r
+            1024p5{"పెబి{0}"}\r
+            1024p6{"ఎక్స్‌బి{0}"}\r
+            1024p7{"జెబి{0}"}\r
+            1024p8{"యోబి{0}"}\r
+            10p-1{"డెసీ{0}"}\r
+            10p-12{"పికో{0}"}\r
+            10p-15{"ఫెమిటో{0}"}\r
+            10p-18{"అట్టో{0}"}\r
+            10p-2{"సెంటి{0}"}\r
+            10p-21{"జెప్టో{0}"}\r
+            10p-24{"యోక్టో{0}"}\r
+            10p-3{"మిల్లీ{0}"}\r
+            10p-6{"మైక్రో{0}"}\r
+            10p-9{"నానో{0}"}\r
+            10p1{"డెకా{0}"}\r
+            10p12{"టెరా{0}"}\r
+            10p15{"పెటా{0}"}\r
+            10p18{"ఎక్సా{0}"}\r
+            10p2{"హెక్టో{0}"}\r
+            10p21{"జెట్టా{0}"}\r
+            10p24{"యొట్టా{0}"}\r
+            10p3{"కిలో{0}"}\r
+            10p6{"మెగా{0}"}\r
+            10p9{"గిగా{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"చదరపు {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"చదరపు {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"క్యూబిక్ {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"క్యూబిక్ {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -113,7 +165,7 @@ te{
                 one{"{0} కేరట్"}\r
                 other{"{0} కేరట్లు"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"మిల్లీగ్రాములు/డెసిలీటర్"}\r
                 one{"{0} మిల్లీగ్రాము/డెసిలీటర్"}\r
                 other{"{0} మిల్లీగ్రాములు/డెసిలీటర్"}\r
@@ -1030,6 +1082,34 @@ te{
             }\r
         }\r
         compound{\r
+            1024p1{"కి{0}"}\r
+            1024p2{"మె{0}"}\r
+            1024p3{"గి{0}"}\r
+            1024p4{"తె{0}"}\r
+            1024p5{"పె{0}"}\r
+            1024p6{"ఇ{0}"}\r
+            1024p7{"జె{0}"}\r
+            1024p8{"యో{0}"}\r
+            10p-1{"డెసీ{0}"}\r
+            10p-12{"పి{0}"}\r
+            10p-15{"ఫెమి{0}"}\r
+            10p-18{"అ{0}"}\r
+            10p-2{"సెం{0}"}\r
+            10p-21{"జె{0}"}\r
+            10p-24{"యో{0}"}\r
+            10p-3{"మి{0}"}\r
+            10p-6{"మై{0}"}\r
+            10p-9{"నా{0}"}\r
+            10p1{"డెకా{0}"}\r
+            10p12{"టె{0}"}\r
+            10p15{"పె{0}"}\r
+            10p18{"ఎ{0}"}\r
+            10p2{"హె{0}"}\r
+            10p21{"జె{0}"}\r
+            10p24{"యొ{0}"}\r
+            10p3{"కి{0}"}\r
+            10p6{"మె{0}"}\r
+            10p9{"గి{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -1390,7 +1470,46 @@ te{
             }\r
         }\r
         compound{\r
+            1024p1{"కిబ్.{0}"}\r
+            1024p2{"మెబ్.{0}"}\r
+            1024p3{"గిబ్.{0}"}\r
+            1024p4{"తె{0}"}\r
+            1024p5{"పెబ్.{0}"}\r
+            1024p6{"ఇ{0}"}\r
+            1024p7{"జెబ్.{0}"}\r
+            1024p8{"యోబ్.{0}"}\r
+            10p-1{"డె{0}"}\r
+            10p-15{"ఫె{0}"}\r
+            10p-18{"అ.{0}"}\r
+            10p-2{"సెం.{0}"}\r
+            10p-21{"జెప్.{0}"}\r
+            10p-24{"యోక్.{0}"}\r
+            10p-3{"మి.{0}"}\r
+            10p-6{"మై.{0}"}\r
+            10p-9{"నా.{0}"}\r
+            10p1{"డెక్.{0}"}\r
+            10p12{"టె{0}"}\r
+            10p15{"పె{0}"}\r
+            10p18{"ఎ{0}"}\r
+            10p2{"హె.{0}"}\r
+            10p21{"జెట్.{0}"}\r
+            10p24{"యొ{0}"}\r
+            10p3{"కి.{0}"}\r
+            10p6{"మె.{0}"}\r
+            10p9{"గిగ్.{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1399,7 +1518,7 @@ te{
                 one{"{0} కేర."}\r
                 other{"{0} కేర."}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"మి.గ్రా./డె.లీ."}\r
                 one{"{0} మి.గ్రా./డె.లీ."}\r
                 other{"{0} మి.గ్రా./డె.లీ."}\r
index 0106b2a..3037190 100644 (file)
@@ -88,14 +88,56 @@ th{
             }\r
         }\r
         compound{\r
+            1024p1{"กิบิ{0}"}\r
+            1024p2{"เมบิ{0}"}\r
+            1024p3{"จิบิ{0}"}\r
+            1024p4{"เทบิ{0}"}\r
+            1024p5{"เพบิ{0}"}\r
+            1024p6{"เอ็กซ์บิ{0}"}\r
+            1024p7{"เซบิ{0}"}\r
+            1024p8{"โยบี{0}"}\r
+            10p-1{"เดซิ{0}"}\r
+            10p-12{"พิโค{0}"}\r
+            10p-15{"เฟมโต{0}"}\r
+            10p-18{"อัตโต{0}"}\r
+            10p-2{"เซนติ{0}"}\r
+            10p-21{"เซปโต{0}"}\r
+            10p-24{"ยอกโต{0}"}\r
+            10p-3{"มิลลิ{0}"}\r
+            10p-6{"ไมโคร{0}"}\r
+            10p-9{"นาโน{0}"}\r
+            10p1{"เดคา{0}"}\r
+            10p12{"เทระ{0}"}\r
+            10p15{"เพตะ{0}"}\r
+            10p18{"เอกซะ{0}"}\r
+            10p2{"เฮกโต{0}"}\r
+            10p21{"เซตตะ{0}"}\r
+            10p24{"ยอตตะ{0}"}\r
+            10p3{"กิโล{0}"}\r
+            10p6{"เมกะ{0}"}\r
+            10p9{"จิกะ{0}"}\r
             per{"{0}ต่อ{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"ตาราง{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"ลูกบาศก์{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"กะรัต"}\r
                 other{"{0} กะรัต"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"มิลลิกรัมต่อเดซิลิตร"}\r
                 other{"{0} มิลลิกรัมต่อเดซิลิตร"}\r
             }\r
@@ -840,6 +882,34 @@ th{
             }\r
         }\r
         compound{\r
+            1024p1{"กิบิ{0}"}\r
+            1024p2{"เมบิ{0}"}\r
+            1024p3{"จิบิ{0}"}\r
+            1024p4{"เทบิ{0}"}\r
+            1024p5{"เพบิ{0}"}\r
+            1024p6{"เอ็กซ์บิ{0}"}\r
+            1024p7{"เซบิ{0}"}\r
+            1024p8{"โยบี{0}"}\r
+            10p-1{"เดซิ{0}"}\r
+            10p-12{"พิโค{0}"}\r
+            10p-15{"เฟมโต{0}"}\r
+            10p-18{"อัตโต{0}"}\r
+            10p-2{"เซนติ{0}"}\r
+            10p-21{"เซปโต{0}"}\r
+            10p-24{"ยอกโต{0}"}\r
+            10p-3{"มิลลิ{0}"}\r
+            10p-6{"ไมโคร{0}"}\r
+            10p-9{"นาโน{0}"}\r
+            10p1{"เดคา{0}"}\r
+            10p12{"เทระ{0}"}\r
+            10p15{"เพตะ{0}"}\r
+            10p18{"เอกซะ{0}"}\r
+            10p2{"เฮกโต{0}"}\r
+            10p21{"เซตตะ{0}"}\r
+            10p24{"ยอตตะ{0}"}\r
+            10p3{"กิโล{0}"}\r
+            10p6{"เมกะ{0}"}\r
+            10p9{"จิกะ{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         consumption{\r
@@ -1093,6 +1163,34 @@ th{
             }\r
         }\r
         compound{\r
+            1024p1{"กิบิ{0}"}\r
+            1024p2{"เมบิ{0}"}\r
+            1024p3{"จิบิ{0}"}\r
+            1024p4{"เทบิ{0}"}\r
+            1024p5{"เพบิ{0}"}\r
+            1024p6{"เอ็กซ์บิ{0}"}\r
+            1024p7{"เซบิ{0}"}\r
+            1024p8{"โยบี{0}"}\r
+            10p-1{"เดซิ{0}"}\r
+            10p-12{"พิโค{0}"}\r
+            10p-15{"เฟมโต{0}"}\r
+            10p-18{"อัตโต{0}"}\r
+            10p-2{"เซนติ{0}"}\r
+            10p-21{"เซปโต{0}"}\r
+            10p-24{"ยอกโต{0}"}\r
+            10p-3{"มิลลิ{0}"}\r
+            10p-6{"ไมโคร{0}"}\r
+            10p-9{"นาโน{0}"}\r
+            10p1{"เดคา{0}"}\r
+            10p12{"เทระ{0}"}\r
+            10p15{"เพตะ{0}"}\r
+            10p18{"เอกซะ{0}"}\r
+            10p2{"เฮกโต{0}"}\r
+            10p21{"เซตตะ{0}"}\r
+            10p24{"ยอตตะ{0}"}\r
+            10p3{"กิโล{0}"}\r
+            10p6{"เมกะ{0}"}\r
+            10p9{"จิกะ{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1100,7 +1198,7 @@ th{
                 dnam{"กะรัต"}\r
                 other{"{0} กะรัต"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"มก./ดล."}\r
                 other{"{0} มก./ดล."}\r
             }\r
index 29772b7..4481ab6 100644 (file)
@@ -104,7 +104,59 @@ tk{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"ýobe{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"senti{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"ýokto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"gekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"ýotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{1} başyna {0}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"kwadrat {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kwadrat {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"kub {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"kub {0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}.{1}"}\r
         }\r
         concentr{\r
@@ -113,7 +165,7 @@ tk{
                 one{"{0} karat"}\r
                 other{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligram/desilitr"}\r
                 one{"{0} milligram/desilitr"}\r
                 other{"{0} milligram/desilitr"}\r
@@ -989,6 +1041,14 @@ tk{
     }\r
     unitsNarrow{\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Ýi{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}.{1}"}\r
         }\r
@@ -1209,6 +1269,14 @@ tk{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Ýi{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}.{1}"}\r
         }\r
@@ -1218,7 +1286,7 @@ tk{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1609,9 +1677,9 @@ tk{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1725,9 +1793,9 @@ tk{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index e21ef0f..8e96757 100644 (file)
@@ -88,14 +88,56 @@ to{
             }\r
         }\r
         compound{\r
+            1024p1{"kipi{0}"}\r
+            1024p2{"Mepi{0}"}\r
+            1024p3{"Kipi{0}"}\r
+            1024p4{"Tepi{0}"}\r
+            1024p5{"Pepi{0}"}\r
+            1024p6{"Ēkipi{0}"}\r
+            1024p7{"Sepi{0}"}\r
+            1024p8{"Iopi{0}"}\r
+            10p-1{"tesi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"fēmito{0}"}\r
+            10p-18{"ato{0}"}\r
+            10p-2{"seniti{0}"}\r
+            10p-21{"sēpito{0}"}\r
+            10p-24{"iōkito{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"maikolo{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"teka{0}"}\r
+            10p12{"tela{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"ēkisa{0}"}\r
+            10p2{"hēkito{0}"}\r
+            10p21{"seta{0}"}\r
+            10p24{"iota{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"meka{0}"}\r
+            10p9{"kika{0}"}\r
             per{"{0} ʻi he {1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0} sikuea"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0} kiupite"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"kalati"}\r
                 other{"kalati ʻe {0}"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milikalami he tesilita"}\r
                 other{"milikalami ʻe {0} he tesilita"}\r
             }\r
@@ -879,6 +921,11 @@ to{
             }\r
         }\r
         compound{\r
+            1024p1{"ki{0}"}\r
+            1024p3{"Ki{0}"}\r
+            10p-1{"t{0}"}\r
+            10p-2{"s{0}"}\r
+            10p1{"ta{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1105,8 +1152,8 @@ to{
                 other{"{0} m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1437,6 +1484,11 @@ to{
             }\r
         }\r
         compound{\r
+            1024p1{"ki{0}"}\r
+            1024p3{"Ki{0}"}\r
+            10p-1{"t{0}"}\r
+            10p-2{"s{0}"}\r
+            10p1{"ta{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1444,7 +1496,7 @@ to{
                 dnam{"kt"}\r
                 other{"kt ʻe {0}"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mk/tl"}\r
                 other{"mk ʻe {0}/tl"}\r
             }\r
@@ -1767,8 +1819,8 @@ to{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                other{"µm ʻe {0}"}\r
+                dnam{"μm"}\r
+                other{"μm ʻe {0}"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
index d91ea4f..4c79848 100644 (file)
@@ -105,7 +105,59 @@ tr{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"desi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"santi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}kare"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}kare"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}küp"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}küp"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ tr{
                 one{"{0} ayar"}\r
                 other{"{0} ayar"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"miligram/desilitre"}\r
                 one{"{0} miligram/desilitre"}\r
                 other{"{0} miligram/desilitre"}\r
@@ -1057,6 +1109,14 @@ tr{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1065,7 +1125,7 @@ tr{
                 one{"{0} ayar"}\r
                 other{"{0} ayar"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1355,8 +1415,8 @@ tr{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mil"}\r
@@ -1433,9 +1493,9 @@ tr{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -1758,6 +1818,14 @@ tr{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1766,7 +1834,7 @@ tr{
                 one{"{0} ayar"}\r
                 other{"{0} ayar"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dl"}\r
                 one{"{0} mg/dl"}\r
                 other{"{0} mg/dl"}\r
@@ -2124,8 +2192,8 @@ tr{
             }\r
             micrometer{\r
                 dnam{"mikron"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mil"}\r
@@ -2229,9 +2297,9 @@ tr{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 4593c5f..99398e1 100644 (file)
@@ -139,7 +139,79 @@ uk{
             }\r
         }\r
         compound{\r
+            1024p1{"кібі{0}"}\r
+            1024p2{"мебі{0}"}\r
+            1024p3{"гібі{0}"}\r
+            1024p4{"тебі{0}"}\r
+            1024p5{"пебі{0}"}\r
+            1024p6{"ексбі{0}"}\r
+            1024p7{"зебі{0}"}\r
+            1024p8{"йобі{0}"}\r
+            10p-1{"деци{0}"}\r
+            10p-12{"піко{0}"}\r
+            10p-15{"фемто{0}"}\r
+            10p-18{"ато{0}"}\r
+            10p-2{"санти{0}"}\r
+            10p-21{"зепто{0}"}\r
+            10p-24{"йокто{0}"}\r
+            10p-3{"мілі{0}"}\r
+            10p-6{"мікро{0}"}\r
+            10p-9{"нано{0}"}\r
+            10p1{"дека{0}"}\r
+            10p12{"тера{0}"}\r
+            10p15{"пета{0}"}\r
+            10p18{"екса{0}"}\r
+            10p2{"гекто{0}"}\r
+            10p21{"зета{0}"}\r
+            10p24{"йота{0}"}\r
+            10p3{"кіло{0}"}\r
+            10p6{"мега{0}"}\r
+            10p9{"гіга{0}"}\r
             per{"{0} на {1}"}\r
+            power2{\r
+                few{\r
+                    _{\r
+                        _{"квадратні {0}"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"квадратних {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"квадратний {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"квадратного {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                few{\r
+                    _{\r
+                        _{"кубічні {0}"}\r
+                    }\r
+                }\r
+                many{\r
+                    _{\r
+                        _{"кубічних {0}"}\r
+                    }\r
+                }\r
+                one{\r
+                    _{\r
+                        _{"кубічний {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"кубічного {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -149,7 +221,7 @@ uk{
                 one{"{0} карат"}\r
                 other{"{0} карата"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"міліграми на децилітр"}\r
                 few{"{0} міліграми на децилітр"}\r
                 many{"{0} міліграмів на децилітр"}\r
@@ -1388,6 +1460,34 @@ uk{
             }\r
         }\r
         compound{\r
+            1024p1{"Кі{0}"}\r
+            1024p2{"Мі{0}"}\r
+            1024p3{"Гі{0}"}\r
+            1024p4{"Ті{0}"}\r
+            1024p5{"Пі{0}"}\r
+            1024p6{"Еі{0}"}\r
+            1024p7{"Зі{0}"}\r
+            1024p8{"Йі{0}"}\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"а{0}"}\r
+            10p-2{"с{0}"}\r
+            10p-21{"зп{0}"}\r
+            10p-24{"й{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-6{"мк{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"да{0}"}\r
+            10p12{"Т{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"Е{0}"}\r
+            10p2{"г{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"Й{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"М{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -2052,6 +2152,34 @@ uk{
             }\r
         }\r
         compound{\r
+            1024p1{"Кі{0}"}\r
+            1024p2{"Мі{0}"}\r
+            1024p3{"Гі{0}"}\r
+            1024p4{"Ті{0}"}\r
+            1024p5{"Пі{0}"}\r
+            1024p6{"Еі{0}"}\r
+            1024p7{"Зі{0}"}\r
+            1024p8{"Йі{0}"}\r
+            10p-1{"д{0}"}\r
+            10p-12{"п{0}"}\r
+            10p-15{"ф{0}"}\r
+            10p-18{"а{0}"}\r
+            10p-2{"с{0}"}\r
+            10p-21{"зп{0}"}\r
+            10p-24{"й{0}"}\r
+            10p-3{"м{0}"}\r
+            10p-6{"мк{0}"}\r
+            10p-9{"н{0}"}\r
+            10p1{"да{0}"}\r
+            10p12{"Т{0}"}\r
+            10p15{"П{0}"}\r
+            10p18{"Е{0}"}\r
+            10p2{"г{0}"}\r
+            10p21{"З{0}"}\r
+            10p24{"Й{0}"}\r
+            10p3{"к{0}"}\r
+            10p6{"М{0}"}\r
+            10p9{"Г{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
@@ -2063,7 +2191,7 @@ uk{
                 one{"{0} кар."}\r
                 other{"{0} кар."}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"мг/дл"}\r
                 few{"{0} мг/дл"}\r
                 many{"{0} мг/дл"}\r
@@ -2469,16 +2597,16 @@ uk{
             }\r
             dot-per-centimeter{\r
                 dnam{"dpcm"}\r
-                few{"{0} dpcm"}\r
-                many{"{0} dpcm"}\r
-                one{"{0} dpcm"}\r
+                few{"{0} ppcm"}\r
+                many{"{0} ppcm"}\r
+                one{"{0} ppcm"}\r
                 other{"{0} dpcm"}\r
             }\r
             dot-per-inch{\r
                 dnam{"dpi"}\r
-                few{"{0} dpi"}\r
-                many{"{0} dpi"}\r
-                one{"{0} dpi"}\r
+                few{"{0} ppi"}\r
+                many{"{0} ppi"}\r
+                one{"{0} ppi"}\r
                 other{"{0} dpi"}\r
             }\r
             em{\r
index a49af14..20f258f 100644 (file)
@@ -105,7 +105,59 @@ ur{
             }\r
         }\r
         compound{\r
+            1024p1{"کیبی{0}"}\r
+            1024p2{"میبی{0}"}\r
+            1024p3{"جیبی{0}"}\r
+            1024p4{"ٹیبی{0}"}\r
+            1024p5{"پیبی{0}"}\r
+            1024p6{"ایکسبی{0}"}\r
+            1024p7{"زیبی{0}"}\r
+            1024p8{"یوب{0}"}\r
+            10p-1{"ڈیسی {0}"}\r
+            10p-12{"پکو{0}"}\r
+            10p-15{"فیمٹو{0}"}\r
+            10p-18{"اٹو{0}"}\r
+            10p-2{"سینٹی {0}"}\r
+            10p-21{"زپٹو{0}"}\r
+            10p-24{"یوکٹو{0}"}\r
+            10p-3{"ملی {0}"}\r
+            10p-6{"مائکرو {0}"}\r
+            10p-9{"نینو {0}"}\r
+            10p1{"ڈیکا{0}"}\r
+            10p12{"ٹیرا{0}"}\r
+            10p15{"پیٹا{0}"}\r
+            10p18{"اکسا{0}"}\r
+            10p2{"ہیکٹو{0}"}\r
+            10p21{"زیٹا{0}"}\r
+            10p24{"یوٹا{0}"}\r
+            10p3{"کلو{0}"}\r
+            10p6{"میگا{0}"}\r
+            10p9{"گیگا {0}"}\r
             per{"{0} فی {1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"مربع {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"مربع {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"کیوبک {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"کیوبک {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -113,7 +165,7 @@ ur{
                 one{"{0} قیراط"}\r
                 other{"{0} قیراط"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"ملی گرام فی ڈیسی لیٹر"}\r
                 one{"{0} ملی گرام فی ڈیسی لیٹر"}\r
                 other{"{0} ملی گرام فی ڈیسی لیٹر"}\r
@@ -1033,6 +1085,33 @@ ur{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"فیمٹو{0}"}\r
+            10p-18{"اٹو{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"زپٹو{0}"}\r
+            10p-24{"یوکٹو{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"ڈیکا{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"اکسا{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"زیٹا{0}"}\r
+            10p24{"یوٹا{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1386,6 +1465,33 @@ ur{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"فے۔{0}"}\r
+            10p-18{"ا۔{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"ز۔{0}"}\r
+            10p-24{"یوکٹو{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"ڈے۔{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"ای۔{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"زے{0}"}\r
+            10p24{"یو{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1394,7 +1500,7 @@ ur{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1753,9 +1859,9 @@ ur{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"میل"}\r
@@ -1865,9 +1971,9 @@ ur{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 0025e46..fe450e0 100644 (file)
@@ -100,7 +100,59 @@ uz{
             }\r
         }\r
         compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"eksbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobe{0}"}\r
+            10p-1{"detsi{0}"}\r
+            10p-12{"piko{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"santi{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yokto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"mikro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"eksa{0}"}\r
+            10p2{"gekto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0} kvadrat"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} kvadrat"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0} kub"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0} kub"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -108,7 +160,7 @@ uz{
                 one{"{0} karat"}\r
                 other{"{0} karat"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"milligramm/detsilitr"}\r
                 one{"{0} milligramm/detsilitr"}\r
                 other{"{0} milligramm/detsilitr"}\r
@@ -1018,7 +1070,51 @@ uz{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"s{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"gekto{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1322,7 +1418,51 @@ uz{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"s{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"gekto{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -1331,7 +1471,7 @@ uz{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1729,9 +1869,9 @@ uz{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µmetr"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μmetr"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mil"}\r
@@ -1845,9 +1985,9 @@ uz{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index e918c7d..67b8f62 100644 (file)
@@ -74,6 +74,49 @@ vi{
                 other{"{0} yard vuông"}\r
             }\r
         }\r
+        compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mebi{0}"}\r
+            1024p3{"gibi{0}"}\r
+            1024p4{"tebi{0}"}\r
+            1024p5{"pebi{0}"}\r
+            1024p6{"exbi{0}"}\r
+            1024p7{"zebi{0}"}\r
+            1024p8{"yobi{0}"}\r
+            10p-1{"đề-xi-{0}"}\r
+            10p-12{"pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"xăng-ti-{0}"}\r
+            10p-21{"zepto{0}"}\r
+            10p-24{"yocto{0}"}\r
+            10p-3{"mili{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0} vuông"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0} khối"}\r
+                    }\r
+                }\r
+            }\r
+        }\r
         concentr{\r
             karat{\r
                 dnam{"karat"}\r
@@ -719,6 +762,16 @@ vi{
                 other{"{0}ha"}\r
             }\r
         }\r
+        compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+        }\r
         consumption{\r
             liter-per-100-kilometer{\r
                 dnam{"L/100km"}\r
@@ -908,8 +961,18 @@ vi{
                 dnam{"km²"}\r
             }\r
         }\r
+        compound{\r
+            1024p1{"Ki{0}"}\r
+            1024p2{"Mi{0}"}\r
+            1024p3{"Gi{0}"}\r
+            1024p4{"Ti{0}"}\r
+            1024p5{"Pi{0}"}\r
+            1024p6{"Ei{0}"}\r
+            1024p7{"Zi{0}"}\r
+            1024p8{"Yi{0}"}\r
+        }\r
         concentr{\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
             }\r
             mole{\r
@@ -1168,7 +1231,7 @@ vi{
                 dnam{"t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
+                dnam{"μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
index 0650ce5..3e99166 100644 (file)
@@ -8,6 +8,16 @@ yo{
         ms{"m:ss"}\r
     }\r
     units{\r
+        compound{\r
+            1024p1{"kibi{0}"}\r
+            1024p2{"mẹ́bì {0}"}\r
+            1024p3{"gíbí {0}"}\r
+            1024p4{"tẹbi {0}"}\r
+            1024p5{"pẹbi {0}"}\r
+            1024p6{"ẹ́síbì {0}"}\r
+            1024p7{"sẹ́bì {0}"}\r
+            1024p8{"yóòbù {0}"}\r
+        }\r
         concentr{\r
             permille{\r
                 other{"{0} ìdákan nínú ẹgbẹ̀rún"}\r
@@ -164,6 +174,16 @@ yo{
         }\r
     }\r
     unitsNarrow{\r
+        compound{\r
+            1024p1{"àmì Ki {0}"}\r
+            1024p2{"àmì Mi {0}"}\r
+            1024p3{"àmì Gi {0}"}\r
+            1024p4{"àmì Ti {0}"}\r
+            1024p5{"àmì Pí {0}"}\r
+            1024p6{"àmì Ei {0}"}\r
+            1024p7{"àmì Sí {0}"}\r
+            1024p8{"àmì Yí {0}"}\r
+        }\r
         duration{\r
             day{\r
                 dnam{"ọjọ́"}\r
@@ -196,6 +216,16 @@ yo{
         }\r
     }\r
     unitsShort{\r
+        compound{\r
+            1024p1{"àmì Kí {0}"}\r
+            1024p2{"àmì Mi {0}"}\r
+            1024p3{"àmì Gi {0}"}\r
+            1024p4{"àmì Ti {0}"}\r
+            1024p5{"àmì Pi {0}"}\r
+            1024p6{"àmì Ei {0}"}\r
+            1024p7{"àmì Sí {0}"}\r
+            1024p8{"àmì {0}"}\r
+        }\r
         concentr{\r
             permille{\r
                 dnam{"ìdákan nínú ẹgbẹ̀rún"}\r
index 1fd8e5f..bea84fe 100644 (file)
@@ -3,6 +3,13 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 yo_BJ{\r
     units{\r
+        compound{\r
+            1024p2{"mɛ́bì {0}"}\r
+            1024p4{"tɛbi {0}"}\r
+            1024p5{"pɛbi {0}"}\r
+            1024p6{"ɛ́síbì {0}"}\r
+            1024p7{"sɛ́bì {0}"}\r
+        }\r
         concentr{\r
             permille{\r
                 other{"{0} ìdákan nínú ɛgbɛ̀rún"}\r
index 69b1158..9770361 100644 (file)
@@ -88,14 +88,56 @@ yue{
             }\r
         }\r
         compound{\r
+            1024p1{"二進制千{0}"}\r
+            1024p2{"二進制兆{0}"}\r
+            1024p3{"二進制吉{0}"}\r
+            1024p4{"二進制太{0}"}\r
+            1024p5{"二進制拍{0}"}\r
+            1024p6{"二進制艾{0}"}\r
+            1024p7{"二進制澤{0}"}\r
+            1024p8{"二進制堯{0}"}\r
+            10p-1{"分{0}"}\r
+            10p-12{"皮{0}"}\r
+            10p-15{"飛{0}"}\r
+            10p-18{"埃{0}"}\r
+            10p-2{"厘{0}"}\r
+            10p-21{"仄{0}"}\r
+            10p-24{"麼{0}"}\r
+            10p-3{"毫{0}"}\r
+            10p-6{"微{0}"}\r
+            10p-9{"納{0}"}\r
+            10p1{"十{0}"}\r
+            10p12{"太{0}"}\r
+            10p15{"拍{0}"}\r
+            10p18{"艾{0}"}\r
+            10p2{"百{0}"}\r
+            10p21{"澤{0}"}\r
+            10p24{"堯{0}"}\r
+            10p3{"千{0}"}\r
+            10p6{"兆{0}"}\r
+            10p9{"吉{0}"}\r
             per{"每 {1} {0}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"平方{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"立方{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"克拉"}\r
                 other{"{0} 克拉"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"毫克/公合"}\r
                 other{"{0} 毫克/公合"}\r
             }\r
@@ -860,7 +902,49 @@ yue{
             }\r
         }\r
         compound{\r
+            1024p1{"二進制千{0}"}\r
+            1024p2{"二進制兆{0}"}\r
+            1024p3{"二進制吉{0}"}\r
+            1024p4{"二進制太{0}"}\r
+            1024p5{"二進制拍{0}"}\r
+            1024p6{"二進制艾{0}"}\r
+            1024p7{"二進制澤{0}"}\r
+            1024p8{"二進制堯{0}"}\r
+            10p-1{"分{0}"}\r
+            10p-12{"皮{0}"}\r
+            10p-15{"飛{0}"}\r
+            10p-18{"埃{0}"}\r
+            10p-2{"厘{0}"}\r
+            10p-21{"仄{0}"}\r
+            10p-24{"麼{0}"}\r
+            10p-3{"毫{0}"}\r
+            10p-6{"微{0}"}\r
+            10p-9{"納{0}"}\r
+            10p1{"十{0}"}\r
+            10p12{"太{0}"}\r
+            10p15{"拍{0}"}\r
+            10p18{"艾{0}"}\r
+            10p2{"百{0}"}\r
+            10p21{"澤{0}"}\r
+            10p24{"堯{0}"}\r
+            10p3{"千{0}"}\r
+            10p6{"兆{0}"}\r
+            10p9{"吉{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"平方{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"立方{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1047,7 +1131,7 @@ yue{
                 other{"{0} 米"}\r
             }\r
             micrometer{\r
-                other{"{0}µm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 other{"{0}英里"}\r
@@ -1093,7 +1177,7 @@ yue{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                other{"{0}µg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 other{"{0}mg"}\r
@@ -1329,14 +1413,56 @@ yue{
             }\r
         }\r
         compound{\r
+            1024p1{"二進制千{0}"}\r
+            1024p2{"二進制兆{0}"}\r
+            1024p3{"二進制吉{0}"}\r
+            1024p4{"二進制太{0}"}\r
+            1024p5{"二進制拍{0}"}\r
+            1024p6{"二進制艾{0}"}\r
+            1024p7{"二進制澤{0}"}\r
+            1024p8{"二進制堯{0}"}\r
+            10p-1{"分{0}"}\r
+            10p-12{"皮{0}"}\r
+            10p-15{"飛{0}"}\r
+            10p-18{"埃{0}"}\r
+            10p-2{"厘{0}"}\r
+            10p-21{"仄{0}"}\r
+            10p-24{"麼{0}"}\r
+            10p-3{"毫{0}"}\r
+            10p-6{"微{0}"}\r
+            10p-9{"納{0}"}\r
+            10p1{"十{0}"}\r
+            10p12{"太{0}"}\r
+            10p15{"拍{0}"}\r
+            10p18{"艾{0}"}\r
+            10p2{"百{0}"}\r
+            10p21{"澤{0}"}\r
+            10p24{"堯{0}"}\r
+            10p3{"千{0}"}\r
+            10p6{"兆{0}"}\r
+            10p9{"吉{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"平方{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"立方{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"克拉"}\r
                 other{"{0} 克拉"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"毫克/公合"}\r
                 other{"{0} 毫克/公合"}\r
             }\r
index 1686a22..4ab0bc5 100644 (file)
@@ -89,14 +89,56 @@ yue_Hans{
             }\r
         }\r
         compound{\r
+            1024p1{"二进制千{0}"}\r
+            1024p2{"二进制兆{0}"}\r
+            1024p3{"二进制吉{0}"}\r
+            1024p4{"二进制太{0}"}\r
+            1024p5{"二进制拍{0}"}\r
+            1024p6{"二进制艾{0}"}\r
+            1024p7{"二进制泽{0}"}\r
+            1024p8{"二进制尧{0}"}\r
+            10p-1{"分{0}"}\r
+            10p-12{"皮{0}"}\r
+            10p-15{"飞{0}"}\r
+            10p-18{"埃{0}"}\r
+            10p-2{"厘{0}"}\r
+            10p-21{"仄{0}"}\r
+            10p-24{"么{0}"}\r
+            10p-3{"毫{0}"}\r
+            10p-6{"微{0}"}\r
+            10p-9{"纳{0}"}\r
+            10p1{"十{0}"}\r
+            10p12{"太{0}"}\r
+            10p15{"拍{0}"}\r
+            10p18{"艾{0}"}\r
+            10p2{"百{0}"}\r
+            10p21{"泽{0}"}\r
+            10p24{"尧{0}"}\r
+            10p3{"千{0}"}\r
+            10p6{"兆{0}"}\r
+            10p9{"吉{0}"}\r
             per{"每 {1} {0}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"平方{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"立方{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"克拉"}\r
                 other{"{0} 克拉"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"毫克/公合"}\r
                 other{"{0} 毫克/公合"}\r
             }\r
@@ -861,7 +903,49 @@ yue_Hans{
             }\r
         }\r
         compound{\r
+            1024p1{"二进制千{0}"}\r
+            1024p2{"二进制兆{0}"}\r
+            1024p3{"二进制吉{0}"}\r
+            1024p4{"二进制太{0}"}\r
+            1024p5{"二进制拍{0}"}\r
+            1024p6{"二进制艾{0}"}\r
+            1024p7{"二进制泽{0}"}\r
+            1024p8{"二进制尧{0}"}\r
+            10p-1{"分{0}"}\r
+            10p-12{"皮{0}"}\r
+            10p-15{"飞{0}"}\r
+            10p-18{"埃{0}"}\r
+            10p-2{"厘{0}"}\r
+            10p-21{"仄{0}"}\r
+            10p-24{"么{0}"}\r
+            10p-3{"毫{0}"}\r
+            10p-6{"微{0}"}\r
+            10p-9{"纳{0}"}\r
+            10p1{"十{0}"}\r
+            10p12{"太{0}"}\r
+            10p15{"拍{0}"}\r
+            10p18{"艾{0}"}\r
+            10p2{"百{0}"}\r
+            10p21{"泽{0}"}\r
+            10p24{"尧{0}"}\r
+            10p3{"千{0}"}\r
+            10p6{"兆{0}"}\r
+            10p9{"吉{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"平方{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"立方{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1048,7 +1132,7 @@ yue_Hans{
                 other{"{0} 公尺"}\r
             }\r
             micrometer{\r
-                other{"{0}µm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 other{"{0}英里"}\r
@@ -1094,7 +1178,7 @@ yue_Hans{
                 other{"{0}t"}\r
             }\r
             microgram{\r
-                other{"{0}µg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 other{"{0}mg"}\r
@@ -1330,14 +1414,56 @@ yue_Hans{
             }\r
         }\r
         compound{\r
+            1024p1{"二进制千{0}"}\r
+            1024p2{"二进制兆{0}"}\r
+            1024p3{"二进制吉{0}"}\r
+            1024p4{"二进制太{0}"}\r
+            1024p5{"二进制拍{0}"}\r
+            1024p6{"二进制艾{0}"}\r
+            1024p7{"二进制泽{0}"}\r
+            1024p8{"二进制尧{0}"}\r
+            10p-1{"分{0}"}\r
+            10p-12{"皮{0}"}\r
+            10p-15{"飞{0}"}\r
+            10p-18{"埃{0}"}\r
+            10p-2{"厘{0}"}\r
+            10p-21{"仄{0}"}\r
+            10p-24{"么{0}"}\r
+            10p-3{"毫{0}"}\r
+            10p-6{"微{0}"}\r
+            10p-9{"纳{0}"}\r
+            10p1{"十{0}"}\r
+            10p12{"太{0}"}\r
+            10p15{"拍{0}"}\r
+            10p18{"艾{0}"}\r
+            10p2{"百{0}"}\r
+            10p21{"泽{0}"}\r
+            10p24{"尧{0}"}\r
+            10p3{"千{0}"}\r
+            10p6{"兆{0}"}\r
+            10p9{"吉{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"平方{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"立方{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"克拉"}\r
                 other{"{0} 克拉"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"毫克/公合"}\r
                 other{"{0} 毫克/公合"}\r
             }\r
index e243bc7..46a204e 100644 (file)
@@ -83,7 +83,42 @@ zh{
             }\r
         }\r
         compound{\r
+            1024p3{"Gib{0}"}\r
+            10p-1{"分{0}"}\r
+            10p-12{"皮{0}"}\r
+            10p-15{"飞{0}"}\r
+            10p-18{"阿{0}"}\r
+            10p-2{"厘{0}"}\r
+            10p-21{"仄{0}"}\r
+            10p-24{"幺{0}"}\r
+            10p-3{"毫{0}"}\r
+            10p-6{"微{0}"}\r
+            10p-9{"纳{0}"}\r
+            10p1{"十{0}"}\r
+            10p12{"太{0}"}\r
+            10p15{"拍{0}"}\r
+            10p18{"艾{0}"}\r
+            10p2{"百{0}"}\r
+            10p21{"泽{0}"}\r
+            10p24{"尧{0}"}\r
+            10p3{"千{0}"}\r
+            10p6{"兆{0}"}\r
+            10p9{"吉{0}"}\r
             per{"每{1}{0}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"平方{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"立方{0}"}\r
+                    }\r
+                }\r
+            }\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
@@ -91,7 +126,7 @@ zh{
                 dnam{"克拉"}\r
                 other{"{0}克拉"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"毫克/分升"}\r
                 other{"每分升{0}毫克"}\r
             }\r
@@ -848,6 +883,8 @@ zh{
             }\r
         }\r
         compound{\r
+            1024p1{"Ki{0}"}\r
+            10p-1{"d{0}"}\r
             per{"{0}/{1}"}\r
             times{"{0}⋅{1}"}\r
         }\r
index 3635789..0922eec 100644 (file)
@@ -89,14 +89,56 @@ zh_Hant{
             }\r
         }\r
         compound{\r
+            1024p1{"{0} 千位元組"}\r
+            1024p2{"{0} 百萬位元組"}\r
+            1024p3{"{0} 吉位元組"}\r
+            1024p4{"{0} 兆位元組"}\r
+            1024p5{"{0} 拍位元組"}\r
+            1024p6{"{0} 艾位元組"}\r
+            1024p7{"{0} 皆位元組"}\r
+            1024p8{"{0} 佑位元組"}\r
+            10p-1{"{0} 公寸"}\r
+            10p-12{"{0} 皮米"}\r
+            10p-15{"{0} 飛米"}\r
+            10p-18{"{0} 阿米"}\r
+            10p-2{"{0} 公分"}\r
+            10p-21{"{0} 仄米"}\r
+            10p-24{"{0} 麼米"}\r
+            10p-3{"{0} 公釐"}\r
+            10p-6{"{0} 微米"}\r
+            10p-9{"{0} 奈米"}\r
+            10p1{"{0} 公丈"}\r
+            10p12{"{0} 太米"}\r
+            10p15{"{0} 拍米"}\r
+            10p18{"{0} 艾米"}\r
+            10p2{"{0} 公引"}\r
+            10p21{"{0} 皆米"}\r
+            10p24{"{0} 佑米"}\r
+            10p3{"{0} 公里"}\r
+            10p6{"{0} 兆米"}\r
+            10p9{"{0} 吉米"}\r
             per{"每{1} {0}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"平方{0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"立方{0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
                 dnam{"克拉"}\r
                 other{"{0} 克拉"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"每分升毫克"}\r
                 other{"每分升 {0} 毫克"}\r
             }\r
@@ -850,6 +892,26 @@ zh_Hant{
             }\r
         }\r
         compound{\r
+            10p-1{"{0} 公寸"}\r
+            10p-12{"{0} 皮米"}\r
+            10p-15{"{0} 飛米"}\r
+            10p-18{"{0} 阿米"}\r
+            10p-2{"{0} 公分"}\r
+            10p-21{"{0} 仄米"}\r
+            10p-24{"{0} 麼米"}\r
+            10p-3{"{0} 公釐"}\r
+            10p-6{"{0} 微米"}\r
+            10p-9{"{0} 奈米"}\r
+            10p1{"{0} 公丈"}\r
+            10p12{"{0} 太米"}\r
+            10p15{"{0} 拍米"}\r
+            10p18{"{0} 艾米"}\r
+            10p2{"{0} 公引"}\r
+            10p21{"{0} 皆米"}\r
+            10p24{"{0} 佑米"}\r
+            10p3{"{0} 公里"}\r
+            10p6{"{0} 兆米"}\r
+            10p9{"{0} 吉米"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -857,7 +919,7 @@ zh_Hant{
                 dnam{"克拉"}\r
                 other{"{0}kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"毫克/分升"}\r
                 other{"{0}mg/dL"}\r
             }\r
@@ -1104,7 +1166,7 @@ zh_Hant{
             }\r
             micrometer{\r
                 dnam{"微米"}\r
-                other{"{0}µm"}\r
+                other{"{0}μm"}\r
             }\r
             mile{\r
                 dnam{"英里"}\r
@@ -1167,7 +1229,7 @@ zh_Hant{
             }\r
             microgram{\r
                 dnam{"微克"}\r
-                other{"{0}µg"}\r
+                other{"{0}μg"}\r
             }\r
             milligram{\r
                 dnam{"毫克"}\r
@@ -1465,6 +1527,26 @@ zh_Hant{
             }\r
         }\r
         compound{\r
+            10p-1{"{0} 公寸"}\r
+            10p-12{"{0} 皮米"}\r
+            10p-15{"{0} 飛米"}\r
+            10p-18{"{0} 阿米"}\r
+            10p-2{"{0} 公分"}\r
+            10p-21{"{0} 仄米"}\r
+            10p-24{"{0} 麼米"}\r
+            10p-3{"{0} 公釐"}\r
+            10p-6{"{0} 微米"}\r
+            10p-9{"{0} 奈米"}\r
+            10p1{"{0} 公丈"}\r
+            10p12{"{0} 太米"}\r
+            10p15{"{0} 拍米"}\r
+            10p18{"{0} 艾米"}\r
+            10p2{"{0} 公引"}\r
+            10p21{"{0} 皆米"}\r
+            10p24{"{0} 佑米"}\r
+            10p3{"{0} 公里"}\r
+            10p6{"{0} 兆米"}\r
+            10p9{"{0} 吉米"}\r
             per{"{0}/{1}"}\r
         }\r
         concentr{\r
@@ -1472,7 +1554,7 @@ zh_Hant{
                 dnam{"克拉"}\r
                 other{"{0} 克拉"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"毫克/分升"}\r
                 other{"{0} 毫克/分升"}\r
             }\r
index 16a7c8d..da8ddeb 100644 (file)
@@ -46,7 +46,29 @@ zh_Hant_HK{
             }\r
         }\r
         compound{\r
+            10p-1{"{0} 分米"}\r
+            10p-2{"{0} 厘米"}\r
+            10p-21{"{0} 介米"}\r
+            10p-24{"{0} 攸米"}\r
+            10p-3{"{0} 毫米"}\r
+            10p-9{"{0} 納米"}\r
+            10p21{"{0} 澤米"}\r
+            10p6{"{0} 百萬米"}\r
             per{"{0}每{1}"}\r
+            power2{\r
+                other{\r
+                    _{\r
+                        _{"{0}二次方"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                other{\r
+                    _{\r
+                        _{"{0}三次方"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             millimole-per-liter{\r
@@ -360,6 +382,24 @@ zh_Hant_HK{
                 per{"{0} 每平方英里"}\r
             }\r
         }\r
+        compound{\r
+            1024p1{"{0} 千位元組"}\r
+            1024p2{"{0} 百萬位元組"}\r
+            1024p3{"{0} 吉位元組"}\r
+            1024p4{"{0} 兆位元組"}\r
+            1024p5{"{0} 拍位元組"}\r
+            1024p6{"{0} 艾位元組"}\r
+            1024p7{"{0} 皆位元組"}\r
+            1024p8{"{0} 佑位元組"}\r
+            10p-1{"{0} 分米"}\r
+            10p-2{"{0} 厘米"}\r
+            10p-21{"{0} 介米"}\r
+            10p-24{"{0} 攸米"}\r
+            10p-3{"{0} 毫米"}\r
+            10p-9{"{0} 納米"}\r
+            10p21{"{0} 澤米"}\r
+            10p6{"{0} 百萬米"}\r
+        }\r
         concentr{\r
             millimole-per-liter{\r
                 dnam{"毫摩爾/公升"}\r
@@ -610,6 +650,22 @@ zh_Hant_HK{
             }\r
         }\r
         compound{\r
+            1024p1{"{0} 千位元組"}\r
+            1024p2{"{0} 百萬位元組"}\r
+            1024p3{"{0} 吉位元組"}\r
+            1024p4{"{0} 兆位元組"}\r
+            1024p5{"{0} 拍位元組"}\r
+            1024p6{"{0} 艾位元組"}\r
+            1024p7{"{0} 皆位元組"}\r
+            1024p8{"{0} 佑位元組"}\r
+            10p-1{"{0} 分米"}\r
+            10p-2{"{0} 厘米"}\r
+            10p-21{"{0} 介米"}\r
+            10p-24{"{0} 攸米"}\r
+            10p-3{"{0} 毫米"}\r
+            10p-9{"{0} 納米"}\r
+            10p21{"{0} 澤米"}\r
+            10p6{"{0} 百萬米"}\r
             times{"{0}⋅{1}"}\r
         }\r
         concentr{\r
index 29ac981..958a7f7 100644 (file)
@@ -100,7 +100,51 @@ zu{
             }\r
         }\r
         compound{\r
+            10p-1{"deci{0}"}\r
+            10p-12{"i-pico{0}"}\r
+            10p-15{"femto{0}"}\r
+            10p-18{"atto{0}"}\r
+            10p-2{"centi{0}"}\r
+            10p-21{"i-zepto{0}"}\r
+            10p-24{"i-yocto{0}"}\r
+            10p-3{"milli{0}"}\r
+            10p-6{"micro{0}"}\r
+            10p-9{"nano{0}"}\r
+            10p1{"deka{0}"}\r
+            10p12{"tera{0}"}\r
+            10p15{"peta{0}"}\r
+            10p18{"exa{0}"}\r
+            10p2{"hecto{0}"}\r
+            10p21{"zetta{0}"}\r
+            10p24{"yotta{0}"}\r
+            10p3{"kilo{0}"}\r
+            10p6{"mega{0}"}\r
+            10p9{"giga{0}"}\r
             per{"{0} nge-{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"square {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"square {0}"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"cubic {0}"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"cubic {0}"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -108,7 +152,7 @@ zu{
                 one{"{0} i-karat"}\r
                 other{"{0} ama-karats"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -417,9 +461,9 @@ zu{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -506,9 +550,9 @@ zu{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
@@ -804,7 +848,51 @@ zu{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"i-p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"i-z{0}"}\r
+            10p-24{"i-y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             percent{\r
@@ -1025,7 +1113,51 @@ zu{
             }\r
         }\r
         compound{\r
+            10p-1{"d{0}"}\r
+            10p-12{"i-p{0}"}\r
+            10p-15{"f{0}"}\r
+            10p-18{"a{0}"}\r
+            10p-2{"c{0}"}\r
+            10p-21{"z{0}"}\r
+            10p-24{"i-y{0}"}\r
+            10p-3{"m{0}"}\r
+            10p-6{"μ{0}"}\r
+            10p-9{"n{0}"}\r
+            10p1{"da{0}"}\r
+            10p12{"T{0}"}\r
+            10p15{"P{0}"}\r
+            10p18{"E{0}"}\r
+            10p2{"h{0}"}\r
+            10p21{"Z{0}"}\r
+            10p24{"Y{0}"}\r
+            10p3{"k{0}"}\r
+            10p6{"M{0}"}\r
+            10p9{"G{0}"}\r
             per{"{0}/{1}"}\r
+            power2{\r
+                one{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}²"}\r
+                    }\r
+                }\r
+            }\r
+            power3{\r
+                one{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+                other{\r
+                    _{\r
+                        _{"{0}³"}\r
+                    }\r
+                }\r
+            }\r
         }\r
         concentr{\r
             karat{\r
@@ -1033,7 +1165,7 @@ zu{
                 one{"{0} kt"}\r
                 other{"{0} kt"}\r
             }\r
-            milligram-per-deciliter{\r
+            milligram-ofglucose-per-deciliter{\r
                 dnam{"mg/dL"}\r
                 one{"{0} mg/dL"}\r
                 other{"{0} mg/dL"}\r
@@ -1331,9 +1463,9 @@ zu{
                 per{"{0}/m"}\r
             }\r
             micrometer{\r
-                dnam{"µm"}\r
-                one{"{0} µm"}\r
-                other{"{0} µm"}\r
+                dnam{"μm"}\r
+                one{"{0} μm"}\r
+                other{"{0} μm"}\r
             }\r
             mile{\r
                 dnam{"mi"}\r
@@ -1412,9 +1544,9 @@ zu{
                 other{"{0} t"}\r
             }\r
             microgram{\r
-                dnam{"µg"}\r
-                one{"{0} µg"}\r
-                other{"{0} µg"}\r
+                dnam{"μg"}\r
+                one{"{0} μg"}\r
+                other{"{0} μg"}\r
             }\r
             milligram{\r
                 dnam{"mg"}\r
diff --git a/source/data/xml/rbnf/nn.xml b/source/data/xml/rbnf/nn.xml
deleted file mode 100644 (file)
index d64a5a8..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>\r
-<!--\r
- Copyright (C) 2016 and later: Unicode, Inc. and others.\r
- License & terms of use: http://www.unicode.org/copyright.html\r
- Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved.\r
--->\r
-<!DOCTYPE ldml SYSTEM "../../dtd/cldr-35.1/common/dtd/ldml.dtd">\r
-<ldml>\r
-    <identity>\r
-        <version number="$Revision$"/>\r
-        <language type="nn"/>\r
-    </identity>\r
-    <rbnf>\r
-        <rulesetGrouping type="SpelloutRules">\r
-            <ruleset type="lenient-parse" access="private">\r
-                <rbnfrule value="0">&amp;[last primary ignorable ] ←← ' ' ←← ',' ←← '-' ←← '­';</rbnfrule>\r
-            </ruleset>\r
-        </rulesetGrouping>\r
\r
-   </rbnf>\r
-</ldml>\r
similarity index 93%
rename from source/data/xml/rbnf/nb.xml
rename to source/data/xml/rbnf/no.xml
index 0674bca..8911bd7 100644 (file)
@@ -8,7 +8,7 @@
 <ldml>\r
     <identity>\r
         <version number="$Revision$"/>\r
-        <language type="nb"/>\r
+        <language type="no"/>\r
     </identity>\r
     <rbnf>\r
         <rulesetGrouping type="SpelloutRules">\r
index 05851c8..edb72ea 100644 (file)
@@ -3,7 +3,7 @@
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 \r
 {\r
-    "cldrVersion": "38.1",\r
+    "cldrVersion": "39",\r
     "aliases": {\r
         "ars": "ar_SA",\r
         "az_AZ": "az_Latn_AZ",\r
@@ -21,8 +21,7 @@
         "ks_IN": "ks_Arab_IN",\r
         "mni_IN": "mni_Beng_IN",\r
         "mo": "ro",\r
-        "no": "nb",\r
-        "no_NO": "nb_NO",\r
+        "no_NO": "no",\r
         "no_NO_NY": "nn_NO",\r
         "pa_IN": "pa_Guru_IN",\r
         "pa_PK": "pa_Arab_PK",\r
         "es_UY": "es_419",\r
         "es_VE": "es_419",\r
         "ff_Adlm": "root",\r
+        "nb": "no",\r
+        "nn": "no",\r
         "pa_Arab": "root",\r
         "pt_AO": "pt_PT",\r
         "pt_CH": "pt_PT",\r
index 47be0db..8788268 100644 (file)
@@ -769,7 +769,7 @@ hi{
             ec{"कुवैत"}\r
         }\r
         "Asia:Macau"{\r
-            ec{"मà¤\95ाà¤\89"}\r
+            ec{"मà¤\95ाà¤\8a"}\r
         }\r
         "Asia:Magadan"{\r
             ec{"मागादान"}\r
index e726717..eedd825 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nb{\r
-    zoneStrings{\r
-        "Africa:Abidjan"{\r
-            ec{"Abidjan"}\r
-        }\r
-        "Africa:Accra"{\r
-            ec{"Accra"}\r
-        }\r
-        "Africa:Addis_Ababa"{\r
-            ec{"Addis Abeba"}\r
-        }\r
-        "Africa:Algiers"{\r
-            ec{"Alger"}\r
-        }\r
-        "Africa:Asmera"{\r
-            ec{"Asmara"}\r
-        }\r
-        "Africa:Bamako"{\r
-            ec{"Bamako"}\r
-        }\r
-        "Africa:Bangui"{\r
-            ec{"Bangui"}\r
-        }\r
-        "Africa:Banjul"{\r
-            ec{"Banjul"}\r
-        }\r
-        "Africa:Bissau"{\r
-            ec{"Bissau"}\r
-        }\r
-        "Africa:Blantyre"{\r
-            ec{"Blantyre"}\r
-        }\r
-        "Africa:Brazzaville"{\r
-            ec{"Brazzaville"}\r
-        }\r
-        "Africa:Bujumbura"{\r
-            ec{"Bujumbura"}\r
-        }\r
-        "Africa:Cairo"{\r
-            ec{"Kairo"}\r
-        }\r
-        "Africa:Casablanca"{\r
-            ec{"Casablanca"}\r
-        }\r
-        "Africa:Ceuta"{\r
-            ec{"Ceuta"}\r
-        }\r
-        "Africa:Conakry"{\r
-            ec{"Conakry"}\r
-        }\r
-        "Africa:Dakar"{\r
-            ec{"Dakar"}\r
-        }\r
-        "Africa:Dar_es_Salaam"{\r
-            ec{"Dar-es-Salaam"}\r
-        }\r
-        "Africa:Djibouti"{\r
-            ec{"Djibouti"}\r
-        }\r
-        "Africa:Douala"{\r
-            ec{"Douala"}\r
-        }\r
-        "Africa:El_Aaiun"{\r
-            ec{"El Aaiún"}\r
-        }\r
-        "Africa:Freetown"{\r
-            ec{"Freetown"}\r
-        }\r
-        "Africa:Gaborone"{\r
-            ec{"Gaborone"}\r
-        }\r
-        "Africa:Harare"{\r
-            ec{"Harare"}\r
-        }\r
-        "Africa:Johannesburg"{\r
-            ec{"Johannesburg"}\r
-        }\r
-        "Africa:Juba"{\r
-            ec{"Juba"}\r
-        }\r
-        "Africa:Kampala"{\r
-            ec{"Kampala"}\r
-        }\r
-        "Africa:Khartoum"{\r
-            ec{"Khartoum"}\r
-        }\r
-        "Africa:Kigali"{\r
-            ec{"Kigali"}\r
-        }\r
-        "Africa:Kinshasa"{\r
-            ec{"Kinshasa"}\r
-        }\r
-        "Africa:Lagos"{\r
-            ec{"Lagos"}\r
-        }\r
-        "Africa:Libreville"{\r
-            ec{"Libreville"}\r
-        }\r
-        "Africa:Lome"{\r
-            ec{"Lomé"}\r
-        }\r
-        "Africa:Luanda"{\r
-            ec{"Luanda"}\r
-        }\r
-        "Africa:Lubumbashi"{\r
-            ec{"Lubumbashi"}\r
-        }\r
-        "Africa:Lusaka"{\r
-            ec{"Lusaka"}\r
-        }\r
-        "Africa:Malabo"{\r
-            ec{"Malabo"}\r
-        }\r
-        "Africa:Maputo"{\r
-            ec{"Maputo"}\r
-        }\r
-        "Africa:Maseru"{\r
-            ec{"Maseru"}\r
-        }\r
-        "Africa:Mbabane"{\r
-            ec{"Mbabane"}\r
-        }\r
-        "Africa:Mogadishu"{\r
-            ec{"Mogadishu"}\r
-        }\r
-        "Africa:Monrovia"{\r
-            ec{"Monrovia"}\r
-        }\r
-        "Africa:Nairobi"{\r
-            ec{"Nairobi"}\r
-        }\r
-        "Africa:Ndjamena"{\r
-            ec{"Ndjamena"}\r
-        }\r
-        "Africa:Niamey"{\r
-            ec{"Niamey"}\r
-        }\r
-        "Africa:Nouakchott"{\r
-            ec{"Nouakchott"}\r
-        }\r
-        "Africa:Ouagadougou"{\r
-            ec{"Ouagadougou"}\r
-        }\r
-        "Africa:Porto-Novo"{\r
-            ec{"Porto-Novo"}\r
-        }\r
-        "Africa:Sao_Tome"{\r
-            ec{"São Tomé"}\r
-        }\r
-        "Africa:Tripoli"{\r
-            ec{"Tripoli"}\r
-        }\r
-        "Africa:Tunis"{\r
-            ec{"Tunis"}\r
-        }\r
-        "Africa:Windhoek"{\r
-            ec{"Windhoek"}\r
-        }\r
-        "America:Adak"{\r
-            ec{"Adak"}\r
-        }\r
-        "America:Anchorage"{\r
-            ec{"Anchorage"}\r
-        }\r
-        "America:Anguilla"{\r
-            ec{"Anguilla"}\r
-        }\r
-        "America:Antigua"{\r
-            ec{"Antigua"}\r
-        }\r
-        "America:Araguaina"{\r
-            ec{"Araguaína"}\r
-        }\r
-        "America:Argentina:La_Rioja"{\r
-            ec{"La Rioja"}\r
-        }\r
-        "America:Argentina:Rio_Gallegos"{\r
-            ec{"Rio Gallegos"}\r
-        }\r
-        "America:Argentina:Salta"{\r
-            ec{"Salta"}\r
-        }\r
-        "America:Argentina:San_Juan"{\r
-            ec{"San Juan"}\r
-        }\r
-        "America:Argentina:San_Luis"{\r
-            ec{"San Luis"}\r
-        }\r
-        "America:Argentina:Tucuman"{\r
-            ec{"Tucumán"}\r
-        }\r
-        "America:Argentina:Ushuaia"{\r
-            ec{"Ushuaia"}\r
-        }\r
-        "America:Aruba"{\r
-            ec{"Aruba"}\r
-        }\r
-        "America:Asuncion"{\r
-            ec{"Asunción"}\r
-        }\r
-        "America:Bahia"{\r
-            ec{"Bahia"}\r
-        }\r
-        "America:Bahia_Banderas"{\r
-            ec{"Bahía Banderas"}\r
-        }\r
-        "America:Barbados"{\r
-            ec{"Barbados"}\r
-        }\r
-        "America:Belem"{\r
-            ec{"Belém"}\r
-        }\r
-        "America:Belize"{\r
-            ec{"Belize"}\r
-        }\r
-        "America:Blanc-Sablon"{\r
-            ec{"Blanc-Sablon"}\r
-        }\r
-        "America:Boa_Vista"{\r
-            ec{"Boa Vista"}\r
-        }\r
-        "America:Bogota"{\r
-            ec{"Bogotá"}\r
-        }\r
-        "America:Boise"{\r
-            ec{"Boise"}\r
-        }\r
-        "America:Buenos_Aires"{\r
-            ec{"Buenos Aires"}\r
-        }\r
-        "America:Cambridge_Bay"{\r
-            ec{"Cambridge Bay"}\r
-        }\r
-        "America:Campo_Grande"{\r
-            ec{"Campo Grande"}\r
-        }\r
-        "America:Cancun"{\r
-            ec{"Cancún"}\r
-        }\r
-        "America:Caracas"{\r
-            ec{"Caracas"}\r
-        }\r
-        "America:Catamarca"{\r
-            ec{"Catamarca"}\r
-        }\r
-        "America:Cayenne"{\r
-            ec{"Cayenne"}\r
-        }\r
-        "America:Cayman"{\r
-            ec{"Caymanøyene"}\r
-        }\r
-        "America:Chicago"{\r
-            ec{"Chicago"}\r
-        }\r
-        "America:Chihuahua"{\r
-            ec{"Chihuahua"}\r
-        }\r
-        "America:Coral_Harbour"{\r
-            ec{"Atikokan"}\r
-        }\r
-        "America:Cordoba"{\r
-            ec{"Córdoba"}\r
-        }\r
-        "America:Costa_Rica"{\r
-            ec{"Costa Rica"}\r
-        }\r
-        "America:Creston"{\r
-            ec{"Creston"}\r
-        }\r
-        "America:Cuiaba"{\r
-            ec{"Cuiabá"}\r
-        }\r
-        "America:Curacao"{\r
-            ec{"Curaçao"}\r
-        }\r
-        "America:Danmarkshavn"{\r
-            ec{"Danmarkshavn"}\r
-        }\r
-        "America:Dawson"{\r
-            ec{"Dawson"}\r
-        }\r
-        "America:Dawson_Creek"{\r
-            ec{"Dawson Creek"}\r
-        }\r
-        "America:Denver"{\r
-            ec{"Denver"}\r
-        }\r
-        "America:Detroit"{\r
-            ec{"Detroit"}\r
-        }\r
-        "America:Dominica"{\r
-            ec{"Dominica"}\r
-        }\r
-        "America:Edmonton"{\r
-            ec{"Edmonton"}\r
-        }\r
-        "America:Eirunepe"{\r
-            ec{"Eirunepe"}\r
-        }\r
-        "America:El_Salvador"{\r
-            ec{"El Salvador"}\r
-        }\r
-        "America:Fort_Nelson"{\r
-            ec{"Fort Nelson"}\r
-        }\r
-        "America:Fortaleza"{\r
-            ec{"Fortaleza"}\r
-        }\r
-        "America:Glace_Bay"{\r
-            ec{"Glace Bay"}\r
-        }\r
-        "America:Godthab"{\r
-            ec{"Nuuk"}\r
-        }\r
-        "America:Goose_Bay"{\r
-            ec{"Goose Bay"}\r
-        }\r
-        "America:Grand_Turk"{\r
-            ec{"Grand Turk"}\r
-        }\r
-        "America:Grenada"{\r
-            ec{"Grenada"}\r
-        }\r
-        "America:Guadeloupe"{\r
-            ec{"Guadeloupe"}\r
-        }\r
-        "America:Guatemala"{\r
-            ec{"Guatemala"}\r
-        }\r
-        "America:Guayaquil"{\r
-            ec{"Guayaquil"}\r
-        }\r
-        "America:Guyana"{\r
-            ec{"Guyana"}\r
-        }\r
-        "America:Halifax"{\r
-            ec{"Halifax"}\r
-        }\r
-        "America:Havana"{\r
-            ec{"Havana"}\r
-        }\r
-        "America:Hermosillo"{\r
-            ec{"Hermosillo"}\r
-        }\r
-        "America:Indiana:Knox"{\r
-            ec{"Knox, Indiana"}\r
-        }\r
-        "America:Indiana:Marengo"{\r
-            ec{"Marengo, Indiana"}\r
-        }\r
-        "America:Indiana:Petersburg"{\r
-            ec{"Petersburg, Indiana"}\r
-        }\r
-        "America:Indiana:Tell_City"{\r
-            ec{"Tell City, Indiana"}\r
-        }\r
-        "America:Indiana:Vevay"{\r
-            ec{"Vevay, Indiana"}\r
-        }\r
-        "America:Indiana:Vincennes"{\r
-            ec{"Vincennes, Indiana"}\r
-        }\r
-        "America:Indiana:Winamac"{\r
-            ec{"Winamac, Indiana"}\r
-        }\r
-        "America:Indianapolis"{\r
-            ec{"Indianapolis"}\r
-        }\r
-        "America:Inuvik"{\r
-            ec{"Inuvik"}\r
-        }\r
-        "America:Iqaluit"{\r
-            ec{"Iqaluit"}\r
-        }\r
-        "America:Jamaica"{\r
-            ec{"Jamaica"}\r
-        }\r
-        "America:Jujuy"{\r
-            ec{"Jujuy"}\r
-        }\r
-        "America:Juneau"{\r
-            ec{"Juneau"}\r
-        }\r
-        "America:Kentucky:Monticello"{\r
-            ec{"Monticello, Kentucky"}\r
-        }\r
-        "America:Kralendijk"{\r
-            ec{"Kralendijk"}\r
-        }\r
-        "America:La_Paz"{\r
-            ec{"La Paz"}\r
-        }\r
-        "America:Lima"{\r
-            ec{"Lima"}\r
-        }\r
-        "America:Los_Angeles"{\r
-            ec{"Los Angeles"}\r
-        }\r
-        "America:Louisville"{\r
-            ec{"Louisville"}\r
-        }\r
-        "America:Lower_Princes"{\r
-            ec{"Lower Prince’s Quarter"}\r
-        }\r
-        "America:Maceio"{\r
-            ec{"Maceió"}\r
-        }\r
-        "America:Managua"{\r
-            ec{"Managua"}\r
-        }\r
-        "America:Manaus"{\r
-            ec{"Manaus"}\r
-        }\r
-        "America:Marigot"{\r
-            ec{"Marigot"}\r
-        }\r
-        "America:Martinique"{\r
-            ec{"Martinique"}\r
-        }\r
-        "America:Matamoros"{\r
-            ec{"Matamoros"}\r
-        }\r
-        "America:Mazatlan"{\r
-            ec{"Mazatlan"}\r
-        }\r
-        "America:Mendoza"{\r
-            ec{"Mendoza"}\r
-        }\r
-        "America:Menominee"{\r
-            ec{"Menominee"}\r
-        }\r
-        "America:Merida"{\r
-            ec{"Mérida"}\r
-        }\r
-        "America:Metlakatla"{\r
-            ec{"Metlakatla"}\r
-        }\r
-        "America:Mexico_City"{\r
-            ec{"Mexico by"}\r
-        }\r
-        "America:Miquelon"{\r
-            ec{"Miquelon"}\r
-        }\r
-        "America:Moncton"{\r
-            ec{"Moncton"}\r
-        }\r
-        "America:Monterrey"{\r
-            ec{"Monterrey"}\r
-        }\r
-        "America:Montevideo"{\r
-            ec{"Montevideo"}\r
-        }\r
-        "America:Montserrat"{\r
-            ec{"Montserrat"}\r
-        }\r
-        "America:Nassau"{\r
-            ec{"Nassau"}\r
-        }\r
-        "America:New_York"{\r
-            ec{"New York"}\r
-        }\r
-        "America:Nipigon"{\r
-            ec{"Nipigon"}\r
-        }\r
-        "America:Nome"{\r
-            ec{"Nome"}\r
-        }\r
-        "America:Noronha"{\r
-            ec{"Noronha"}\r
-        }\r
-        "America:North_Dakota:Beulah"{\r
-            ec{"Beulah, Nord-Dakota"}\r
-        }\r
-        "America:North_Dakota:Center"{\r
-            ec{"Center, Nord-Dakota"}\r
-        }\r
-        "America:North_Dakota:New_Salem"{\r
-            ec{"New Salem, Nord-Dakota"}\r
-        }\r
-        "America:Ojinaga"{\r
-            ec{"Ojinaga"}\r
-        }\r
-        "America:Panama"{\r
-            ec{"Panama"}\r
-        }\r
-        "America:Pangnirtung"{\r
-            ec{"Pangnirtung"}\r
-        }\r
-        "America:Paramaribo"{\r
-            ec{"Paramaribo"}\r
-        }\r
-        "America:Phoenix"{\r
-            ec{"Phoenix"}\r
-        }\r
-        "America:Port-au-Prince"{\r
-            ec{"Port-au-Prince"}\r
-        }\r
-        "America:Port_of_Spain"{\r
-            ec{"Port of Spain"}\r
-        }\r
-        "America:Porto_Velho"{\r
-            ec{"Porto Velho"}\r
-        }\r
-        "America:Puerto_Rico"{\r
-            ec{"Puerto Rico"}\r
-        }\r
-        "America:Punta_Arenas"{\r
-            ec{"Punta Arenas"}\r
-        }\r
-        "America:Rainy_River"{\r
-            ec{"Rainy River"}\r
-        }\r
-        "America:Rankin_Inlet"{\r
-            ec{"Rankin Inlet"}\r
-        }\r
-        "America:Recife"{\r
-            ec{"Recife"}\r
-        }\r
-        "America:Regina"{\r
-            ec{"Regina"}\r
-        }\r
-        "America:Resolute"{\r
-            ec{"Resolute"}\r
-        }\r
-        "America:Rio_Branco"{\r
-            ec{"Rio Branco"}\r
-        }\r
-        "America:Santa_Isabel"{\r
-            ec{"Santa Isabel"}\r
-        }\r
-        "America:Santarem"{\r
-            ec{"Santarém"}\r
-        }\r
-        "America:Santiago"{\r
-            ec{"Santiago"}\r
-        }\r
-        "America:Santo_Domingo"{\r
-            ec{"Santo Domingo"}\r
-        }\r
-        "America:Sao_Paulo"{\r
-            ec{"São Paulo"}\r
-        }\r
-        "America:Scoresbysund"{\r
-            ec{"Ittoqqortoormiit"}\r
-        }\r
-        "America:Sitka"{\r
-            ec{"Sitka"}\r
-        }\r
-        "America:St_Barthelemy"{\r
-            ec{"Saint-Barthélemy"}\r
-        }\r
-        "America:St_Johns"{\r
-            ec{"St. John’s"}\r
-        }\r
-        "America:St_Kitts"{\r
-            ec{"St. Kitts"}\r
-        }\r
-        "America:St_Lucia"{\r
-            ec{"St. Lucia"}\r
-        }\r
-        "America:St_Thomas"{\r
-            ec{"St. Thomas"}\r
-        }\r
-        "America:St_Vincent"{\r
-            ec{"St. Vincent"}\r
-        }\r
-        "America:Swift_Current"{\r
-            ec{"Swift Current"}\r
-        }\r
-        "America:Tegucigalpa"{\r
-            ec{"Tegucigalpa"}\r
-        }\r
-        "America:Thule"{\r
-            ec{"Thule"}\r
-        }\r
-        "America:Thunder_Bay"{\r
-            ec{"Thunder Bay"}\r
-        }\r
-        "America:Tijuana"{\r
-            ec{"Tijuana"}\r
-        }\r
-        "America:Toronto"{\r
-            ec{"Toronto"}\r
-        }\r
-        "America:Tortola"{\r
-            ec{"Tortola"}\r
-        }\r
-        "America:Vancouver"{\r
-            ec{"Vancouver"}\r
-        }\r
-        "America:Whitehorse"{\r
-            ec{"Whitehorse"}\r
-        }\r
-        "America:Winnipeg"{\r
-            ec{"Winnipeg"}\r
-        }\r
-        "America:Yakutat"{\r
-            ec{"Yakutat"}\r
-        }\r
-        "America:Yellowknife"{\r
-            ec{"Yellowknife"}\r
-        }\r
-        "Antarctica:Casey"{\r
-            ec{"Casey"}\r
-        }\r
-        "Antarctica:Davis"{\r
-            ec{"Davis"}\r
-        }\r
-        "Antarctica:DumontDUrville"{\r
-            ec{"Dumont d’Urville"}\r
-        }\r
-        "Antarctica:Macquarie"{\r
-            ec{"Macquarie"}\r
-        }\r
-        "Antarctica:Mawson"{\r
-            ec{"Mawson"}\r
-        }\r
-        "Antarctica:McMurdo"{\r
-            ec{"McMurdo"}\r
-        }\r
-        "Antarctica:Palmer"{\r
-            ec{"Palmer"}\r
-        }\r
-        "Antarctica:Rothera"{\r
-            ec{"Rothera"}\r
-        }\r
-        "Antarctica:Syowa"{\r
-            ec{"Syowa"}\r
-        }\r
-        "Antarctica:Troll"{\r
-            ec{"Troll"}\r
-        }\r
-        "Antarctica:Vostok"{\r
-            ec{"Vostok"}\r
-        }\r
-        "Arctic:Longyearbyen"{\r
-            ec{"Longyearbyen"}\r
-        }\r
-        "Asia:Aden"{\r
-            ec{"Aden"}\r
-        }\r
-        "Asia:Almaty"{\r
-            ec{"Almaty"}\r
-        }\r
-        "Asia:Amman"{\r
-            ec{"Amman"}\r
-        }\r
-        "Asia:Anadyr"{\r
-            ec{"Anadyr"}\r
-        }\r
-        "Asia:Aqtau"{\r
-            ec{"Aktau"}\r
-        }\r
-        "Asia:Aqtobe"{\r
-            ec{"Aqtöbe"}\r
-        }\r
-        "Asia:Ashgabat"{\r
-            ec{"Asjkhabad"}\r
-        }\r
-        "Asia:Atyrau"{\r
-            ec{"Atyrau"}\r
-        }\r
-        "Asia:Baghdad"{\r
-            ec{"Bagdad"}\r
-        }\r
-        "Asia:Bahrain"{\r
-            ec{"Bahrain"}\r
-        }\r
-        "Asia:Baku"{\r
-            ec{"Baku"}\r
-        }\r
-        "Asia:Bangkok"{\r
-            ec{"Bangkok"}\r
-        }\r
-        "Asia:Barnaul"{\r
-            ec{"Barnaul"}\r
-        }\r
-        "Asia:Beirut"{\r
-            ec{"Beirut"}\r
-        }\r
-        "Asia:Bishkek"{\r
-            ec{"Bisjkek"}\r
-        }\r
-        "Asia:Brunei"{\r
-            ec{"Brunei"}\r
-        }\r
-        "Asia:Calcutta"{\r
-            ec{"Kolkata"}\r
-        }\r
-        "Asia:Chita"{\r
-            ec{"Tsjita"}\r
-        }\r
-        "Asia:Choibalsan"{\r
-            ec{"Choybalsan"}\r
-        }\r
-        "Asia:Colombo"{\r
-            ec{"Colombo"}\r
-        }\r
-        "Asia:Damascus"{\r
-            ec{"Damaskus"}\r
-        }\r
-        "Asia:Dhaka"{\r
-            ec{"Dhaka"}\r
-        }\r
-        "Asia:Dili"{\r
-            ec{"Dili"}\r
-        }\r
-        "Asia:Dubai"{\r
-            ec{"Dubai"}\r
-        }\r
-        "Asia:Dushanbe"{\r
-            ec{"Dusjanbe"}\r
-        }\r
-        "Asia:Famagusta"{\r
-            ec{"Famagusta"}\r
-        }\r
-        "Asia:Gaza"{\r
-            ec{"Gaza"}\r
-        }\r
-        "Asia:Hebron"{\r
-            ec{"Hebron"}\r
-        }\r
-        "Asia:Hong_Kong"{\r
-            ec{"Hongkong"}\r
-        }\r
-        "Asia:Hovd"{\r
-            ec{"Hovd"}\r
-        }\r
-        "Asia:Irkutsk"{\r
-            ec{"Irkutsk"}\r
-        }\r
-        "Asia:Jakarta"{\r
-            ec{"Jakarta"}\r
-        }\r
-        "Asia:Jayapura"{\r
-            ec{"Jajapura"}\r
-        }\r
-        "Asia:Jerusalem"{\r
-            ec{"Jerusalem"}\r
-        }\r
-        "Asia:Kabul"{\r
-            ec{"Kabul"}\r
-        }\r
-        "Asia:Kamchatka"{\r
-            ec{"Kamtsjatka"}\r
-        }\r
-        "Asia:Karachi"{\r
-            ec{"Karachi"}\r
-        }\r
-        "Asia:Katmandu"{\r
-            ec{"Katmandu"}\r
-        }\r
-        "Asia:Khandyga"{\r
-            ec{"Khandyga"}\r
-        }\r
-        "Asia:Krasnoyarsk"{\r
-            ec{"Krasnojarsk"}\r
-        }\r
-        "Asia:Kuala_Lumpur"{\r
-            ec{"Kuala Lumpur"}\r
-        }\r
-        "Asia:Kuching"{\r
-            ec{"Kuching"}\r
-        }\r
-        "Asia:Kuwait"{\r
-            ec{"Kuwait"}\r
-        }\r
-        "Asia:Macau"{\r
-            ec{"Macao"}\r
-        }\r
-        "Asia:Magadan"{\r
-            ec{"Magadan"}\r
-        }\r
-        "Asia:Makassar"{\r
-            ec{"Makassar"}\r
-        }\r
-        "Asia:Manila"{\r
-            ec{"Manila"}\r
-        }\r
-        "Asia:Muscat"{\r
-            ec{"Muskat"}\r
-        }\r
-        "Asia:Nicosia"{\r
-            ec{"Nikosia"}\r
-        }\r
-        "Asia:Novokuznetsk"{\r
-            ec{"Novokuznetsk"}\r
-        }\r
-        "Asia:Novosibirsk"{\r
-            ec{"Novosibirsk"}\r
-        }\r
-        "Asia:Omsk"{\r
-            ec{"Omsk"}\r
-        }\r
-        "Asia:Oral"{\r
-            ec{"Oral"}\r
-        }\r
-        "Asia:Phnom_Penh"{\r
-            ec{"Phnom Penh"}\r
-        }\r
-        "Asia:Pontianak"{\r
-            ec{"Pontianak"}\r
-        }\r
-        "Asia:Pyongyang"{\r
-            ec{"Pyongyang"}\r
-        }\r
-        "Asia:Qatar"{\r
-            ec{"Qatar"}\r
-        }\r
-        "Asia:Qostanay"{\r
-            ec{"Kostanaj"}\r
-        }\r
-        "Asia:Qyzylorda"{\r
-            ec{"Kyzylorda"}\r
-        }\r
-        "Asia:Rangoon"{\r
-            ec{"Yangon"}\r
-        }\r
-        "Asia:Riyadh"{\r
-            ec{"Riyadh"}\r
-        }\r
-        "Asia:Saigon"{\r
-            ec{"Ho Chi Minh-byen"}\r
-        }\r
-        "Asia:Sakhalin"{\r
-            ec{"Sakhalin"}\r
-        }\r
-        "Asia:Samarkand"{\r
-            ec{"Samarkand"}\r
-        }\r
-        "Asia:Seoul"{\r
-            ec{"Seoul"}\r
-        }\r
-        "Asia:Shanghai"{\r
-            ec{"Shanghai"}\r
-        }\r
-        "Asia:Singapore"{\r
-            ec{"Singapore"}\r
-        }\r
-        "Asia:Srednekolymsk"{\r
-            ec{"Srednekolymsk"}\r
-        }\r
-        "Asia:Taipei"{\r
-            ec{"Taipei"}\r
-        }\r
-        "Asia:Tashkent"{\r
-            ec{"Tasjkent"}\r
-        }\r
-        "Asia:Tbilisi"{\r
-            ec{"Tbilisi"}\r
-        }\r
-        "Asia:Tehran"{\r
-            ec{"Teheran"}\r
-        }\r
-        "Asia:Thimphu"{\r
-            ec{"Thimpu"}\r
-        }\r
-        "Asia:Tokyo"{\r
-            ec{"Tokyo"}\r
-        }\r
-        "Asia:Tomsk"{\r
-            ec{"Tomsk"}\r
-        }\r
-        "Asia:Ulaanbaatar"{\r
-            ec{"Ulan Bator"}\r
-        }\r
-        "Asia:Urumqi"{\r
-            ec{"Ürümqi"}\r
-        }\r
-        "Asia:Ust-Nera"{\r
-            ec{"Ust-Nera"}\r
-        }\r
-        "Asia:Vientiane"{\r
-            ec{"Vientiane"}\r
-        }\r
-        "Asia:Vladivostok"{\r
-            ec{"Vladivostok"}\r
-        }\r
-        "Asia:Yakutsk"{\r
-            ec{"Jakutsk"}\r
-        }\r
-        "Asia:Yekaterinburg"{\r
-            ec{"Jekaterinburg"}\r
-        }\r
-        "Asia:Yerevan"{\r
-            ec{"Jerevan"}\r
-        }\r
-        "Atlantic:Azores"{\r
-            ec{"Asorene"}\r
-        }\r
-        "Atlantic:Bermuda"{\r
-            ec{"Bermuda"}\r
-        }\r
-        "Atlantic:Canary"{\r
-            ec{"Kanariøyene"}\r
-        }\r
-        "Atlantic:Cape_Verde"{\r
-            ec{"Kapp Verde"}\r
-        }\r
-        "Atlantic:Faeroe"{\r
-            ec{"Færøyene"}\r
-        }\r
-        "Atlantic:Madeira"{\r
-            ec{"Madeira"}\r
-        }\r
-        "Atlantic:Reykjavik"{\r
-            ec{"Reykjavík"}\r
-        }\r
-        "Atlantic:South_Georgia"{\r
-            ec{"Sør-Georgia"}\r
-        }\r
-        "Atlantic:St_Helena"{\r
-            ec{"St. Helena"}\r
-        }\r
-        "Atlantic:Stanley"{\r
-            ec{"Stanley"}\r
-        }\r
-        "Australia:Adelaide"{\r
-            ec{"Adelaide"}\r
-        }\r
-        "Australia:Brisbane"{\r
-            ec{"Brisbane"}\r
-        }\r
-        "Australia:Broken_Hill"{\r
-            ec{"Broken Hill"}\r
-        }\r
-        "Australia:Currie"{\r
-            ec{"Currie"}\r
-        }\r
-        "Australia:Darwin"{\r
-            ec{"Darwin"}\r
-        }\r
-        "Australia:Eucla"{\r
-            ec{"Eucla"}\r
-        }\r
-        "Australia:Hobart"{\r
-            ec{"Hobart"}\r
-        }\r
-        "Australia:Lindeman"{\r
-            ec{"Lindeman"}\r
-        }\r
-        "Australia:Lord_Howe"{\r
-            ec{"Lord Howe"}\r
-        }\r
-        "Australia:Melbourne"{\r
-            ec{"Melbourne"}\r
-        }\r
-        "Australia:Perth"{\r
-            ec{"Perth"}\r
-        }\r
-        "Australia:Sydney"{\r
-            ec{"Sydney"}\r
-        }\r
-        "Etc:UTC"{\r
-            ls{"koordinert universaltid"}\r
-        }\r
-        "Etc:Unknown"{\r
-            ec{"ukjent by"}\r
-        }\r
-        "Europe:Amsterdam"{\r
-            ec{"Amsterdam"}\r
-        }\r
-        "Europe:Andorra"{\r
-            ec{"Andorra"}\r
-        }\r
-        "Europe:Astrakhan"{\r
-            ec{"Astrakhan"}\r
-        }\r
-        "Europe:Athens"{\r
-            ec{"Athen"}\r
-        }\r
-        "Europe:Belgrade"{\r
-            ec{"Beograd"}\r
-        }\r
-        "Europe:Berlin"{\r
-            ec{"Berlin"}\r
-        }\r
-        "Europe:Bratislava"{\r
-            ec{"Bratislava"}\r
-        }\r
-        "Europe:Brussels"{\r
-            ec{"Brussel"}\r
-        }\r
-        "Europe:Bucharest"{\r
-            ec{"București"}\r
-        }\r
-        "Europe:Budapest"{\r
-            ec{"Budapest"}\r
-        }\r
-        "Europe:Busingen"{\r
-            ec{"Büsingen"}\r
-        }\r
-        "Europe:Chisinau"{\r
-            ec{"Chișinău"}\r
-        }\r
-        "Europe:Copenhagen"{\r
-            ec{"København"}\r
-        }\r
-        "Europe:Dublin"{\r
-            ec{"Dublin"}\r
-            ld{"irsk sommertid"}\r
-        }\r
-        "Europe:Gibraltar"{\r
-            ec{"Gibraltar"}\r
-        }\r
-        "Europe:Guernsey"{\r
-            ec{"Guernsey"}\r
-        }\r
-        "Europe:Helsinki"{\r
-            ec{"Helsingfors"}\r
-        }\r
-        "Europe:Isle_of_Man"{\r
-            ec{"Man"}\r
-        }\r
-        "Europe:Istanbul"{\r
-            ec{"Istanbul"}\r
-        }\r
-        "Europe:Jersey"{\r
-            ec{"Jersey"}\r
-        }\r
-        "Europe:Kaliningrad"{\r
-            ec{"Kaliningrad"}\r
-        }\r
-        "Europe:Kiev"{\r
-            ec{"Kiev"}\r
-        }\r
-        "Europe:Kirov"{\r
-            ec{"Kirov"}\r
-        }\r
-        "Europe:Lisbon"{\r
-            ec{"Lisboa"}\r
-        }\r
-        "Europe:Ljubljana"{\r
-            ec{"Ljubljana"}\r
-        }\r
-        "Europe:London"{\r
-            ec{"London"}\r
-            ld{"britisk sommertid"}\r
-        }\r
-        "Europe:Luxembourg"{\r
-            ec{"Luxemburg"}\r
-        }\r
-        "Europe:Madrid"{\r
-            ec{"Madrid"}\r
-        }\r
-        "Europe:Malta"{\r
-            ec{"Malta"}\r
-        }\r
-        "Europe:Mariehamn"{\r
-            ec{"Mariehamn"}\r
-        }\r
-        "Europe:Minsk"{\r
-            ec{"Minsk"}\r
-        }\r
-        "Europe:Monaco"{\r
-            ec{"Monaco"}\r
-        }\r
-        "Europe:Moscow"{\r
-            ec{"Moskva"}\r
-        }\r
-        "Europe:Oslo"{\r
-            ec{"Oslo"}\r
-        }\r
-        "Europe:Paris"{\r
-            ec{"Paris"}\r
-        }\r
-        "Europe:Podgorica"{\r
-            ec{"Podgorica"}\r
-        }\r
-        "Europe:Prague"{\r
-            ec{"Praha"}\r
-        }\r
-        "Europe:Riga"{\r
-            ec{"Riga"}\r
-        }\r
-        "Europe:Rome"{\r
-            ec{"Roma"}\r
-        }\r
-        "Europe:Samara"{\r
-            ec{"Samara"}\r
-        }\r
-        "Europe:San_Marino"{\r
-            ec{"San Marino"}\r
-        }\r
-        "Europe:Sarajevo"{\r
-            ec{"Sarajevo"}\r
-        }\r
-        "Europe:Saratov"{\r
-            ec{"Saratov"}\r
-        }\r
-        "Europe:Simferopol"{\r
-            ec{"Simferopol"}\r
-        }\r
-        "Europe:Skopje"{\r
-            ec{"Skopje"}\r
-        }\r
-        "Europe:Sofia"{\r
-            ec{"Sofia"}\r
-        }\r
-        "Europe:Stockholm"{\r
-            ec{"Stockholm"}\r
-        }\r
-        "Europe:Tallinn"{\r
-            ec{"Tallinn"}\r
-        }\r
-        "Europe:Tirane"{\r
-            ec{"Tirana"}\r
-        }\r
-        "Europe:Ulyanovsk"{\r
-            ec{"Uljanovsk"}\r
-        }\r
-        "Europe:Uzhgorod"{\r
-            ec{"Uzjhorod"}\r
-        }\r
-        "Europe:Vaduz"{\r
-            ec{"Vaduz"}\r
-        }\r
-        "Europe:Vatican"{\r
-            ec{"Vatikanstaten"}\r
-        }\r
-        "Europe:Vienna"{\r
-            ec{"Wien"}\r
-        }\r
-        "Europe:Vilnius"{\r
-            ec{"Vilnius"}\r
-        }\r
-        "Europe:Volgograd"{\r
-            ec{"Volgograd"}\r
-        }\r
-        "Europe:Warsaw"{\r
-            ec{"Warszawa"}\r
-        }\r
-        "Europe:Zagreb"{\r
-            ec{"Zagreb"}\r
-        }\r
-        "Europe:Zaporozhye"{\r
-            ec{"Zaporizjzja"}\r
-        }\r
-        "Europe:Zurich"{\r
-            ec{"Zürich"}\r
-        }\r
-        "Indian:Antananarivo"{\r
-            ec{"Antananarivo"}\r
-        }\r
-        "Indian:Chagos"{\r
-            ec{"Chagos"}\r
-        }\r
-        "Indian:Christmas"{\r
-            ec{"Christmasøya"}\r
-        }\r
-        "Indian:Cocos"{\r
-            ec{"Kokosøyene"}\r
-        }\r
-        "Indian:Comoro"{\r
-            ec{"Komorene"}\r
-        }\r
-        "Indian:Kerguelen"{\r
-            ec{"Kerguelen"}\r
-        }\r
-        "Indian:Mahe"{\r
-            ec{"Mahé"}\r
-        }\r
-        "Indian:Maldives"{\r
-            ec{"Maldivene"}\r
-        }\r
-        "Indian:Mauritius"{\r
-            ec{"Mauritius"}\r
-        }\r
-        "Indian:Mayotte"{\r
-            ec{"Mayotte"}\r
-        }\r
-        "Indian:Reunion"{\r
-            ec{"Réunion"}\r
-        }\r
-        "Pacific:Apia"{\r
-            ec{"Apia"}\r
-        }\r
-        "Pacific:Auckland"{\r
-            ec{"Auckland"}\r
-        }\r
-        "Pacific:Bougainville"{\r
-            ec{"Bougainville"}\r
-        }\r
-        "Pacific:Chatham"{\r
-            ec{"Chatham"}\r
-        }\r
-        "Pacific:Easter"{\r
-            ec{"Påskeøya"}\r
-        }\r
-        "Pacific:Efate"{\r
-            ec{"Efate"}\r
-        }\r
-        "Pacific:Enderbury"{\r
-            ec{"Enderbury"}\r
-        }\r
-        "Pacific:Fakaofo"{\r
-            ec{"Fakaofo"}\r
-        }\r
-        "Pacific:Fiji"{\r
-            ec{"Fiji"}\r
-        }\r
-        "Pacific:Funafuti"{\r
-            ec{"Funafuti"}\r
-        }\r
-        "Pacific:Galapagos"{\r
-            ec{"Galápagosøyene"}\r
-        }\r
-        "Pacific:Gambier"{\r
-            ec{"Gambier"}\r
-        }\r
-        "Pacific:Guadalcanal"{\r
-            ec{"Guadalcanal"}\r
-        }\r
-        "Pacific:Guam"{\r
-            ec{"Guam"}\r
-        }\r
-        "Pacific:Honolulu"{\r
-            ec{"Honolulu"}\r
-        }\r
-        "Pacific:Johnston"{\r
-            ec{"Johnston"}\r
-        }\r
-        "Pacific:Kiritimati"{\r
-            ec{"Kiritimati"}\r
-        }\r
-        "Pacific:Kosrae"{\r
-            ec{"Kosrae"}\r
-        }\r
-        "Pacific:Kwajalein"{\r
-            ec{"Kwajalein"}\r
-        }\r
-        "Pacific:Majuro"{\r
-            ec{"Majuro"}\r
-        }\r
-        "Pacific:Marquesas"{\r
-            ec{"Marquesas"}\r
-        }\r
-        "Pacific:Midway"{\r
-            ec{"Midway"}\r
-        }\r
-        "Pacific:Nauru"{\r
-            ec{"Nauru"}\r
-        }\r
-        "Pacific:Niue"{\r
-            ec{"Niue"}\r
-        }\r
-        "Pacific:Norfolk"{\r
-            ec{"Norfolkøya"}\r
-        }\r
-        "Pacific:Noumea"{\r
-            ec{"Nouméa"}\r
-        }\r
-        "Pacific:Pago_Pago"{\r
-            ec{"Pago Pago"}\r
-        }\r
-        "Pacific:Palau"{\r
-            ec{"Palau"}\r
-        }\r
-        "Pacific:Pitcairn"{\r
-            ec{"Pitcairn"}\r
-        }\r
-        "Pacific:Ponape"{\r
-            ec{"Pohnpei"}\r
-        }\r
-        "Pacific:Port_Moresby"{\r
-            ec{"Port Moresby"}\r
-        }\r
-        "Pacific:Rarotonga"{\r
-            ec{"Rarotonga"}\r
-        }\r
-        "Pacific:Saipan"{\r
-            ec{"Saipan"}\r
-        }\r
-        "Pacific:Tahiti"{\r
-            ec{"Tahiti"}\r
-        }\r
-        "Pacific:Tarawa"{\r
-            ec{"Tarawa"}\r
-        }\r
-        "Pacific:Tongatapu"{\r
-            ec{"Tongatapu"}\r
-        }\r
-        "Pacific:Truk"{\r
-            ec{"Chuuk"}\r
-        }\r
-        "Pacific:Wake"{\r
-            ec{"Wake"}\r
-        }\r
-        "Pacific:Wallis"{\r
-            ec{"Wallis"}\r
-        }\r
-        "meta:Acre"{\r
-            ld{"Acre sommertid"}\r
-            lg{"Acre-tid"}\r
-            ls{"Acre normaltid"}\r
-        }\r
-        "meta:Afghanistan"{\r
-            ls{"afghansk tid"}\r
-        }\r
-        "meta:Africa_Central"{\r
-            ls{"sentralafrikansk tid"}\r
-        }\r
-        "meta:Africa_Eastern"{\r
-            ls{"østafrikansk tid"}\r
-        }\r
-        "meta:Africa_Southern"{\r
-            ls{"sørafrikansk tid"}\r
-        }\r
-        "meta:Africa_Western"{\r
-            ld{"vestafrikansk sommertid"}\r
-            lg{"vestafrikansk tid"}\r
-            ls{"vestafrikansk normaltid"}\r
-        }\r
-        "meta:Alaska"{\r
-            ld{"alaskisk sommertid"}\r
-            lg{"alaskisk tid"}\r
-            ls{"alaskisk normaltid"}\r
-            sd{"AKDT"}\r
-            sg{"AKT"}\r
-            ss{"AKST"}\r
-        }\r
-        "meta:Almaty"{\r
-            ld{"Almaty, sommertid"}\r
-            lg{"Almaty-tid"}\r
-            ls{"Almaty, standardtid"}\r
-        }\r
-        "meta:Amazon"{\r
-            ld{"sommertid for Amazonas"}\r
-            lg{"tidssone for Amazonas"}\r
-            ls{"normaltid for Amazonas"}\r
-        }\r
-        "meta:America_Central"{\r
-            ld{"sommertid for det sentrale Nord-Amerika"}\r
-            lg{"tidssone for det sentrale Nord-Amerika"}\r
-            ls{"normaltid for det sentrale Nord-Amerika"}\r
-            sd{"CDT"}\r
-            sg{"CT"}\r
-            ss{"CST"}\r
-        }\r
-        "meta:America_Eastern"{\r
-            ld{"sommertid for den nordamerikanske østkysten"}\r
-            lg{"tidssone for den nordamerikanske østkysten"}\r
-            ls{"normaltid for den nordamerikanske østkysten"}\r
-            sd{"EDT"}\r
-            sg{"ET"}\r
-            ss{"EST"}\r
-        }\r
-        "meta:America_Mountain"{\r
-            ld{"sommertid for Rocky Mountains (USA)"}\r
-            lg{"tidssone for Rocky Mountains (USA)"}\r
-            ls{"normaltid for Rocky Mountains (USA)"}\r
-            sd{"MDT"}\r
-            sg{"MT"}\r
-            ss{"MST"}\r
-        }\r
-        "meta:America_Pacific"{\r
-            ld{"sommertid for den nordamerikanske Stillehavskysten"}\r
-            lg{"tidssone for den nordamerikanske Stillehavskysten"}\r
-            ls{"normaltid for den nordamerikanske Stillehavskysten"}\r
-            sd{"PDT"}\r
-            sg{"PT"}\r
-            ss{"PST"}\r
-        }\r
-        "meta:Anadyr"{\r
-            ld{"Russisk (Anadyr) sommertid"}\r
-            lg{"Russisk (Anadyr) tid"}\r
-            ls{"Russisk (Anadyr) normaltid"}\r
-        }\r
-        "meta:Apia"{\r
-            ld{"sommertid for Apia"}\r
-            lg{"tidssone for Apia"}\r
-            ls{"normaltid for Apia"}\r
-        }\r
-        "meta:Aqtau"{\r
-            ld{"Aqtau, sommertid"}\r
-            lg{"Aqtau-tid"}\r
-            ls{"Aqtau, standardtid"}\r
-        }\r
-        "meta:Aqtobe"{\r
-            ld{"Aqtobe, sommertid"}\r
-            lg{"Aqtobe-tid"}\r
-            ls{"Aqtobe, standardtid"}\r
-        }\r
-        "meta:Arabian"{\r
-            ld{"arabisk sommertid"}\r
-            lg{"arabisk tid"}\r
-            ls{"arabisk standardtid"}\r
-        }\r
-        "meta:Argentina"{\r
-            ld{"argentinsk sommertid"}\r
-            lg{"argentinsk tid"}\r
-            ls{"argentinsk normaltid"}\r
-        }\r
-        "meta:Argentina_Western"{\r
-            ld{"vestargentinsk sommertid"}\r
-            lg{"vestargentinsk tid"}\r
-            ls{"vestargentinsk normaltid"}\r
-        }\r
-        "meta:Armenia"{\r
-            ld{"armensk sommertid"}\r
-            lg{"armensk tid"}\r
-            ls{"armensk normaltid"}\r
-        }\r
-        "meta:Atlantic"{\r
-            ld{"sommertid for den nordamerikanske atlanterhavskysten"}\r
-            lg{"tidssone for den nordamerikanske atlanterhavskysten"}\r
-            ls{"normaltid for den nordamerikanske atlanterhavskysten"}\r
-            sd{"ADT"}\r
-            sg{"AT"}\r
-            ss{"AST"}\r
-        }\r
-        "meta:Australia_Central"{\r
-            ld{"sentralaustralsk sommertid"}\r
-            lg{"sentralaustralsk tid"}\r
-            ls{"sentralaustralsk normaltid"}\r
-        }\r
-        "meta:Australia_CentralWestern"{\r
-            ld{"vest-sentralaustralsk sommertid"}\r
-            lg{"vest-sentralaustralsk tid"}\r
-            ls{"vest-sentralaustralsk normaltid"}\r
-        }\r
-        "meta:Australia_Eastern"{\r
-            ld{"østaustralsk sommertid"}\r
-            lg{"østaustralsk tid"}\r
-            ls{"østaustralsk normaltid"}\r
-        }\r
-        "meta:Australia_Western"{\r
-            ld{"vestaustralsk sommertid"}\r
-            lg{"vestaustralsk tid"}\r
-            ls{"vestaustralsk normaltid"}\r
-        }\r
-        "meta:Azerbaijan"{\r
-            ld{"aserbajdsjansk sommertid"}\r
-            lg{"aserbajdsjansk tid"}\r
-            ls{"aserbajdsjansk normaltid"}\r
-        }\r
-        "meta:Azores"{\r
-            ld{"asorisk sommertid"}\r
-            lg{"asorisk tid"}\r
-            ls{"asorisk normaltid"}\r
-        }\r
-        "meta:Bangladesh"{\r
-            ld{"bangladeshisk sommertid"}\r
-            lg{"bangladeshisk tid"}\r
-            ls{"bangladeshisk normaltid"}\r
-        }\r
-        "meta:Bhutan"{\r
-            ls{"bhutansk tid"}\r
-        }\r
-        "meta:Bolivia"{\r
-            ls{"boliviansk tid"}\r
-        }\r
-        "meta:Brasilia"{\r
-            ld{"sommertid for Brasilia"}\r
-            lg{"tidssone for Brasilia"}\r
-            ls{"normaltid for Brasilia"}\r
-        }\r
-        "meta:Brunei"{\r
-            ls{"tidssone for Brunei Darussalam"}\r
-        }\r
-        "meta:Cape_Verde"{\r
-            ld{"kappverdisk sommertid"}\r
-            lg{"kappverdisk tid"}\r
-            ls{"kappverdisk normaltid"}\r
-        }\r
-        "meta:Casey"{\r
-            ls{"Casey-tid"}\r
-        }\r
-        "meta:Chamorro"{\r
-            ls{"tidssone for Chamorro"}\r
-        }\r
-        "meta:Chatham"{\r
-            ld{"sommertid for Chatham"}\r
-            lg{"tidssone for Chatham"}\r
-            ls{"normaltid for Chatham"}\r
-        }\r
-        "meta:Chile"{\r
-            ld{"chilensk sommertid"}\r
-            lg{"chilensk tid"}\r
-            ls{"chilensk normaltid"}\r
-        }\r
-        "meta:China"{\r
-            ld{"kinesisk sommertid"}\r
-            lg{"kinesisk tid"}\r
-            ls{"kinesisk normaltid"}\r
-        }\r
-        "meta:Choibalsan"{\r
-            ld{"sommertid for Tsjojbalsan"}\r
-            lg{"tidssone for Tsjojbalsan"}\r
-            ls{"normaltid for Tsjojbalsan"}\r
-        }\r
-        "meta:Christmas"{\r
-            ls{"tidssone for Christmasøya"}\r
-        }\r
-        "meta:Cocos"{\r
-            ls{"tidssone for Kokosøyene"}\r
-        }\r
-        "meta:Colombia"{\r
-            ld{"colombiansk sommertid"}\r
-            lg{"colombiansk tid"}\r
-            ls{"colombiansk normaltid"}\r
-        }\r
-        "meta:Cook"{\r
-            ld{"halv sommertid for Cookøyene"}\r
-            lg{"tidssone for Cookøyene"}\r
-            ls{"normaltid for Cookøyene"}\r
-        }\r
-        "meta:Cuba"{\r
-            ld{"cubansk sommertid"}\r
-            lg{"cubansk tid"}\r
-            ls{"cubansk normaltid"}\r
-        }\r
-        "meta:Davis"{\r
-            ls{"tidssone for Davis"}\r
-        }\r
-        "meta:DumontDUrville"{\r
-            ls{"tidssone for Dumont d’Urville"}\r
-        }\r
-        "meta:East_Timor"{\r
-            ls{"østtimoresisk tid"}\r
-        }\r
-        "meta:Easter"{\r
-            ld{"sommertid for Påskeøya"}\r
-            lg{"tidssone for Påskeøya"}\r
-            ls{"normaltid for Påskeøya"}\r
-        }\r
-        "meta:Ecuador"{\r
-            ls{"ecuadoriansk tid"}\r
-        }\r
-        "meta:Europe_Central"{\r
-            ld{"sentraleuropeisk sommertid"}\r
-            lg{"sentraleuropeisk tid"}\r
-            ls{"sentraleuropeisk normaltid"}\r
-            sd{"CEST"}\r
-            sg{"CET"}\r
-            ss{"CET"}\r
-        }\r
-        "meta:Europe_Eastern"{\r
-            ld{"østeuropeisk sommertid"}\r
-            lg{"østeuropeisk tid"}\r
-            ls{"østeuropeisk normaltid"}\r
-            sd{"EEST"}\r
-            sg{"EET"}\r
-            ss{"EET"}\r
-        }\r
-        "meta:Europe_Further_Eastern"{\r
-            ls{"fjern-østeuropeisk tid"}\r
-        }\r
-        "meta:Europe_Western"{\r
-            ld{"vesteuropeisk sommertid"}\r
-            lg{"vesteuropeisk tid"}\r
-            ls{"vesteuropeisk normaltid"}\r
-            sd{"WEST"}\r
-            sg{"WET"}\r
-            ss{"WET"}\r
-        }\r
-        "meta:Falkland"{\r
-            ld{"sommertid for Falklandsøyene"}\r
-            lg{"tidssone for Falklandsøyene"}\r
-            ls{"normaltid for Falklandsøyene"}\r
-        }\r
-        "meta:Fiji"{\r
-            ld{"fijiansk sommertid"}\r
-            lg{"fijiansk tid"}\r
-            ls{"fijiansk normaltid"}\r
-        }\r
-        "meta:French_Guiana"{\r
-            ls{"tidssone for Fransk Guyana"}\r
-        }\r
-        "meta:French_Southern"{\r
-            ls{"tidssone for De franske sørterritorier"}\r
-        }\r
-        "meta:GMT"{\r
-            ls{"Greenwich middeltid"}\r
-            ss{"GMT"}\r
-        }\r
-        "meta:Galapagos"{\r
-            ls{"tidssone for Galápagosøyene"}\r
-        }\r
-        "meta:Gambier"{\r
-            ls{"tidssone for Gambier"}\r
-        }\r
-        "meta:Georgia"{\r
-            ld{"georgisk sommertid"}\r
-            lg{"georgisk tid"}\r
-            ls{"georgisk normaltid"}\r
-        }\r
-        "meta:Gilbert_Islands"{\r
-            ls{"tidssone for Gilbertøyene"}\r
-        }\r
-        "meta:Greenland_Eastern"{\r
-            ld{"østgrønlandsk sommertid"}\r
-            lg{"østgrønlandsk tid"}\r
-            ls{"østgrønlandsk normaltid"}\r
-        }\r
-        "meta:Greenland_Western"{\r
-            ld{"vestgrønlandsk sommertid"}\r
-            lg{"vestgrønlandsk tid"}\r
-            ls{"vestgrønlandsk normaltid"}\r
-        }\r
-        "meta:Guam"{\r
-            ls{"Guam-tid"}\r
-        }\r
-        "meta:Gulf"{\r
-            ls{"tidssone for Persiabukta"}\r
-        }\r
-        "meta:Guyana"{\r
-            ls{"guyansk tid"}\r
-        }\r
-        "meta:Hawaii_Aleutian"{\r
-            ld{"sommertid for Hawaii og Aleutene"}\r
-            lg{"tidssone for Hawaii og Aleutene"}\r
-            ls{"normaltid for Hawaii og Aleutene"}\r
-            sd{"HADT"}\r
-            sg{"HAT"}\r
-            ss{"HAST"}\r
-        }\r
-        "meta:Hong_Kong"{\r
-            ld{"sommertid for Hongkong"}\r
-            lg{"tidssone for Hongkong"}\r
-            ls{"normaltid for Hongkong"}\r
-        }\r
-        "meta:Hovd"{\r
-            ld{"sommertid for Khovd"}\r
-            lg{"tidssone for Khovd"}\r
-            ls{"normaltid for Khovd"}\r
-        }\r
-        "meta:India"{\r
-            ls{"indisk tid"}\r
-        }\r
-        "meta:Indian_Ocean"{\r
-            ls{"tidssone for Indiahavet"}\r
-        }\r
-        "meta:Indochina"{\r
-            ls{"indokinesisk tid"}\r
-        }\r
-        "meta:Indonesia_Central"{\r
-            ls{"sentralindonesisk tid"}\r
-        }\r
-        "meta:Indonesia_Eastern"{\r
-            ls{"østindonesisk tid"}\r
-        }\r
-        "meta:Indonesia_Western"{\r
-            ls{"vestindonesisk tid"}\r
-        }\r
-        "meta:Iran"{\r
-            ld{"iransk sommertid"}\r
-            lg{"iransk tid"}\r
-            ls{"iransk normaltid"}\r
-        }\r
-        "meta:Irkutsk"{\r
-            ld{"sommertid for Irkutsk"}\r
-            lg{"tidssone for Irkutsk"}\r
-            ls{"normaltid for Irkutsk"}\r
-        }\r
-        "meta:Israel"{\r
-            ld{"israelsk sommertid"}\r
-            lg{"israelsk tid"}\r
-            ls{"israelsk normaltid"}\r
-        }\r
-        "meta:Japan"{\r
-            ld{"japansk sommertid"}\r
-            lg{"japansk tid"}\r
-            ls{"japansk normaltid"}\r
-        }\r
-        "meta:Kamchatka"{\r
-            ld{"Russisk (Petropavlovsk-Kamtsjatskij) sommertid"}\r
-            lg{"Russisk (Petropavlovsk-Kamtsjatskij) tid"}\r
-            ls{"Russisk (Petropavlovsk-Kamtsjatskij) normaltid"}\r
-        }\r
-        "meta:Kazakhstan_Eastern"{\r
-            ls{"østkasakhstansk tid"}\r
-        }\r
-        "meta:Kazakhstan_Western"{\r
-            ls{"vestkasakhstansk tid"}\r
-        }\r
-        "meta:Korea"{\r
-            ld{"koreansk sommertid"}\r
-            lg{"koreansk tid"}\r
-            ls{"koreansk normaltid"}\r
-        }\r
-        "meta:Kosrae"{\r
-            ls{"tidssone for Kosrae"}\r
-        }\r
-        "meta:Krasnoyarsk"{\r
-            ld{"sommertid for Krasnojarsk"}\r
-            lg{"tidssone for Krasnojarsk"}\r
-            ls{"normaltid for Krasnojarsk"}\r
-        }\r
-        "meta:Kyrgystan"{\r
-            ls{"kirgisisk tid"}\r
-        }\r
-        "meta:Lanka"{\r
-            ls{"Lanka-tid"}\r
-        }\r
-        "meta:Line_Islands"{\r
-            ls{"tidssone for Linjeøyene"}\r
-        }\r
-        "meta:Lord_Howe"{\r
-            ld{"sommertid for Lord Howe-øya"}\r
-            lg{"tidssone for Lord Howe-øya"}\r
-            ls{"normaltid for Lord Howe-øya"}\r
-        }\r
-        "meta:Macau"{\r
-            ld{"Macau, sommertid"}\r
-            lg{"Macau-tid"}\r
-            ls{"Macau, standardtid"}\r
-        }\r
-        "meta:Macquarie"{\r
-            ls{"tidssone for Macquarieøya"}\r
-        }\r
-        "meta:Magadan"{\r
-            ld{"sommertid for Magadan"}\r
-            lg{"tidssone for Magadan"}\r
-            ls{"normaltid for Magadan"}\r
-        }\r
-        "meta:Malaysia"{\r
-            ls{"malaysisk tid"}\r
-        }\r
-        "meta:Maldives"{\r
-            ls{"maldivisk tid"}\r
-        }\r
-        "meta:Marquesas"{\r
-            ls{"tidssone for Marquesasøyene"}\r
-        }\r
-        "meta:Marshall_Islands"{\r
-            ls{"marshallesisk tid"}\r
-        }\r
-        "meta:Mauritius"{\r
-            ld{"mauritisk sommertid"}\r
-            lg{"mauritisk tid"}\r
-            ls{"mauritisk normaltid"}\r
-        }\r
-        "meta:Mawson"{\r
-            ls{"tidssone for Mawson"}\r
-        }\r
-        "meta:Mexico_Northwest"{\r
-            ld{"sommertid for nordvestlige Mexico"}\r
-            lg{"tidssone for nordvestlige Mexico"}\r
-            ls{"normaltid for nordvestlige Mexico"}\r
-        }\r
-        "meta:Mexico_Pacific"{\r
-            ld{"sommertid for den meksikanske Stillehavskysten"}\r
-            lg{"tidssone for den meksikanske Stillehavskysten"}\r
-            ls{"normaltid for den meksikanske Stillehavskysten"}\r
-        }\r
-        "meta:Mongolia"{\r
-            ld{"sommertid for Ulan Bator"}\r
-            lg{"tidssone for Ulan Bator"}\r
-            ls{"normaltid for Ulan Bator"}\r
-        }\r
-        "meta:Moscow"{\r
-            ld{"sommertid for Moskva"}\r
-            lg{"tidssone for Moskva"}\r
-            ls{"normaltid for Moskva"}\r
-        }\r
-        "meta:Myanmar"{\r
-            ls{"myanmarsk tid"}\r
-        }\r
-        "meta:Nauru"{\r
-            ls{"naurisk tid"}\r
-        }\r
-        "meta:Nepal"{\r
-            ls{"nepalsk tid"}\r
-        }\r
-        "meta:New_Caledonia"{\r
-            ld{"kaledonsk sommertid"}\r
-            lg{"kaledonsk tid"}\r
-            ls{"kaledonsk normaltid"}\r
-        }\r
-        "meta:New_Zealand"{\r
-            ld{"newzealandsk sommertid"}\r
-            lg{"newzealandsk tid"}\r
-            ls{"newzealandsk normaltid"}\r
-        }\r
-        "meta:Newfoundland"{\r
-            ld{"sommertid for Newfoundland"}\r
-            lg{"tidssone for Newfoundland"}\r
-            ls{"normaltid for Newfoundland"}\r
-        }\r
-        "meta:Niue"{\r
-            ls{"tidssone for Niue"}\r
-        }\r
-        "meta:Norfolk"{\r
-            ld{"sommertid for Norfolkøya"}\r
-            lg{"tidssone for Norfolkøya"}\r
-            ls{"normaltid for Norfolkøya"}\r
-        }\r
-        "meta:Noronha"{\r
-            ld{"sommertid for Fernando de Noronha"}\r
-            lg{"tidssone for Fernando de Noronha"}\r
-            ls{"normaltid for Fernando de Noronha"}\r
-        }\r
-        "meta:North_Mariana"{\r
-            ls{"Nord-Marianene-tid"}\r
-        }\r
-        "meta:Novosibirsk"{\r
-            ld{"sommertid for Novosibirsk"}\r
-            lg{"tidssone for Novosibirsk"}\r
-            ls{"normaltid for Novosibirsk"}\r
-        }\r
-        "meta:Omsk"{\r
-            ld{"sommertid for Omsk"}\r
-            lg{"tidssone for Omsk"}\r
-            ls{"normaltid for Omsk"}\r
-        }\r
-        "meta:Pakistan"{\r
-            ld{"pakistansk sommertid"}\r
-            lg{"pakistansk tid"}\r
-            ls{"pakistansk normaltid"}\r
-        }\r
-        "meta:Palau"{\r
-            ls{"palauisk tid"}\r
-        }\r
-        "meta:Papua_New_Guinea"{\r
-            ls{"papuansk tid"}\r
-        }\r
-        "meta:Paraguay"{\r
-            ld{"paraguayansk sommertid"}\r
-            lg{"paraguayansk tid"}\r
-            ls{"paraguayansk normaltid"}\r
-        }\r
-        "meta:Peru"{\r
-            ld{"peruansk sommertid"}\r
-            lg{"peruansk tid"}\r
-            ls{"peruansk normaltid"}\r
-        }\r
-        "meta:Philippines"{\r
-            ld{"filippinsk sommertid"}\r
-            lg{"filippinsk tid"}\r
-            ls{"filippinsk normaltid"}\r
-        }\r
-        "meta:Phoenix_Islands"{\r
-            ls{"tidssone for Phoenixøyene"}\r
-        }\r
-        "meta:Pierre_Miquelon"{\r
-            ld{"sommertid for Saint-Pierre-et-Miquelon"}\r
-            lg{"tidssone for Saint-Pierre-et-Miquelon"}\r
-            ls{"normaltid for Saint-Pierre-et-Miquelon"}\r
-        }\r
-        "meta:Pitcairn"{\r
-            ls{"tidssone for Pitcairn"}\r
-        }\r
-        "meta:Ponape"{\r
-            ls{"tidssone for Pohnpei"}\r
-        }\r
-        "meta:Pyongyang"{\r
-            ls{"tidssone for Pyongyang"}\r
-        }\r
-        "meta:Qyzylorda"{\r
-            ld{"Qyzylorda, sommertid"}\r
-            lg{"Qyzylorda-tid"}\r
-            ls{"Qyzylorda, standardtid"}\r
-        }\r
-        "meta:Reunion"{\r
-            ls{"tidssone for Réunion"}\r
-        }\r
-        "meta:Rothera"{\r
-            ls{"tidssone for Rothera"}\r
-        }\r
-        "meta:Sakhalin"{\r
-            ld{"sommertid for Sakhalin"}\r
-            lg{"tidssone for Sakhalin"}\r
-            ls{"normaltid for Sakhalin"}\r
-        }\r
-        "meta:Samara"{\r
-            ld{"Russisk (Samara) sommertid"}\r
-            lg{"Russisk (Samara) tid"}\r
-            ls{"Russisk (Samara) normaltid"}\r
-        }\r
-        "meta:Samoa"{\r
-            ld{"samoansk sommertid"}\r
-            lg{"samoansk tid"}\r
-            ls{"samoansk normaltid"}\r
-        }\r
-        "meta:Seychelles"{\r
-            ls{"seychellisk tid"}\r
-        }\r
-        "meta:Singapore"{\r
-            ls{"singaporsk tid"}\r
-        }\r
-        "meta:Solomon"{\r
-            ls{"salomonsk tid"}\r
-        }\r
-        "meta:South_Georgia"{\r
-            ls{"tidssone for Sør-Georgia"}\r
-        }\r
-        "meta:Suriname"{\r
-            ls{"surinamsk tid"}\r
-        }\r
-        "meta:Syowa"{\r
-            ls{"tidssone for Syowa"}\r
-        }\r
-        "meta:Tahiti"{\r
-            ls{"tahitisk tid"}\r
-        }\r
-        "meta:Taipei"{\r
-            ld{"sommertid for Taipei"}\r
-            lg{"tidssone for Taipei"}\r
-            ls{"normaltid for Taipei"}\r
-        }\r
-        "meta:Tajikistan"{\r
-            ls{"tadsjikisk tid"}\r
-        }\r
-        "meta:Tokelau"{\r
-            ls{"tidssone for Tokelau"}\r
-        }\r
-        "meta:Tonga"{\r
-            ld{"tongansk sommertid"}\r
-            lg{"tongansk tid"}\r
-            ls{"tongansk normaltid"}\r
-        }\r
-        "meta:Truk"{\r
-            ls{"tidssone for Chuukøyene"}\r
-        }\r
-        "meta:Turkmenistan"{\r
-            ld{"turkmensk sommertid"}\r
-            lg{"turkmensk tid"}\r
-            ls{"turkmensk normaltid"}\r
-        }\r
-        "meta:Tuvalu"{\r
-            ls{"tuvalsk tid"}\r
-        }\r
-        "meta:Uruguay"{\r
-            ld{"uruguayansk sommertid"}\r
-            lg{"uruguayansk tid"}\r
-            ls{"uruguayansk normaltid"}\r
-        }\r
-        "meta:Uzbekistan"{\r
-            ld{"usbekisk sommertid"}\r
-            lg{"usbekisk tid"}\r
-            ls{"usbekisk normaltid"}\r
-        }\r
-        "meta:Vanuatu"{\r
-            ld{"vanuatisk sommertid"}\r
-            lg{"vanuatisk tid"}\r
-            ls{"vanuatisk normaltid"}\r
-        }\r
-        "meta:Venezuela"{\r
-            ls{"venezuelansk tid"}\r
-        }\r
-        "meta:Vladivostok"{\r
-            ld{"sommertid for Vladivostok"}\r
-            lg{"tidssone for Vladivostok"}\r
-            ls{"normaltid for Vladivostok"}\r
-        }\r
-        "meta:Volgograd"{\r
-            ld{"sommertid for Volgograd"}\r
-            lg{"tidssone for Volgograd"}\r
-            ls{"normaltid for Volgograd"}\r
-        }\r
-        "meta:Vostok"{\r
-            ls{"tidssone for Vostok"}\r
-        }\r
-        "meta:Wake"{\r
-            ls{"tidssone for Wake Island"}\r
-        }\r
-        "meta:Wallis"{\r
-            ls{"tidssone for Wallis- og Futunaøyene"}\r
-        }\r
-        "meta:Yakutsk"{\r
-            ld{"sommertid for Jakutsk"}\r
-            lg{"tidssone for Jakutsk"}\r
-            ls{"normaltid for Jakutsk"}\r
-        }\r
-        "meta:Yekaterinburg"{\r
-            ld{"sommertid for Jekaterinburg"}\r
-            lg{"tidssone for Jekaterinburg"}\r
-            ls{"normaltid for Jekaterinburg"}\r
-        }\r
-        fallbackFormat{"{1} ({0})"}\r
-        gmtFormat{"GMT{0}"}\r
-        gmtZeroFormat{"GMT"}\r
-        hourFormat{"+HH:mm;-HH:mm"}\r
-        regionFormat{"tidssone for {0}"}\r
-        regionFormatDaylight{"sommertid – {0}"}\r
-        regionFormatStandard{"normaltid – {0}"}\r
-    }\r
+    %%Parent{"no"}\r
 }\r
diff --git a/source/data/zone/nb_NO.txt b/source/data/zone/nb_NO.txt
deleted file mode 100644 (file)
index 3307fc3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html\r
-// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
-/**\r
- * generated alias target\r
- */\r
-nb_NO{\r
-    ___{""}\r
-}\r
index 5227bbc..d58ff52 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 nn{\r
+    %%Parent{"no"}\r
     zoneStrings{\r
-        "Africa:Abidjan"{\r
-            ec{"Abidjan"}\r
-        }\r
-        "Africa:Accra"{\r
-            ec{"Accra"}\r
-        }\r
-        "Africa:Addis_Ababa"{\r
-            ec{"Addis Abeba"}\r
-        }\r
-        "Africa:Algiers"{\r
-            ec{"Alger"}\r
-        }\r
-        "Africa:Asmera"{\r
-            ec{"Asmara"}\r
-        }\r
-        "Africa:Bamako"{\r
-            ec{"Bamako"}\r
-        }\r
-        "Africa:Bangui"{\r
-            ec{"Bangui"}\r
-        }\r
-        "Africa:Banjul"{\r
-            ec{"Banjul"}\r
-        }\r
-        "Africa:Bissau"{\r
-            ec{"Bissau"}\r
-        }\r
-        "Africa:Blantyre"{\r
-            ec{"Blantyre"}\r
-        }\r
-        "Africa:Brazzaville"{\r
-            ec{"Brazzaville"}\r
-        }\r
-        "Africa:Bujumbura"{\r
-            ec{"Bujumbura"}\r
-        }\r
-        "Africa:Cairo"{\r
-            ec{"Kairo"}\r
-        }\r
-        "Africa:Casablanca"{\r
-            ec{"Casablanca"}\r
-        }\r
-        "Africa:Ceuta"{\r
-            ec{"Ceuta"}\r
-        }\r
-        "Africa:Conakry"{\r
-            ec{"Conakry"}\r
-        }\r
-        "Africa:Dakar"{\r
-            ec{"Dakar"}\r
-        }\r
-        "Africa:Dar_es_Salaam"{\r
-            ec{"Dar-es-Salaam"}\r
-        }\r
-        "Africa:Djibouti"{\r
-            ec{"Djibouti"}\r
-        }\r
-        "Africa:Douala"{\r
-            ec{"Douala"}\r
-        }\r
-        "Africa:El_Aaiun"{\r
-            ec{"El Aaiún"}\r
-        }\r
-        "Africa:Freetown"{\r
-            ec{"Freetown"}\r
-        }\r
-        "Africa:Gaborone"{\r
-            ec{"Gaborone"}\r
-        }\r
-        "Africa:Harare"{\r
-            ec{"Harare"}\r
-        }\r
-        "Africa:Johannesburg"{\r
-            ec{"Johannesburg"}\r
-        }\r
-        "Africa:Juba"{\r
-            ec{"Juba"}\r
-        }\r
-        "Africa:Kampala"{\r
-            ec{"Kampala"}\r
-        }\r
-        "Africa:Khartoum"{\r
-            ec{"Khartoum"}\r
-        }\r
-        "Africa:Kigali"{\r
-            ec{"Kigali"}\r
-        }\r
-        "Africa:Kinshasa"{\r
-            ec{"Kinshasa"}\r
-        }\r
-        "Africa:Lagos"{\r
-            ec{"Lagos"}\r
-        }\r
-        "Africa:Libreville"{\r
-            ec{"Libreville"}\r
-        }\r
-        "Africa:Lome"{\r
-            ec{"Lomé"}\r
-        }\r
-        "Africa:Luanda"{\r
-            ec{"Luanda"}\r
-        }\r
-        "Africa:Lubumbashi"{\r
-            ec{"Lubumbashi"}\r
-        }\r
-        "Africa:Lusaka"{\r
-            ec{"Lusaka"}\r
-        }\r
-        "Africa:Malabo"{\r
-            ec{"Malabo"}\r
-        }\r
-        "Africa:Maputo"{\r
-            ec{"Maputo"}\r
-        }\r
-        "Africa:Maseru"{\r
-            ec{"Maseru"}\r
-        }\r
-        "Africa:Mbabane"{\r
-            ec{"Mbabane"}\r
-        }\r
-        "Africa:Mogadishu"{\r
-            ec{"Mogadishu"}\r
-        }\r
-        "Africa:Monrovia"{\r
-            ec{"Monrovia"}\r
-        }\r
-        "Africa:Nairobi"{\r
-            ec{"Nairobi"}\r
-        }\r
-        "Africa:Ndjamena"{\r
-            ec{"Ndjamena"}\r
-        }\r
-        "Africa:Niamey"{\r
-            ec{"Niamey"}\r
-        }\r
-        "Africa:Nouakchott"{\r
-            ec{"Nouakchott"}\r
-        }\r
-        "Africa:Ouagadougou"{\r
-            ec{"Ouagadougou"}\r
-        }\r
-        "Africa:Porto-Novo"{\r
-            ec{"Porto-Novo"}\r
-        }\r
-        "Africa:Sao_Tome"{\r
-            ec{"São Tomé"}\r
-        }\r
-        "Africa:Tripoli"{\r
-            ec{"Tripoli"}\r
-        }\r
-        "Africa:Tunis"{\r
-            ec{"Tunis"}\r
-        }\r
-        "Africa:Windhoek"{\r
-            ec{"Windhoek"}\r
-        }\r
-        "America:Adak"{\r
-            ec{"Adak"}\r
-        }\r
-        "America:Anchorage"{\r
-            ec{"Anchorage"}\r
-        }\r
-        "America:Anguilla"{\r
-            ec{"Anguilla"}\r
-        }\r
-        "America:Antigua"{\r
-            ec{"Antigua"}\r
-        }\r
-        "America:Araguaina"{\r
-            ec{"Araguaína"}\r
-        }\r
-        "America:Argentina:La_Rioja"{\r
-            ec{"La Rioja"}\r
-        }\r
-        "America:Argentina:Rio_Gallegos"{\r
-            ec{"Rio Gallegos"}\r
-        }\r
-        "America:Argentina:Salta"{\r
-            ec{"Salta"}\r
-        }\r
-        "America:Argentina:San_Juan"{\r
-            ec{"San Juan"}\r
-        }\r
-        "America:Argentina:San_Luis"{\r
-            ec{"San Luis"}\r
-        }\r
-        "America:Argentina:Tucuman"{\r
-            ec{"Tucumán"}\r
-        }\r
-        "America:Argentina:Ushuaia"{\r
-            ec{"Ushuaia"}\r
-        }\r
-        "America:Aruba"{\r
-            ec{"Aruba"}\r
-        }\r
-        "America:Asuncion"{\r
-            ec{"Asunción"}\r
-        }\r
-        "America:Bahia"{\r
-            ec{"Bahia"}\r
-        }\r
-        "America:Bahia_Banderas"{\r
-            ec{"Bahía Banderas"}\r
-        }\r
-        "America:Barbados"{\r
-            ec{"Barbados"}\r
-        }\r
-        "America:Belem"{\r
-            ec{"Belém"}\r
-        }\r
-        "America:Belize"{\r
-            ec{"Belize"}\r
-        }\r
-        "America:Blanc-Sablon"{\r
-            ec{"Blanc-Sablon"}\r
-        }\r
-        "America:Boa_Vista"{\r
-            ec{"Boa Vista"}\r
-        }\r
-        "America:Bogota"{\r
-            ec{"Bogotá"}\r
-        }\r
-        "America:Boise"{\r
-            ec{"Boise"}\r
-        }\r
-        "America:Buenos_Aires"{\r
-            ec{"Buenos Aires"}\r
-        }\r
-        "America:Cambridge_Bay"{\r
-            ec{"Cambridge Bay"}\r
-        }\r
-        "America:Campo_Grande"{\r
-            ec{"Campo Grande"}\r
-        }\r
-        "America:Cancun"{\r
-            ec{"Cancún"}\r
-        }\r
-        "America:Caracas"{\r
-            ec{"Caracas"}\r
-        }\r
-        "America:Catamarca"{\r
-            ec{"Catamarca"}\r
-        }\r
-        "America:Cayenne"{\r
-            ec{"Cayenne"}\r
-        }\r
         "America:Cayman"{\r
             ec{"Caymanøyane"}\r
         }\r
-        "America:Chicago"{\r
-            ec{"Chicago"}\r
-        }\r
-        "America:Chihuahua"{\r
-            ec{"Chihuahua"}\r
-        }\r
-        "America:Coral_Harbour"{\r
-            ec{"Atikokan"}\r
-        }\r
-        "America:Cordoba"{\r
-            ec{"Córdoba"}\r
-        }\r
-        "America:Costa_Rica"{\r
-            ec{"Costa Rica"}\r
-        }\r
-        "America:Creston"{\r
-            ec{"Creston"}\r
-        }\r
         "America:Cuiaba"{\r
             ec{"Cuiaba"}\r
         }\r
-        "America:Curacao"{\r
-            ec{"Curaçao"}\r
-        }\r
-        "America:Danmarkshavn"{\r
-            ec{"Danmarkshavn"}\r
-        }\r
-        "America:Dawson"{\r
-            ec{"Dawson"}\r
-        }\r
-        "America:Dawson_Creek"{\r
-            ec{"Dawson Creek"}\r
-        }\r
-        "America:Denver"{\r
-            ec{"Denver"}\r
-        }\r
-        "America:Detroit"{\r
-            ec{"Detroit"}\r
-        }\r
-        "America:Dominica"{\r
-            ec{"Dominica"}\r
-        }\r
-        "America:Edmonton"{\r
-            ec{"Edmonton"}\r
-        }\r
-        "America:Eirunepe"{\r
-            ec{"Eirunepe"}\r
-        }\r
-        "America:El_Salvador"{\r
-            ec{"El Salvador"}\r
-        }\r
-        "America:Fort_Nelson"{\r
-            ec{"Fort Nelson"}\r
-        }\r
-        "America:Fortaleza"{\r
-            ec{"Fortaleza"}\r
-        }\r
-        "America:Glace_Bay"{\r
-            ec{"Glace Bay"}\r
-        }\r
-        "America:Godthab"{\r
-            ec{"Nuuk"}\r
-        }\r
-        "America:Goose_Bay"{\r
-            ec{"Goose Bay"}\r
-        }\r
-        "America:Grand_Turk"{\r
-            ec{"Grand Turk"}\r
-        }\r
-        "America:Grenada"{\r
-            ec{"Grenada"}\r
-        }\r
-        "America:Guadeloupe"{\r
-            ec{"Guadeloupe"}\r
-        }\r
-        "America:Guatemala"{\r
-            ec{"Guatemala"}\r
-        }\r
-        "America:Guayaquil"{\r
-            ec{"Guayaquil"}\r
-        }\r
-        "America:Guyana"{\r
-            ec{"Guyana"}\r
-        }\r
-        "America:Halifax"{\r
-            ec{"Halifax"}\r
-        }\r
-        "America:Havana"{\r
-            ec{"Havana"}\r
-        }\r
-        "America:Hermosillo"{\r
-            ec{"Hermosillo"}\r
-        }\r
-        "America:Indiana:Knox"{\r
-            ec{"Knox, Indiana"}\r
-        }\r
-        "America:Indiana:Marengo"{\r
-            ec{"Marengo, Indiana"}\r
-        }\r
-        "America:Indiana:Petersburg"{\r
-            ec{"Petersburg, Indiana"}\r
-        }\r
-        "America:Indiana:Tell_City"{\r
-            ec{"Tell City, Indiana"}\r
-        }\r
-        "America:Indiana:Vevay"{\r
-            ec{"Vevay, Indiana"}\r
-        }\r
-        "America:Indiana:Vincennes"{\r
-            ec{"Vincennes, Indiana"}\r
-        }\r
-        "America:Indiana:Winamac"{\r
-            ec{"Winamac, Indiana"}\r
-        }\r
-        "America:Indianapolis"{\r
-            ec{"Indianapolis"}\r
-        }\r
-        "America:Inuvik"{\r
-            ec{"Inuvik"}\r
-        }\r
-        "America:Iqaluit"{\r
-            ec{"Iqaluit"}\r
-        }\r
-        "America:Jamaica"{\r
-            ec{"Jamaica"}\r
-        }\r
-        "America:Jujuy"{\r
-            ec{"Jujuy"}\r
-        }\r
-        "America:Juneau"{\r
-            ec{"Juneau"}\r
-        }\r
-        "America:Kentucky:Monticello"{\r
-            ec{"Monticello, Kentucky"}\r
-        }\r
-        "America:Kralendijk"{\r
-            ec{"Kralendijk"}\r
-        }\r
-        "America:La_Paz"{\r
-            ec{"La Paz"}\r
-        }\r
-        "America:Lima"{\r
-            ec{"Lima"}\r
-        }\r
-        "America:Los_Angeles"{\r
-            ec{"Los Angeles"}\r
-        }\r
-        "America:Louisville"{\r
-            ec{"Louisville"}\r
-        }\r
-        "America:Lower_Princes"{\r
-            ec{"Lower Prince’s Quarter"}\r
-        }\r
-        "America:Maceio"{\r
-            ec{"Maceió"}\r
-        }\r
-        "America:Managua"{\r
-            ec{"Managua"}\r
-        }\r
-        "America:Manaus"{\r
-            ec{"Manaus"}\r
-        }\r
-        "America:Marigot"{\r
-            ec{"Marigot"}\r
-        }\r
-        "America:Martinique"{\r
-            ec{"Martinique"}\r
-        }\r
-        "America:Matamoros"{\r
-            ec{"Matamoros"}\r
-        }\r
-        "America:Mazatlan"{\r
-            ec{"Mazatlan"}\r
-        }\r
-        "America:Mendoza"{\r
-            ec{"Mendoza"}\r
-        }\r
-        "America:Menominee"{\r
-            ec{"Menominee"}\r
-        }\r
         "America:Merida"{\r
             ec{"Merida"}\r
         }\r
-        "America:Metlakatla"{\r
-            ec{"Metlakatla"}\r
-        }\r
-        "America:Mexico_City"{\r
-            ec{"Mexico by"}\r
-        }\r
-        "America:Miquelon"{\r
-            ec{"Miquelon"}\r
-        }\r
-        "America:Moncton"{\r
-            ec{"Moncton"}\r
-        }\r
-        "America:Monterrey"{\r
-            ec{"Monterrey"}\r
-        }\r
-        "America:Montevideo"{\r
-            ec{"Montevideo"}\r
-        }\r
-        "America:Montserrat"{\r
-            ec{"Montserrat"}\r
-        }\r
-        "America:Nassau"{\r
-            ec{"Nassau"}\r
-        }\r
-        "America:New_York"{\r
-            ec{"New York"}\r
-        }\r
-        "America:Nipigon"{\r
-            ec{"Nipigon"}\r
-        }\r
-        "America:Nome"{\r
-            ec{"Nome"}\r
-        }\r
-        "America:Noronha"{\r
-            ec{"Noronha"}\r
-        }\r
-        "America:North_Dakota:Beulah"{\r
-            ec{"Beulah, Nord-Dakota"}\r
-        }\r
-        "America:North_Dakota:Center"{\r
-            ec{"Center, Nord-Dakota"}\r
-        }\r
-        "America:North_Dakota:New_Salem"{\r
-            ec{"New Salem, Nord-Dakota"}\r
-        }\r
-        "America:Ojinaga"{\r
-            ec{"Ojinaga"}\r
-        }\r
-        "America:Panama"{\r
-            ec{"Panama"}\r
-        }\r
-        "America:Pangnirtung"{\r
-            ec{"Pangnirtung"}\r
-        }\r
-        "America:Paramaribo"{\r
-            ec{"Paramaribo"}\r
-        }\r
-        "America:Phoenix"{\r
-            ec{"Phoenix"}\r
-        }\r
-        "America:Port-au-Prince"{\r
-            ec{"Port-au-Prince"}\r
-        }\r
-        "America:Port_of_Spain"{\r
-            ec{"Port of Spain"}\r
-        }\r
-        "America:Porto_Velho"{\r
-            ec{"Porto Velho"}\r
-        }\r
-        "America:Puerto_Rico"{\r
-            ec{"Puerto Rico"}\r
-        }\r
-        "America:Punta_Arenas"{\r
-            ec{"Punta Arenas"}\r
-        }\r
-        "America:Rainy_River"{\r
-            ec{"Rainy River"}\r
-        }\r
-        "America:Rankin_Inlet"{\r
-            ec{"Rankin Inlet"}\r
-        }\r
-        "America:Recife"{\r
-            ec{"Recife"}\r
-        }\r
-        "America:Regina"{\r
-            ec{"Regina"}\r
-        }\r
-        "America:Resolute"{\r
-            ec{"Resolute"}\r
-        }\r
-        "America:Rio_Branco"{\r
-            ec{"Rio Branco"}\r
-        }\r
-        "America:Santarem"{\r
-            ec{"Santarém"}\r
-        }\r
-        "America:Santiago"{\r
-            ec{"Santiago"}\r
-        }\r
-        "America:Santo_Domingo"{\r
-            ec{"Santo Domingo"}\r
-        }\r
-        "America:Sao_Paulo"{\r
-            ec{"São Paulo"}\r
-        }\r
-        "America:Scoresbysund"{\r
-            ec{"Ittoqqortoormiit"}\r
-        }\r
-        "America:Sitka"{\r
-            ec{"Sitka"}\r
-        }\r
-        "America:St_Barthelemy"{\r
-            ec{"Saint-Barthélemy"}\r
-        }\r
-        "America:St_Johns"{\r
-            ec{"St. John’s"}\r
-        }\r
-        "America:St_Kitts"{\r
-            ec{"St. Kitts"}\r
-        }\r
-        "America:St_Lucia"{\r
-            ec{"St. Lucia"}\r
-        }\r
-        "America:St_Thomas"{\r
-            ec{"St. Thomas"}\r
-        }\r
-        "America:St_Vincent"{\r
-            ec{"St. Vincent"}\r
-        }\r
-        "America:Swift_Current"{\r
-            ec{"Swift Current"}\r
-        }\r
-        "America:Tegucigalpa"{\r
-            ec{"Tegucigalpa"}\r
-        }\r
-        "America:Thule"{\r
-            ec{"Thule"}\r
-        }\r
-        "America:Thunder_Bay"{\r
-            ec{"Thunder Bay"}\r
-        }\r
-        "America:Tijuana"{\r
-            ec{"Tijuana"}\r
-        }\r
-        "America:Toronto"{\r
-            ec{"Toronto"}\r
-        }\r
-        "America:Tortola"{\r
-            ec{"Tortola"}\r
-        }\r
-        "America:Vancouver"{\r
-            ec{"Vancouver"}\r
-        }\r
-        "America:Whitehorse"{\r
-            ec{"Whitehorse"}\r
-        }\r
-        "America:Winnipeg"{\r
-            ec{"Winnipeg"}\r
-        }\r
-        "America:Yakutat"{\r
-            ec{"Yakutat"}\r
-        }\r
-        "America:Yellowknife"{\r
-            ec{"Yellowknife"}\r
-        }\r
-        "Antarctica:Casey"{\r
-            ec{"Casey"}\r
-        }\r
-        "Antarctica:Davis"{\r
-            ec{"Davis"}\r
-        }\r
-        "Antarctica:DumontDUrville"{\r
-            ec{"Dumont d’Urville"}\r
-        }\r
-        "Antarctica:Macquarie"{\r
-            ec{"Macquarie"}\r
-        }\r
-        "Antarctica:Mawson"{\r
-            ec{"Mawson"}\r
-        }\r
-        "Antarctica:McMurdo"{\r
-            ec{"McMurdo"}\r
-        }\r
-        "Antarctica:Palmer"{\r
-            ec{"Palmer"}\r
-        }\r
-        "Antarctica:Rothera"{\r
-            ec{"Rothera"}\r
-        }\r
-        "Antarctica:Syowa"{\r
-            ec{"Syowa"}\r
-        }\r
-        "Antarctica:Troll"{\r
-            ec{"Troll"}\r
-        }\r
-        "Antarctica:Vostok"{\r
-            ec{"Vostok"}\r
-        }\r
-        "Arctic:Longyearbyen"{\r
-            ec{"Longyearbyen"}\r
-        }\r
-        "Asia:Aden"{\r
-            ec{"Aden"}\r
-        }\r
-        "Asia:Almaty"{\r
-            ec{"Almaty"}\r
-        }\r
-        "Asia:Amman"{\r
-            ec{"Amman"}\r
-        }\r
-        "Asia:Anadyr"{\r
-            ec{"Anadyr"}\r
-        }\r
-        "Asia:Aqtau"{\r
-            ec{"Aktau"}\r
-        }\r
         "Asia:Aqtobe"{\r
             ec{"Aktobe"}\r
         }\r
         "Asia:Ashgabat"{\r
             ec{"Asjgabat"}\r
         }\r
-        "Asia:Atyrau"{\r
-            ec{"Atyrau"}\r
-        }\r
-        "Asia:Baghdad"{\r
-            ec{"Bagdad"}\r
-        }\r
-        "Asia:Bahrain"{\r
-            ec{"Bahrain"}\r
-        }\r
-        "Asia:Baku"{\r
-            ec{"Baku"}\r
-        }\r
-        "Asia:Bangkok"{\r
-            ec{"Bangkok"}\r
-        }\r
-        "Asia:Barnaul"{\r
-            ec{"Barnaul"}\r
-        }\r
-        "Asia:Beirut"{\r
-            ec{"Beirut"}\r
-        }\r
-        "Asia:Bishkek"{\r
-            ec{"Bisjkek"}\r
-        }\r
-        "Asia:Brunei"{\r
-            ec{"Brunei"}\r
-        }\r
-        "Asia:Calcutta"{\r
-            ec{"Kolkata"}\r
-        }\r
-        "Asia:Chita"{\r
-            ec{"Tsjita"}\r
-        }\r
         "Asia:Choibalsan"{\r
             ec{"Tsjojbalsan"}\r
         }\r
-        "Asia:Colombo"{\r
-            ec{"Colombo"}\r
-        }\r
-        "Asia:Damascus"{\r
-            ec{"Damaskus"}\r
-        }\r
-        "Asia:Dhaka"{\r
-            ec{"Dhaka"}\r
-        }\r
-        "Asia:Dili"{\r
-            ec{"Dili"}\r
-        }\r
-        "Asia:Dubai"{\r
-            ec{"Dubai"}\r
-        }\r
-        "Asia:Dushanbe"{\r
-            ec{"Dusjanbe"}\r
-        }\r
-        "Asia:Famagusta"{\r
-            ec{"Famagusta"}\r
-        }\r
-        "Asia:Gaza"{\r
-            ec{"Gaza"}\r
-        }\r
-        "Asia:Hebron"{\r
-            ec{"Hebron"}\r
-        }\r
-        "Asia:Hong_Kong"{\r
-            ec{"Hongkong"}\r
-        }\r
         "Asia:Hovd"{\r
             ec{"Khovd"}\r
         }\r
-        "Asia:Irkutsk"{\r
-            ec{"Irkutsk"}\r
-        }\r
-        "Asia:Jakarta"{\r
-            ec{"Jakarta"}\r
-        }\r
-        "Asia:Jayapura"{\r
-            ec{"Jajapura"}\r
-        }\r
-        "Asia:Jerusalem"{\r
-            ec{"Jerusalem"}\r
-        }\r
-        "Asia:Kabul"{\r
-            ec{"Kabul"}\r
-        }\r
-        "Asia:Kamchatka"{\r
-            ec{"Kamtsjatka"}\r
-        }\r
-        "Asia:Karachi"{\r
-            ec{"Karachi"}\r
-        }\r
-        "Asia:Katmandu"{\r
-            ec{"Katmandu"}\r
-        }\r
-        "Asia:Khandyga"{\r
-            ec{"Khandyga"}\r
-        }\r
-        "Asia:Krasnoyarsk"{\r
-            ec{"Krasnojarsk"}\r
-        }\r
-        "Asia:Kuala_Lumpur"{\r
-            ec{"Kuala Lumpur"}\r
-        }\r
-        "Asia:Kuching"{\r
-            ec{"Kuching"}\r
-        }\r
-        "Asia:Kuwait"{\r
-            ec{"Kuwait"}\r
-        }\r
-        "Asia:Macau"{\r
-            ec{"Macao"}\r
-        }\r
-        "Asia:Magadan"{\r
-            ec{"Magadan"}\r
-        }\r
-        "Asia:Makassar"{\r
-            ec{"Makassar"}\r
-        }\r
-        "Asia:Manila"{\r
-            ec{"Manila"}\r
-        }\r
-        "Asia:Muscat"{\r
-            ec{"Muskat"}\r
-        }\r
-        "Asia:Nicosia"{\r
-            ec{"Nikosia"}\r
-        }\r
-        "Asia:Novokuznetsk"{\r
-            ec{"Novokuznetsk"}\r
-        }\r
-        "Asia:Novosibirsk"{\r
-            ec{"Novosibirsk"}\r
-        }\r
-        "Asia:Omsk"{\r
-            ec{"Omsk"}\r
-        }\r
-        "Asia:Oral"{\r
-            ec{"Oral"}\r
-        }\r
-        "Asia:Phnom_Penh"{\r
-            ec{"Phnom Penh"}\r
-        }\r
-        "Asia:Pontianak"{\r
-            ec{"Pontianak"}\r
-        }\r
-        "Asia:Pyongyang"{\r
-            ec{"Pyongyang"}\r
-        }\r
-        "Asia:Qatar"{\r
-            ec{"Qatar"}\r
-        }\r
-        "Asia:Qostanay"{\r
-            ec{"Kostanaj"}\r
-        }\r
-        "Asia:Qyzylorda"{\r
-            ec{"Kyzylorda"}\r
-        }\r
         "Asia:Rangoon"{\r
             ec{"Yangôn"}\r
         }\r
-        "Asia:Riyadh"{\r
-            ec{"Riyadh"}\r
-        }\r
-        "Asia:Saigon"{\r
-            ec{"Ho Chi Minh-byen"}\r
-        }\r
-        "Asia:Sakhalin"{\r
-            ec{"Sakhalin"}\r
-        }\r
-        "Asia:Samarkand"{\r
-            ec{"Samarkand"}\r
-        }\r
-        "Asia:Seoul"{\r
-            ec{"Seoul"}\r
-        }\r
-        "Asia:Shanghai"{\r
-            ec{"Shanghai"}\r
-        }\r
-        "Asia:Singapore"{\r
-            ec{"Singapore"}\r
-        }\r
-        "Asia:Srednekolymsk"{\r
-            ec{"Srednekolymsk"}\r
-        }\r
-        "Asia:Taipei"{\r
-            ec{"Taipei"}\r
-        }\r
-        "Asia:Tashkent"{\r
-            ec{"Tasjkent"}\r
-        }\r
-        "Asia:Tbilisi"{\r
-            ec{"Tbilisi"}\r
-        }\r
-        "Asia:Tehran"{\r
-            ec{"Teheran"}\r
-        }\r
-        "Asia:Thimphu"{\r
-            ec{"Thimpu"}\r
-        }\r
-        "Asia:Tokyo"{\r
-            ec{"Tokyo"}\r
-        }\r
-        "Asia:Tomsk"{\r
-            ec{"Tomsk"}\r
-        }\r
-        "Asia:Ulaanbaatar"{\r
-            ec{"Ulan Bator"}\r
-        }\r
-        "Asia:Urumqi"{\r
-            ec{"Ürümqi"}\r
-        }\r
-        "Asia:Ust-Nera"{\r
-            ec{"Ust-Nera"}\r
-        }\r
-        "Asia:Vientiane"{\r
-            ec{"Vientiane"}\r
-        }\r
-        "Asia:Vladivostok"{\r
-            ec{"Vladivostok"}\r
-        }\r
-        "Asia:Yakutsk"{\r
-            ec{"Jakutsk"}\r
-        }\r
-        "Asia:Yekaterinburg"{\r
-            ec{"Jekaterinburg"}\r
-        }\r
-        "Asia:Yerevan"{\r
-            ec{"Jerevan"}\r
-        }\r
         "Atlantic:Azores"{\r
             ec{"Asorane"}\r
         }\r
-        "Atlantic:Bermuda"{\r
-            ec{"Bermuda"}\r
-        }\r
         "Atlantic:Canary"{\r
             ec{"Kanariøyane"}\r
         }\r
-        "Atlantic:Cape_Verde"{\r
-            ec{"Kapp Verde"}\r
-        }\r
         "Atlantic:Faeroe"{\r
             ec{"Færøyane"}\r
         }\r
-        "Atlantic:Madeira"{\r
-            ec{"Madeira"}\r
-        }\r
-        "Atlantic:Reykjavik"{\r
-            ec{"Reykjavík"}\r
-        }\r
-        "Atlantic:South_Georgia"{\r
-            ec{"Sør-Georgia"}\r
-        }\r
-        "Atlantic:St_Helena"{\r
-            ec{"St. Helena"}\r
-        }\r
-        "Atlantic:Stanley"{\r
-            ec{"Stanley"}\r
-        }\r
-        "Australia:Adelaide"{\r
-            ec{"Adelaide"}\r
-        }\r
-        "Australia:Brisbane"{\r
-            ec{"Brisbane"}\r
-        }\r
-        "Australia:Broken_Hill"{\r
-            ec{"Broken Hill"}\r
-        }\r
-        "Australia:Currie"{\r
-            ec{"Currie"}\r
-        }\r
-        "Australia:Darwin"{\r
-            ec{"Darwin"}\r
-        }\r
-        "Australia:Eucla"{\r
-            ec{"Eucla"}\r
-        }\r
-        "Australia:Hobart"{\r
-            ec{"Hobart"}\r
-        }\r
-        "Australia:Lindeman"{\r
-            ec{"Lindeman"}\r
-        }\r
-        "Australia:Lord_Howe"{\r
-            ec{"Lord Howe"}\r
-        }\r
-        "Australia:Melbourne"{\r
-            ec{"Melbourne"}\r
-        }\r
-        "Australia:Perth"{\r
-            ec{"Perth"}\r
-        }\r
-        "Australia:Sydney"{\r
-            ec{"Sydney"}\r
-        }\r
-        "Etc:UTC"{\r
-            ls{"koordinert universaltid"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"ukjend by"}\r
         }\r
-        "Europe:Amsterdam"{\r
-            ec{"Amsterdam"}\r
-        }\r
-        "Europe:Andorra"{\r
-            ec{"Andorra"}\r
-        }\r
-        "Europe:Astrakhan"{\r
-            ec{"Astrakhan"}\r
-        }\r
-        "Europe:Athens"{\r
-            ec{"Athen"}\r
-        }\r
-        "Europe:Belgrade"{\r
-            ec{"Beograd"}\r
-        }\r
-        "Europe:Berlin"{\r
-            ec{"Berlin"}\r
-        }\r
-        "Europe:Bratislava"{\r
-            ec{"Bratislava"}\r
-        }\r
-        "Europe:Brussels"{\r
-            ec{"Brussel"}\r
-        }\r
-        "Europe:Bucharest"{\r
-            ec{"București"}\r
-        }\r
-        "Europe:Budapest"{\r
-            ec{"Budapest"}\r
-        }\r
-        "Europe:Busingen"{\r
-            ec{"Büsingen"}\r
-        }\r
-        "Europe:Chisinau"{\r
-            ec{"Chișinău"}\r
-        }\r
-        "Europe:Copenhagen"{\r
-            ec{"København"}\r
-        }\r
         "Europe:Dublin"{\r
-            ec{"Dublin"}\r
             ld{"irsk sommartid"}\r
         }\r
-        "Europe:Gibraltar"{\r
-            ec{"Gibraltar"}\r
-        }\r
-        "Europe:Guernsey"{\r
-            ec{"Guernsey"}\r
-        }\r
-        "Europe:Helsinki"{\r
-            ec{"Helsingfors"}\r
-        }\r
-        "Europe:Isle_of_Man"{\r
-            ec{"Man"}\r
-        }\r
-        "Europe:Istanbul"{\r
-            ec{"Istanbul"}\r
-        }\r
-        "Europe:Jersey"{\r
-            ec{"Jersey"}\r
-        }\r
-        "Europe:Kaliningrad"{\r
-            ec{"Kaliningrad"}\r
-        }\r
-        "Europe:Kiev"{\r
-            ec{"Kiev"}\r
-        }\r
-        "Europe:Kirov"{\r
-            ec{"Kirov"}\r
-        }\r
-        "Europe:Lisbon"{\r
-            ec{"Lisboa"}\r
-        }\r
-        "Europe:Ljubljana"{\r
-            ec{"Ljubljana"}\r
-        }\r
         "Europe:London"{\r
-            ec{"London"}\r
             ld{"britisk sommartid"}\r
         }\r
-        "Europe:Luxembourg"{\r
-            ec{"Luxemburg"}\r
-        }\r
-        "Europe:Madrid"{\r
-            ec{"Madrid"}\r
-        }\r
-        "Europe:Malta"{\r
-            ec{"Malta"}\r
-        }\r
-        "Europe:Mariehamn"{\r
-            ec{"Mariehamn"}\r
-        }\r
-        "Europe:Minsk"{\r
-            ec{"Minsk"}\r
-        }\r
-        "Europe:Monaco"{\r
-            ec{"Monaco"}\r
-        }\r
-        "Europe:Moscow"{\r
-            ec{"Moskva"}\r
-        }\r
-        "Europe:Oslo"{\r
-            ec{"Oslo"}\r
-        }\r
-        "Europe:Paris"{\r
-            ec{"Paris"}\r
-        }\r
-        "Europe:Podgorica"{\r
-            ec{"Podgorica"}\r
-        }\r
-        "Europe:Prague"{\r
-            ec{"Praha"}\r
-        }\r
-        "Europe:Riga"{\r
-            ec{"Riga"}\r
-        }\r
-        "Europe:Rome"{\r
-            ec{"Roma"}\r
-        }\r
-        "Europe:Samara"{\r
-            ec{"Samara"}\r
-        }\r
-        "Europe:San_Marino"{\r
-            ec{"San Marino"}\r
-        }\r
-        "Europe:Sarajevo"{\r
-            ec{"Sarajevo"}\r
-        }\r
-        "Europe:Saratov"{\r
-            ec{"Saratov"}\r
-        }\r
-        "Europe:Simferopol"{\r
-            ec{"Simferopol"}\r
-        }\r
-        "Europe:Skopje"{\r
-            ec{"Skopje"}\r
-        }\r
-        "Europe:Sofia"{\r
-            ec{"Sofia"}\r
-        }\r
-        "Europe:Stockholm"{\r
-            ec{"Stockholm"}\r
-        }\r
-        "Europe:Tallinn"{\r
-            ec{"Tallinn"}\r
-        }\r
-        "Europe:Tirane"{\r
-            ec{"Tirana"}\r
-        }\r
-        "Europe:Ulyanovsk"{\r
-            ec{"Uljanovsk"}\r
-        }\r
-        "Europe:Uzhgorod"{\r
-            ec{"Uzjhorod"}\r
-        }\r
-        "Europe:Vaduz"{\r
-            ec{"Vaduz"}\r
-        }\r
-        "Europe:Vatican"{\r
-            ec{"Vatikanstaten"}\r
-        }\r
-        "Europe:Vienna"{\r
-            ec{"Wien"}\r
-        }\r
-        "Europe:Vilnius"{\r
-            ec{"Vilnius"}\r
-        }\r
-        "Europe:Volgograd"{\r
-            ec{"Volgograd"}\r
-        }\r
-        "Europe:Warsaw"{\r
-            ec{"Warszawa"}\r
-        }\r
-        "Europe:Zagreb"{\r
-            ec{"Zagreb"}\r
-        }\r
-        "Europe:Zaporozhye"{\r
-            ec{"Zaporizjzja"}\r
-        }\r
-        "Europe:Zurich"{\r
-            ec{"Zürich"}\r
-        }\r
-        "Indian:Antananarivo"{\r
-            ec{"Antananarivo"}\r
-        }\r
-        "Indian:Chagos"{\r
-            ec{"Chagos"}\r
-        }\r
-        "Indian:Christmas"{\r
-            ec{"Christmasøya"}\r
-        }\r
         "Indian:Cocos"{\r
             ec{"Kokosøyane"}\r
         }\r
         "Indian:Comoro"{\r
             ec{"Komorane"}\r
         }\r
-        "Indian:Kerguelen"{\r
-            ec{"Kerguelen"}\r
-        }\r
-        "Indian:Mahe"{\r
-            ec{"Mahé"}\r
-        }\r
         "Indian:Maldives"{\r
             ec{"Maldivane"}\r
         }\r
-        "Indian:Mauritius"{\r
-            ec{"Mauritius"}\r
-        }\r
-        "Indian:Mayotte"{\r
-            ec{"Mayotte"}\r
-        }\r
-        "Indian:Reunion"{\r
-            ec{"Réunion"}\r
-        }\r
-        "Pacific:Apia"{\r
-            ec{"Apia"}\r
-        }\r
-        "Pacific:Auckland"{\r
-            ec{"Auckland"}\r
-        }\r
-        "Pacific:Bougainville"{\r
-            ec{"Bougainville"}\r
-        }\r
-        "Pacific:Chatham"{\r
-            ec{"Chatham"}\r
-        }\r
-        "Pacific:Easter"{\r
-            ec{"Påskeøya"}\r
-        }\r
-        "Pacific:Efate"{\r
-            ec{"Efate"}\r
-        }\r
-        "Pacific:Enderbury"{\r
-            ec{"Enderbury"}\r
-        }\r
-        "Pacific:Fakaofo"{\r
-            ec{"Fakaofo"}\r
-        }\r
-        "Pacific:Fiji"{\r
-            ec{"Fiji"}\r
-        }\r
-        "Pacific:Funafuti"{\r
-            ec{"Funafuti"}\r
-        }\r
         "Pacific:Galapagos"{\r
             ec{"Galápagosøyane"}\r
         }\r
-        "Pacific:Gambier"{\r
-            ec{"Gambier"}\r
-        }\r
-        "Pacific:Guadalcanal"{\r
-            ec{"Guadalcanal"}\r
-        }\r
-        "Pacific:Guam"{\r
-            ec{"Guam"}\r
-        }\r
-        "Pacific:Honolulu"{\r
-            ec{"Honolulu"}\r
-        }\r
-        "Pacific:Johnston"{\r
-            ec{"Johnston"}\r
-        }\r
-        "Pacific:Kiritimati"{\r
-            ec{"Kiritimati"}\r
-        }\r
-        "Pacific:Kosrae"{\r
-            ec{"Kosrae"}\r
-        }\r
-        "Pacific:Kwajalein"{\r
-            ec{"Kwajalein"}\r
-        }\r
-        "Pacific:Majuro"{\r
-            ec{"Majuro"}\r
-        }\r
-        "Pacific:Marquesas"{\r
-            ec{"Marquesas"}\r
-        }\r
-        "Pacific:Midway"{\r
-            ec{"Midway"}\r
-        }\r
-        "Pacific:Nauru"{\r
-            ec{"Nauru"}\r
-        }\r
-        "Pacific:Niue"{\r
-            ec{"Niue"}\r
-        }\r
-        "Pacific:Norfolk"{\r
-            ec{"Norfolkøya"}\r
-        }\r
-        "Pacific:Noumea"{\r
-            ec{"Nouméa"}\r
-        }\r
-        "Pacific:Pago_Pago"{\r
-            ec{"Pago Pago"}\r
-        }\r
-        "Pacific:Palau"{\r
-            ec{"Palau"}\r
-        }\r
-        "Pacific:Pitcairn"{\r
-            ec{"Pitcairn"}\r
-        }\r
-        "Pacific:Ponape"{\r
-            ec{"Pohnpei"}\r
-        }\r
-        "Pacific:Port_Moresby"{\r
-            ec{"Port Moresby"}\r
-        }\r
-        "Pacific:Rarotonga"{\r
-            ec{"Rarotonga"}\r
-        }\r
-        "Pacific:Saipan"{\r
-            ec{"Saipan"}\r
-        }\r
-        "Pacific:Tahiti"{\r
-            ec{"Tahiti"}\r
-        }\r
-        "Pacific:Tarawa"{\r
-            ec{"Tarawa"}\r
-        }\r
-        "Pacific:Tongatapu"{\r
-            ec{"Tongatapu"}\r
-        }\r
-        "Pacific:Truk"{\r
-            ec{"Chuuk"}\r
-        }\r
-        "Pacific:Wake"{\r
-            ec{"Wake"}\r
-        }\r
-        "Pacific:Wallis"{\r
-            ec{"Wallis"}\r
-        }\r
-        "meta:Afghanistan"{\r
-            ls{"afghansk tid"}\r
-        }\r
-        "meta:Africa_Central"{\r
-            ls{"sentralafrikansk tid"}\r
-        }\r
         "meta:Africa_Eastern"{\r
             ls{"austafrikansk tid"}\r
         }\r
-        "meta:Africa_Southern"{\r
-            ls{"sørafrikansk tid"}\r
-        }\r
         "meta:Africa_Western"{\r
             ld{"vestafrikansk sommartid"}\r
             lg{"vestafrikansk tid"}\r
@@ -1401,28 +161,16 @@ nn{
             lg{"bangladeshisk tid"}\r
             ls{"bangladeshisk normaltid"}\r
         }\r
-        "meta:Bhutan"{\r
-            ls{"bhutansk tid"}\r
-        }\r
-        "meta:Bolivia"{\r
-            ls{"boliviansk tid"}\r
-        }\r
         "meta:Brasilia"{\r
             ld{"sommartid for Brasilia"}\r
             lg{"tidssone for Brasilia"}\r
             ls{"normaltid for Brasilia"}\r
         }\r
-        "meta:Brunei"{\r
-            ls{"tidssone for Brunei Darussalam"}\r
-        }\r
         "meta:Cape_Verde"{\r
             ld{"kappverdisk sommartid"}\r
             lg{"kappverdisk tid"}\r
             ls{"kappverdisk normaltid"}\r
         }\r
-        "meta:Chamorro"{\r
-            ls{"tidssone for Chamorro"}\r
-        }\r
         "meta:Chatham"{\r
             ld{"sommartid for Chatham"}\r
             lg{"tidssone for Chatham"}\r
@@ -1443,9 +191,6 @@ nn{
             lg{"tidssone for Tsjojbalsan"}\r
             ls{"normaltid for Tsjojbalsan"}\r
         }\r
-        "meta:Christmas"{\r
-            ls{"tidssone for Christmasøya"}\r
-        }\r
         "meta:Cocos"{\r
             ls{"tidssone for Kokosøyane"}\r
         }\r
@@ -1464,9 +209,6 @@ nn{
             lg{"kubansk tid"}\r
             ls{"kubansk normaltid"}\r
         }\r
-        "meta:Davis"{\r
-            ls{"tidssone for Davis"}\r
-        }\r
         "meta:DumontDUrville"{\r
             ls{"tidssone for Dumont-d’Urville"}\r
         }\r
@@ -1478,24 +220,15 @@ nn{
             lg{"tidssone for Påskeøya"}\r
             ls{"normaltid for Påskeøya"}\r
         }\r
-        "meta:Ecuador"{\r
-            ls{"ecuadoriansk tid"}\r
-        }\r
         "meta:Europe_Central"{\r
             ld{"sentraleuropeisk sommartid"}\r
             lg{"sentraleuropeisk tid"}\r
             ls{"sentraleuropeisk standardtid"}\r
-            sd{"CEST"}\r
-            sg{"CET"}\r
-            ss{"CET"}\r
         }\r
         "meta:Europe_Eastern"{\r
             ld{"austeuropeisk sommartid"}\r
             lg{"austeuropeisk tid"}\r
             ls{"austeuropeisk standardtid"}\r
-            sd{"EEST"}\r
-            sg{"EET"}\r
-            ss{"EET"}\r
         }\r
         "meta:Europe_Further_Eastern"{\r
             ls{"fjern-austeuropeisk tid"}\r
@@ -1504,9 +237,6 @@ nn{
             ld{"vesteuropeisk sommartid"}\r
             lg{"vesteuropeisk tid"}\r
             ls{"vesteuropeisk standardtid"}\r
-            sd{"WEST"}\r
-            sg{"WET"}\r
-            ss{"WET"}\r
         }\r
         "meta:Falkland"{\r
             ld{"sommartid for Falklandsøyane"}\r
@@ -1518,22 +248,12 @@ nn{
             lg{"fijiansk tid"}\r
             ls{"fijiansk normaltid"}\r
         }\r
-        "meta:French_Guiana"{\r
-            ls{"tidssone for Fransk Guyana"}\r
-        }\r
         "meta:French_Southern"{\r
             ls{"tidssone for Dei franske sørterritoria"}\r
         }\r
-        "meta:GMT"{\r
-            ls{"Greenwich middeltid"}\r
-            ss{"GMT"}\r
-        }\r
         "meta:Galapagos"{\r
             ls{"tidssone for Galápagosøyane"}\r
         }\r
-        "meta:Gambier"{\r
-            ls{"tidssone for Gambier"}\r
-        }\r
         "meta:Georgia"{\r
             ld{"georgisk sommartid"}\r
             lg{"georgisk tid"}\r
@@ -1552,12 +272,6 @@ nn{
             lg{"vestgrønlandsk tid"}\r
             ls{"vestgrønlandsk normaltid"}\r
         }\r
-        "meta:Gulf"{\r
-            ls{"tidssone for Persiabukta"}\r
-        }\r
-        "meta:Guyana"{\r
-            ls{"guyansk tid"}\r
-        }\r
         "meta:Hawaii_Aleutian"{\r
             ld{"sommartid for Hawaii og Aleutene"}\r
             lg{"tidssone for Hawaii og Aleutene"}\r
@@ -1573,24 +287,9 @@ nn{
             lg{"tidssone for Khovd"}\r
             ls{"normaltid for Khovd"}\r
         }\r
-        "meta:India"{\r
-            ls{"indisk tid"}\r
-        }\r
-        "meta:Indian_Ocean"{\r
-            ls{"tidssone for Indiahavet"}\r
-        }\r
-        "meta:Indochina"{\r
-            ls{"indokinesisk tid"}\r
-        }\r
-        "meta:Indonesia_Central"{\r
-            ls{"sentralindonesisk tid"}\r
-        }\r
         "meta:Indonesia_Eastern"{\r
             ls{"austindonesisk tid"}\r
         }\r
-        "meta:Indonesia_Western"{\r
-            ls{"vestindonesisk tid"}\r
-        }\r
         "meta:Iran"{\r
             ld{"iransk sommartid"}\r
             lg{"iransk tid"}\r
@@ -1614,25 +313,16 @@ nn{
         "meta:Kazakhstan_Eastern"{\r
             ls{"austkasakhstansk tid"}\r
         }\r
-        "meta:Kazakhstan_Western"{\r
-            ls{"vestkasakhstansk tid"}\r
-        }\r
         "meta:Korea"{\r
             ld{"koreansk sommartid"}\r
             lg{"koreansk tid"}\r
             ls{"koreansk normaltid"}\r
         }\r
-        "meta:Kosrae"{\r
-            ls{"tidssone for Kosrae"}\r
-        }\r
         "meta:Krasnoyarsk"{\r
             ld{"sommartid for Krasnojarsk"}\r
             lg{"tidssone for Krasnojarsk"}\r
             ls{"normaltid for Krasnojarsk"}\r
         }\r
-        "meta:Kyrgystan"{\r
-            ls{"kirgisisk tid"}\r
-        }\r
         "meta:Line_Islands"{\r
             ls{"tidssone for Lineøyane"}\r
         }\r
@@ -1641,34 +331,19 @@ nn{
             lg{"tidssone for Lord Howe-øya"}\r
             ls{"normaltid for Lord Howe-øya"}\r
         }\r
-        "meta:Macquarie"{\r
-            ls{"tidssone for Macquarieøya"}\r
-        }\r
         "meta:Magadan"{\r
             ld{"sommartid for Magadan"}\r
             lg{"tidssone for Magadan"}\r
             ls{"normaltid for Magadan"}\r
         }\r
-        "meta:Malaysia"{\r
-            ls{"malaysisk tid"}\r
-        }\r
-        "meta:Maldives"{\r
-            ls{"maldivisk tid"}\r
-        }\r
         "meta:Marquesas"{\r
             ls{"tidssone for Marquesasøyane"}\r
         }\r
-        "meta:Marshall_Islands"{\r
-            ls{"marshallesisk tid"}\r
-        }\r
         "meta:Mauritius"{\r
             ld{"mauritisk sommartid"}\r
             lg{"mauritisk tid"}\r
             ls{"mauritisk normaltid"}\r
         }\r
-        "meta:Mawson"{\r
-            ls{"tidssone for Mawson"}\r
-        }\r
         "meta:Mexico_Northwest"{\r
             ld{"sommartid for nordvestlege Mexico"}\r
             lg{"tidssone for nordvestlege Mexico"}\r
@@ -1689,15 +364,6 @@ nn{
             lg{"tidssone for Moskva"}\r
             ls{"normaltid for Moskva"}\r
         }\r
-        "meta:Myanmar"{\r
-            ls{"myanmarsk tid"}\r
-        }\r
-        "meta:Nauru"{\r
-            ls{"naurisk tid"}\r
-        }\r
-        "meta:Nepal"{\r
-            ls{"nepalsk tid"}\r
-        }\r
         "meta:New_Caledonia"{\r
             ld{"kaledonsk sommartid"}\r
             lg{"kaledonsk tid"}\r
@@ -1713,9 +379,6 @@ nn{
             lg{"tidssone for Newfoundland"}\r
             ls{"normaltid for Newfoundland"}\r
         }\r
-        "meta:Niue"{\r
-            ls{"tidssone for Niue"}\r
-        }\r
         "meta:Norfolk"{\r
             ld{"sommartid for Norfolkøya"}\r
             lg{"tidssone for Norfolkøya"}\r
@@ -1741,12 +404,6 @@ nn{
             lg{"pakistansk tid"}\r
             ls{"pakistansk normaltid"}\r
         }\r
-        "meta:Palau"{\r
-            ls{"palauisk tid"}\r
-        }\r
-        "meta:Papua_New_Guinea"{\r
-            ls{"papuansk tid"}\r
-        }\r
         "meta:Paraguay"{\r
             ld{"paraguayansk sommartid"}\r
             lg{"paraguayansk tid"}\r
@@ -1770,21 +427,6 @@ nn{
             lg{"tidssone for Saint-Pierre-et-Miquelon"}\r
             ls{"normaltid for Saint-Pierre-et-Miquelon"}\r
         }\r
-        "meta:Pitcairn"{\r
-            ls{"tidssone for Pitcairn"}\r
-        }\r
-        "meta:Ponape"{\r
-            ls{"tidssone for Pohnpei"}\r
-        }\r
-        "meta:Pyongyang"{\r
-            ls{"tidssone for Pyongyang"}\r
-        }\r
-        "meta:Reunion"{\r
-            ls{"tidssone for Réunion"}\r
-        }\r
-        "meta:Rothera"{\r
-            ls{"tidssone for Rothera"}\r
-        }\r
         "meta:Sakhalin"{\r
             ld{"sommartid for Sakhalin"}\r
             lg{"tidssone for Sakhalin"}\r
@@ -1795,38 +437,11 @@ nn{
             lg{"samoansk tid"}\r
             ls{"samoansk normaltid"}\r
         }\r
-        "meta:Seychelles"{\r
-            ls{"seychellisk tid"}\r
-        }\r
-        "meta:Singapore"{\r
-            ls{"singaporsk tid"}\r
-        }\r
-        "meta:Solomon"{\r
-            ls{"salomonsk tid"}\r
-        }\r
-        "meta:South_Georgia"{\r
-            ls{"tidssone for Sør-Georgia"}\r
-        }\r
-        "meta:Suriname"{\r
-            ls{"surinamsk tid"}\r
-        }\r
-        "meta:Syowa"{\r
-            ls{"tidssone for Syowa"}\r
-        }\r
-        "meta:Tahiti"{\r
-            ls{"tahitisk tid"}\r
-        }\r
         "meta:Taipei"{\r
             ld{"sommartid for Taipei"}\r
             lg{"tidssone for Taipei"}\r
             ls{"normaltid for Taipei"}\r
         }\r
-        "meta:Tajikistan"{\r
-            ls{"tadsjikisk tid"}\r
-        }\r
-        "meta:Tokelau"{\r
-            ls{"tidssone for Tokelau"}\r
-        }\r
         "meta:Tonga"{\r
             ld{"tongansk sommartid"}\r
             lg{"tongansk tid"}\r
@@ -1840,9 +455,6 @@ nn{
             lg{"turkmensk tid"}\r
             ls{"turkmensk normaltid"}\r
         }\r
-        "meta:Tuvalu"{\r
-            ls{"tuvalsk tid"}\r
-        }\r
         "meta:Uruguay"{\r
             ld{"uruguayansk sommartid"}\r
             lg{"uruguayansk tid"}\r
@@ -1858,9 +470,6 @@ nn{
             lg{"vanuatisk tid"}\r
             ls{"vanuatisk normaltid"}\r
         }\r
-        "meta:Venezuela"{\r
-            ls{"venezuelansk tid"}\r
-        }\r
         "meta:Vladivostok"{\r
             ld{"sommartid for Vladivostok"}\r
             lg{"tidssone for Vladivostok"}\r
@@ -1871,12 +480,6 @@ nn{
             lg{"tidssone for Volgograd"}\r
             ls{"normaltid for Volgograd"}\r
         }\r
-        "meta:Vostok"{\r
-            ls{"tidssone for Vostok"}\r
-        }\r
-        "meta:Wake"{\r
-            ls{"tidssone for Wake Island"}\r
-        }\r
         "meta:Wallis"{\r
             ls{"tidssone for Wallis- og Futunaøyane"}\r
         }\r
@@ -1890,12 +493,6 @@ nn{
             lg{"tidssone for Jekaterinburg"}\r
             ls{"normaltid for Jekaterinburg"}\r
         }\r
-        fallbackFormat{"{1} ({0})"}\r
-        gmtFormat{"GMT{0}"}\r
-        gmtZeroFormat{"GMT"}\r
-        hourFormat{"+HH:mm;-HH:mm"}\r
-        regionFormat{"tidssone for {0}"}\r
         regionFormatDaylight{"sommartid – {0}"}\r
-        regionFormatStandard{"normaltid – {0}"}\r
     }\r
 }\r
index a6eca3c..29eea82 100644 (file)
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no{\r
-    "%%ALIAS"{"nb"}\r
+    zoneStrings{\r
+        "Africa:Abidjan"{\r
+            ec{"Abidjan"}\r
+        }\r
+        "Africa:Accra"{\r
+            ec{"Accra"}\r
+        }\r
+        "Africa:Addis_Ababa"{\r
+            ec{"Addis Abeba"}\r
+        }\r
+        "Africa:Algiers"{\r
+            ec{"Alger"}\r
+        }\r
+        "Africa:Asmera"{\r
+            ec{"Asmara"}\r
+        }\r
+        "Africa:Bamako"{\r
+            ec{"Bamako"}\r
+        }\r
+        "Africa:Bangui"{\r
+            ec{"Bangui"}\r
+        }\r
+        "Africa:Banjul"{\r
+            ec{"Banjul"}\r
+        }\r
+        "Africa:Bissau"{\r
+            ec{"Bissau"}\r
+        }\r
+        "Africa:Blantyre"{\r
+            ec{"Blantyre"}\r
+        }\r
+        "Africa:Brazzaville"{\r
+            ec{"Brazzaville"}\r
+        }\r
+        "Africa:Bujumbura"{\r
+            ec{"Bujumbura"}\r
+        }\r
+        "Africa:Cairo"{\r
+            ec{"Kairo"}\r
+        }\r
+        "Africa:Casablanca"{\r
+            ec{"Casablanca"}\r
+        }\r
+        "Africa:Ceuta"{\r
+            ec{"Ceuta"}\r
+        }\r
+        "Africa:Conakry"{\r
+            ec{"Conakry"}\r
+        }\r
+        "Africa:Dakar"{\r
+            ec{"Dakar"}\r
+        }\r
+        "Africa:Dar_es_Salaam"{\r
+            ec{"Dar-es-Salaam"}\r
+        }\r
+        "Africa:Djibouti"{\r
+            ec{"Djibouti"}\r
+        }\r
+        "Africa:Douala"{\r
+            ec{"Douala"}\r
+        }\r
+        "Africa:El_Aaiun"{\r
+            ec{"El Aaiún"}\r
+        }\r
+        "Africa:Freetown"{\r
+            ec{"Freetown"}\r
+        }\r
+        "Africa:Gaborone"{\r
+            ec{"Gaborone"}\r
+        }\r
+        "Africa:Harare"{\r
+            ec{"Harare"}\r
+        }\r
+        "Africa:Johannesburg"{\r
+            ec{"Johannesburg"}\r
+        }\r
+        "Africa:Juba"{\r
+            ec{"Juba"}\r
+        }\r
+        "Africa:Kampala"{\r
+            ec{"Kampala"}\r
+        }\r
+        "Africa:Khartoum"{\r
+            ec{"Khartoum"}\r
+        }\r
+        "Africa:Kigali"{\r
+            ec{"Kigali"}\r
+        }\r
+        "Africa:Kinshasa"{\r
+            ec{"Kinshasa"}\r
+        }\r
+        "Africa:Lagos"{\r
+            ec{"Lagos"}\r
+        }\r
+        "Africa:Libreville"{\r
+            ec{"Libreville"}\r
+        }\r
+        "Africa:Lome"{\r
+            ec{"Lomé"}\r
+        }\r
+        "Africa:Luanda"{\r
+            ec{"Luanda"}\r
+        }\r
+        "Africa:Lubumbashi"{\r
+            ec{"Lubumbashi"}\r
+        }\r
+        "Africa:Lusaka"{\r
+            ec{"Lusaka"}\r
+        }\r
+        "Africa:Malabo"{\r
+            ec{"Malabo"}\r
+        }\r
+        "Africa:Maputo"{\r
+            ec{"Maputo"}\r
+        }\r
+        "Africa:Maseru"{\r
+            ec{"Maseru"}\r
+        }\r
+        "Africa:Mbabane"{\r
+            ec{"Mbabane"}\r
+        }\r
+        "Africa:Mogadishu"{\r
+            ec{"Mogadishu"}\r
+        }\r
+        "Africa:Monrovia"{\r
+            ec{"Monrovia"}\r
+        }\r
+        "Africa:Nairobi"{\r
+            ec{"Nairobi"}\r
+        }\r
+        "Africa:Ndjamena"{\r
+            ec{"Ndjamena"}\r
+        }\r
+        "Africa:Niamey"{\r
+            ec{"Niamey"}\r
+        }\r
+        "Africa:Nouakchott"{\r
+            ec{"Nouakchott"}\r
+        }\r
+        "Africa:Ouagadougou"{\r
+            ec{"Ouagadougou"}\r
+        }\r
+        "Africa:Porto-Novo"{\r
+            ec{"Porto-Novo"}\r
+        }\r
+        "Africa:Sao_Tome"{\r
+            ec{"São Tomé"}\r
+        }\r
+        "Africa:Tripoli"{\r
+            ec{"Tripoli"}\r
+        }\r
+        "Africa:Tunis"{\r
+            ec{"Tunis"}\r
+        }\r
+        "Africa:Windhoek"{\r
+            ec{"Windhoek"}\r
+        }\r
+        "America:Adak"{\r
+            ec{"Adak"}\r
+        }\r
+        "America:Anchorage"{\r
+            ec{"Anchorage"}\r
+        }\r
+        "America:Anguilla"{\r
+            ec{"Anguilla"}\r
+        }\r
+        "America:Antigua"{\r
+            ec{"Antigua"}\r
+        }\r
+        "America:Araguaina"{\r
+            ec{"Araguaína"}\r
+        }\r
+        "America:Argentina:La_Rioja"{\r
+            ec{"La Rioja"}\r
+        }\r
+        "America:Argentina:Rio_Gallegos"{\r
+            ec{"Rio Gallegos"}\r
+        }\r
+        "America:Argentina:Salta"{\r
+            ec{"Salta"}\r
+        }\r
+        "America:Argentina:San_Juan"{\r
+            ec{"San Juan"}\r
+        }\r
+        "America:Argentina:San_Luis"{\r
+            ec{"San Luis"}\r
+        }\r
+        "America:Argentina:Tucuman"{\r
+            ec{"Tucumán"}\r
+        }\r
+        "America:Argentina:Ushuaia"{\r
+            ec{"Ushuaia"}\r
+        }\r
+        "America:Aruba"{\r
+            ec{"Aruba"}\r
+        }\r
+        "America:Asuncion"{\r
+            ec{"Asunción"}\r
+        }\r
+        "America:Bahia"{\r
+            ec{"Bahia"}\r
+        }\r
+        "America:Bahia_Banderas"{\r
+            ec{"Bahía Banderas"}\r
+        }\r
+        "America:Barbados"{\r
+            ec{"Barbados"}\r
+        }\r
+        "America:Belem"{\r
+            ec{"Belém"}\r
+        }\r
+        "America:Belize"{\r
+            ec{"Belize"}\r
+        }\r
+        "America:Blanc-Sablon"{\r
+            ec{"Blanc-Sablon"}\r
+        }\r
+        "America:Boa_Vista"{\r
+            ec{"Boa Vista"}\r
+        }\r
+        "America:Bogota"{\r
+            ec{"Bogotá"}\r
+        }\r
+        "America:Boise"{\r
+            ec{"Boise"}\r
+        }\r
+        "America:Buenos_Aires"{\r
+            ec{"Buenos Aires"}\r
+        }\r
+        "America:Cambridge_Bay"{\r
+            ec{"Cambridge Bay"}\r
+        }\r
+        "America:Campo_Grande"{\r
+            ec{"Campo Grande"}\r
+        }\r
+        "America:Cancun"{\r
+            ec{"Cancún"}\r
+        }\r
+        "America:Caracas"{\r
+            ec{"Caracas"}\r
+        }\r
+        "America:Catamarca"{\r
+            ec{"Catamarca"}\r
+        }\r
+        "America:Cayenne"{\r
+            ec{"Cayenne"}\r
+        }\r
+        "America:Cayman"{\r
+            ec{"Caymanøyene"}\r
+        }\r
+        "America:Chicago"{\r
+            ec{"Chicago"}\r
+        }\r
+        "America:Chihuahua"{\r
+            ec{"Chihuahua"}\r
+        }\r
+        "America:Coral_Harbour"{\r
+            ec{"Atikokan"}\r
+        }\r
+        "America:Cordoba"{\r
+            ec{"Córdoba"}\r
+        }\r
+        "America:Costa_Rica"{\r
+            ec{"Costa Rica"}\r
+        }\r
+        "America:Creston"{\r
+            ec{"Creston"}\r
+        }\r
+        "America:Cuiaba"{\r
+            ec{"Cuiabá"}\r
+        }\r
+        "America:Curacao"{\r
+            ec{"Curaçao"}\r
+        }\r
+        "America:Danmarkshavn"{\r
+            ec{"Danmarkshavn"}\r
+        }\r
+        "America:Dawson"{\r
+            ec{"Dawson"}\r
+        }\r
+        "America:Dawson_Creek"{\r
+            ec{"Dawson Creek"}\r
+        }\r
+        "America:Denver"{\r
+            ec{"Denver"}\r
+        }\r
+        "America:Detroit"{\r
+            ec{"Detroit"}\r
+        }\r
+        "America:Dominica"{\r
+            ec{"Dominica"}\r
+        }\r
+        "America:Edmonton"{\r
+            ec{"Edmonton"}\r
+        }\r
+        "America:Eirunepe"{\r
+            ec{"Eirunepe"}\r
+        }\r
+        "America:El_Salvador"{\r
+            ec{"El Salvador"}\r
+        }\r
+        "America:Fort_Nelson"{\r
+            ec{"Fort Nelson"}\r
+        }\r
+        "America:Fortaleza"{\r
+            ec{"Fortaleza"}\r
+        }\r
+        "America:Glace_Bay"{\r
+            ec{"Glace Bay"}\r
+        }\r
+        "America:Godthab"{\r
+            ec{"Nuuk"}\r
+        }\r
+        "America:Goose_Bay"{\r
+            ec{"Goose Bay"}\r
+        }\r
+        "America:Grand_Turk"{\r
+            ec{"Grand Turk"}\r
+        }\r
+        "America:Grenada"{\r
+            ec{"Grenada"}\r
+        }\r
+        "America:Guadeloupe"{\r
+            ec{"Guadeloupe"}\r
+        }\r
+        "America:Guatemala"{\r
+            ec{"Guatemala"}\r
+        }\r
+        "America:Guayaquil"{\r
+            ec{"Guayaquil"}\r
+        }\r
+        "America:Guyana"{\r
+            ec{"Guyana"}\r
+        }\r
+        "America:Halifax"{\r
+            ec{"Halifax"}\r
+        }\r
+        "America:Havana"{\r
+            ec{"Havana"}\r
+        }\r
+        "America:Hermosillo"{\r
+            ec{"Hermosillo"}\r
+        }\r
+        "America:Indiana:Knox"{\r
+            ec{"Knox, Indiana"}\r
+        }\r
+        "America:Indiana:Marengo"{\r
+            ec{"Marengo, Indiana"}\r
+        }\r
+        "America:Indiana:Petersburg"{\r
+            ec{"Petersburg, Indiana"}\r
+        }\r
+        "America:Indiana:Tell_City"{\r
+            ec{"Tell City, Indiana"}\r
+        }\r
+        "America:Indiana:Vevay"{\r
+            ec{"Vevay, Indiana"}\r
+        }\r
+        "America:Indiana:Vincennes"{\r
+            ec{"Vincennes, Indiana"}\r
+        }\r
+        "America:Indiana:Winamac"{\r
+            ec{"Winamac, Indiana"}\r
+        }\r
+        "America:Indianapolis"{\r
+            ec{"Indianapolis"}\r
+        }\r
+        "America:Inuvik"{\r
+            ec{"Inuvik"}\r
+        }\r
+        "America:Iqaluit"{\r
+            ec{"Iqaluit"}\r
+        }\r
+        "America:Jamaica"{\r
+            ec{"Jamaica"}\r
+        }\r
+        "America:Jujuy"{\r
+            ec{"Jujuy"}\r
+        }\r
+        "America:Juneau"{\r
+            ec{"Juneau"}\r
+        }\r
+        "America:Kentucky:Monticello"{\r
+            ec{"Monticello, Kentucky"}\r
+        }\r
+        "America:Kralendijk"{\r
+            ec{"Kralendijk"}\r
+        }\r
+        "America:La_Paz"{\r
+            ec{"La Paz"}\r
+        }\r
+        "America:Lima"{\r
+            ec{"Lima"}\r
+        }\r
+        "America:Los_Angeles"{\r
+            ec{"Los Angeles"}\r
+        }\r
+        "America:Louisville"{\r
+            ec{"Louisville"}\r
+        }\r
+        "America:Lower_Princes"{\r
+            ec{"Lower Prince’s Quarter"}\r
+        }\r
+        "America:Maceio"{\r
+            ec{"Maceió"}\r
+        }\r
+        "America:Managua"{\r
+            ec{"Managua"}\r
+        }\r
+        "America:Manaus"{\r
+            ec{"Manaus"}\r
+        }\r
+        "America:Marigot"{\r
+            ec{"Marigot"}\r
+        }\r
+        "America:Martinique"{\r
+            ec{"Martinique"}\r
+        }\r
+        "America:Matamoros"{\r
+            ec{"Matamoros"}\r
+        }\r
+        "America:Mazatlan"{\r
+            ec{"Mazatlan"}\r
+        }\r
+        "America:Mendoza"{\r
+            ec{"Mendoza"}\r
+        }\r
+        "America:Menominee"{\r
+            ec{"Menominee"}\r
+        }\r
+        "America:Merida"{\r
+            ec{"Mérida"}\r
+        }\r
+        "America:Metlakatla"{\r
+            ec{"Metlakatla"}\r
+        }\r
+        "America:Mexico_City"{\r
+            ec{"Mexico by"}\r
+        }\r
+        "America:Miquelon"{\r
+            ec{"Miquelon"}\r
+        }\r
+        "America:Moncton"{\r
+            ec{"Moncton"}\r
+        }\r
+        "America:Monterrey"{\r
+            ec{"Monterrey"}\r
+        }\r
+        "America:Montevideo"{\r
+            ec{"Montevideo"}\r
+        }\r
+        "America:Montserrat"{\r
+            ec{"Montserrat"}\r
+        }\r
+        "America:Nassau"{\r
+            ec{"Nassau"}\r
+        }\r
+        "America:New_York"{\r
+            ec{"New York"}\r
+        }\r
+        "America:Nipigon"{\r
+            ec{"Nipigon"}\r
+        }\r
+        "America:Nome"{\r
+            ec{"Nome"}\r
+        }\r
+        "America:Noronha"{\r
+            ec{"Noronha"}\r
+        }\r
+        "America:North_Dakota:Beulah"{\r
+            ec{"Beulah, Nord-Dakota"}\r
+        }\r
+        "America:North_Dakota:Center"{\r
+            ec{"Center, Nord-Dakota"}\r
+        }\r
+        "America:North_Dakota:New_Salem"{\r
+            ec{"New Salem, Nord-Dakota"}\r
+        }\r
+        "America:Ojinaga"{\r
+            ec{"Ojinaga"}\r
+        }\r
+        "America:Panama"{\r
+            ec{"Panama"}\r
+        }\r
+        "America:Pangnirtung"{\r
+            ec{"Pangnirtung"}\r
+        }\r
+        "America:Paramaribo"{\r
+            ec{"Paramaribo"}\r
+        }\r
+        "America:Phoenix"{\r
+            ec{"Phoenix"}\r
+        }\r
+        "America:Port-au-Prince"{\r
+            ec{"Port-au-Prince"}\r
+        }\r
+        "America:Port_of_Spain"{\r
+            ec{"Port of Spain"}\r
+        }\r
+        "America:Porto_Velho"{\r
+            ec{"Porto Velho"}\r
+        }\r
+        "America:Puerto_Rico"{\r
+            ec{"Puerto Rico"}\r
+        }\r
+        "America:Punta_Arenas"{\r
+            ec{"Punta Arenas"}\r
+        }\r
+        "America:Rainy_River"{\r
+            ec{"Rainy River"}\r
+        }\r
+        "America:Rankin_Inlet"{\r
+            ec{"Rankin Inlet"}\r
+        }\r
+        "America:Recife"{\r
+            ec{"Recife"}\r
+        }\r
+        "America:Regina"{\r
+            ec{"Regina"}\r
+        }\r
+        "America:Resolute"{\r
+            ec{"Resolute"}\r
+        }\r
+        "America:Rio_Branco"{\r
+            ec{"Rio Branco"}\r
+        }\r
+        "America:Santa_Isabel"{\r
+            ec{"Santa Isabel"}\r
+        }\r
+        "America:Santarem"{\r
+            ec{"Santarém"}\r
+        }\r
+        "America:Santiago"{\r
+            ec{"Santiago"}\r
+        }\r
+        "America:Santo_Domingo"{\r
+            ec{"Santo Domingo"}\r
+        }\r
+        "America:Sao_Paulo"{\r
+            ec{"São Paulo"}\r
+        }\r
+        "America:Scoresbysund"{\r
+            ec{"Ittoqqortoormiit"}\r
+        }\r
+        "America:Sitka"{\r
+            ec{"Sitka"}\r
+        }\r
+        "America:St_Barthelemy"{\r
+            ec{"Saint-Barthélemy"}\r
+        }\r
+        "America:St_Johns"{\r
+            ec{"St. John’s"}\r
+        }\r
+        "America:St_Kitts"{\r
+            ec{"St. Kitts"}\r
+        }\r
+        "America:St_Lucia"{\r
+            ec{"St. Lucia"}\r
+        }\r
+        "America:St_Thomas"{\r
+            ec{"St. Thomas"}\r
+        }\r
+        "America:St_Vincent"{\r
+            ec{"St. Vincent"}\r
+        }\r
+        "America:Swift_Current"{\r
+            ec{"Swift Current"}\r
+        }\r
+        "America:Tegucigalpa"{\r
+            ec{"Tegucigalpa"}\r
+        }\r
+        "America:Thule"{\r
+            ec{"Thule"}\r
+        }\r
+        "America:Thunder_Bay"{\r
+            ec{"Thunder Bay"}\r
+        }\r
+        "America:Tijuana"{\r
+            ec{"Tijuana"}\r
+        }\r
+        "America:Toronto"{\r
+            ec{"Toronto"}\r
+        }\r
+        "America:Tortola"{\r
+            ec{"Tortola"}\r
+        }\r
+        "America:Vancouver"{\r
+            ec{"Vancouver"}\r
+        }\r
+        "America:Whitehorse"{\r
+            ec{"Whitehorse"}\r
+        }\r
+        "America:Winnipeg"{\r
+            ec{"Winnipeg"}\r
+        }\r
+        "America:Yakutat"{\r
+            ec{"Yakutat"}\r
+        }\r
+        "America:Yellowknife"{\r
+            ec{"Yellowknife"}\r
+        }\r
+        "Antarctica:Casey"{\r
+            ec{"Casey"}\r
+        }\r
+        "Antarctica:Davis"{\r
+            ec{"Davis"}\r
+        }\r
+        "Antarctica:DumontDUrville"{\r
+            ec{"Dumont d’Urville"}\r
+        }\r
+        "Antarctica:Macquarie"{\r
+            ec{"Macquarie"}\r
+        }\r
+        "Antarctica:Mawson"{\r
+            ec{"Mawson"}\r
+        }\r
+        "Antarctica:McMurdo"{\r
+            ec{"McMurdo"}\r
+        }\r
+        "Antarctica:Palmer"{\r
+            ec{"Palmer"}\r
+        }\r
+        "Antarctica:Rothera"{\r
+            ec{"Rothera"}\r
+        }\r
+        "Antarctica:Syowa"{\r
+            ec{"Syowa"}\r
+        }\r
+        "Antarctica:Troll"{\r
+            ec{"Troll"}\r
+        }\r
+        "Antarctica:Vostok"{\r
+            ec{"Vostok"}\r
+        }\r
+        "Arctic:Longyearbyen"{\r
+            ec{"Longyearbyen"}\r
+        }\r
+        "Asia:Aden"{\r
+            ec{"Aden"}\r
+        }\r
+        "Asia:Almaty"{\r
+            ec{"Almaty"}\r
+        }\r
+        "Asia:Amman"{\r
+            ec{"Amman"}\r
+        }\r
+        "Asia:Anadyr"{\r
+            ec{"Anadyr"}\r
+        }\r
+        "Asia:Aqtau"{\r
+            ec{"Aktau"}\r
+        }\r
+        "Asia:Aqtobe"{\r
+            ec{"Aqtöbe"}\r
+        }\r
+        "Asia:Ashgabat"{\r
+            ec{"Asjkhabad"}\r
+        }\r
+        "Asia:Atyrau"{\r
+            ec{"Atyrau"}\r
+        }\r
+        "Asia:Baghdad"{\r
+            ec{"Bagdad"}\r
+        }\r
+        "Asia:Bahrain"{\r
+            ec{"Bahrain"}\r
+        }\r
+        "Asia:Baku"{\r
+            ec{"Baku"}\r
+        }\r
+        "Asia:Bangkok"{\r
+            ec{"Bangkok"}\r
+        }\r
+        "Asia:Barnaul"{\r
+            ec{"Barnaul"}\r
+        }\r
+        "Asia:Beirut"{\r
+            ec{"Beirut"}\r
+        }\r
+        "Asia:Bishkek"{\r
+            ec{"Bisjkek"}\r
+        }\r
+        "Asia:Brunei"{\r
+            ec{"Brunei"}\r
+        }\r
+        "Asia:Calcutta"{\r
+            ec{"Kolkata"}\r
+        }\r
+        "Asia:Chita"{\r
+            ec{"Tsjita"}\r
+        }\r
+        "Asia:Choibalsan"{\r
+            ec{"Choybalsan"}\r
+        }\r
+        "Asia:Colombo"{\r
+            ec{"Colombo"}\r
+        }\r
+        "Asia:Damascus"{\r
+            ec{"Damaskus"}\r
+        }\r
+        "Asia:Dhaka"{\r
+            ec{"Dhaka"}\r
+        }\r
+        "Asia:Dili"{\r
+            ec{"Dili"}\r
+        }\r
+        "Asia:Dubai"{\r
+            ec{"Dubai"}\r
+        }\r
+        "Asia:Dushanbe"{\r
+            ec{"Dusjanbe"}\r
+        }\r
+        "Asia:Famagusta"{\r
+            ec{"Famagusta"}\r
+        }\r
+        "Asia:Gaza"{\r
+            ec{"Gaza"}\r
+        }\r
+        "Asia:Hebron"{\r
+            ec{"Hebron"}\r
+        }\r
+        "Asia:Hong_Kong"{\r
+            ec{"Hongkong"}\r
+        }\r
+        "Asia:Hovd"{\r
+            ec{"Hovd"}\r
+        }\r
+        "Asia:Irkutsk"{\r
+            ec{"Irkutsk"}\r
+        }\r
+        "Asia:Jakarta"{\r
+            ec{"Jakarta"}\r
+        }\r
+        "Asia:Jayapura"{\r
+            ec{"Jajapura"}\r
+        }\r
+        "Asia:Jerusalem"{\r
+            ec{"Jerusalem"}\r
+        }\r
+        "Asia:Kabul"{\r
+            ec{"Kabul"}\r
+        }\r
+        "Asia:Kamchatka"{\r
+            ec{"Kamtsjatka"}\r
+        }\r
+        "Asia:Karachi"{\r
+            ec{"Karachi"}\r
+        }\r
+        "Asia:Katmandu"{\r
+            ec{"Katmandu"}\r
+        }\r
+        "Asia:Khandyga"{\r
+            ec{"Khandyga"}\r
+        }\r
+        "Asia:Krasnoyarsk"{\r
+            ec{"Krasnojarsk"}\r
+        }\r
+        "Asia:Kuala_Lumpur"{\r
+            ec{"Kuala Lumpur"}\r
+        }\r
+        "Asia:Kuching"{\r
+            ec{"Kuching"}\r
+        }\r
+        "Asia:Kuwait"{\r
+            ec{"Kuwait"}\r
+        }\r
+        "Asia:Macau"{\r
+            ec{"Macao"}\r
+        }\r
+        "Asia:Magadan"{\r
+            ec{"Magadan"}\r
+        }\r
+        "Asia:Makassar"{\r
+            ec{"Makassar"}\r
+        }\r
+        "Asia:Manila"{\r
+            ec{"Manila"}\r
+        }\r
+        "Asia:Muscat"{\r
+            ec{"Muskat"}\r
+        }\r
+        "Asia:Nicosia"{\r
+            ec{"Nikosia"}\r
+        }\r
+        "Asia:Novokuznetsk"{\r
+            ec{"Novokuznetsk"}\r
+        }\r
+        "Asia:Novosibirsk"{\r
+            ec{"Novosibirsk"}\r
+        }\r
+        "Asia:Omsk"{\r
+            ec{"Omsk"}\r
+        }\r
+        "Asia:Oral"{\r
+            ec{"Oral"}\r
+        }\r
+        "Asia:Phnom_Penh"{\r
+            ec{"Phnom Penh"}\r
+        }\r
+        "Asia:Pontianak"{\r
+            ec{"Pontianak"}\r
+        }\r
+        "Asia:Pyongyang"{\r
+            ec{"Pyongyang"}\r
+        }\r
+        "Asia:Qatar"{\r
+            ec{"Qatar"}\r
+        }\r
+        "Asia:Qostanay"{\r
+            ec{"Kostanaj"}\r
+        }\r
+        "Asia:Qyzylorda"{\r
+            ec{"Kyzylorda"}\r
+        }\r
+        "Asia:Rangoon"{\r
+            ec{"Yangon"}\r
+        }\r
+        "Asia:Riyadh"{\r
+            ec{"Riyadh"}\r
+        }\r
+        "Asia:Saigon"{\r
+            ec{"Ho Chi Minh-byen"}\r
+        }\r
+        "Asia:Sakhalin"{\r
+            ec{"Sakhalin"}\r
+        }\r
+        "Asia:Samarkand"{\r
+            ec{"Samarkand"}\r
+        }\r
+        "Asia:Seoul"{\r
+            ec{"Seoul"}\r
+        }\r
+        "Asia:Shanghai"{\r
+            ec{"Shanghai"}\r
+        }\r
+        "Asia:Singapore"{\r
+            ec{"Singapore"}\r
+        }\r
+        "Asia:Srednekolymsk"{\r
+            ec{"Srednekolymsk"}\r
+        }\r
+        "Asia:Taipei"{\r
+            ec{"Taipei"}\r
+        }\r
+        "Asia:Tashkent"{\r
+            ec{"Tasjkent"}\r
+        }\r
+        "Asia:Tbilisi"{\r
+            ec{"Tbilisi"}\r
+        }\r
+        "Asia:Tehran"{\r
+            ec{"Teheran"}\r
+        }\r
+        "Asia:Thimphu"{\r
+            ec{"Thimpu"}\r
+        }\r
+        "Asia:Tokyo"{\r
+            ec{"Tokyo"}\r
+        }\r
+        "Asia:Tomsk"{\r
+            ec{"Tomsk"}\r
+        }\r
+        "Asia:Ulaanbaatar"{\r
+            ec{"Ulan Bator"}\r
+        }\r
+        "Asia:Urumqi"{\r
+            ec{"Ürümqi"}\r
+        }\r
+        "Asia:Ust-Nera"{\r
+            ec{"Ust-Nera"}\r
+        }\r
+        "Asia:Vientiane"{\r
+            ec{"Vientiane"}\r
+        }\r
+        "Asia:Vladivostok"{\r
+            ec{"Vladivostok"}\r
+        }\r
+        "Asia:Yakutsk"{\r
+            ec{"Jakutsk"}\r
+        }\r
+        "Asia:Yekaterinburg"{\r
+            ec{"Jekaterinburg"}\r
+        }\r
+        "Asia:Yerevan"{\r
+            ec{"Jerevan"}\r
+        }\r
+        "Atlantic:Azores"{\r
+            ec{"Asorene"}\r
+        }\r
+        "Atlantic:Bermuda"{\r
+            ec{"Bermuda"}\r
+        }\r
+        "Atlantic:Canary"{\r
+            ec{"Kanariøyene"}\r
+        }\r
+        "Atlantic:Cape_Verde"{\r
+            ec{"Kapp Verde"}\r
+        }\r
+        "Atlantic:Faeroe"{\r
+            ec{"Færøyene"}\r
+        }\r
+        "Atlantic:Madeira"{\r
+            ec{"Madeira"}\r
+        }\r
+        "Atlantic:Reykjavik"{\r
+            ec{"Reykjavík"}\r
+        }\r
+        "Atlantic:South_Georgia"{\r
+            ec{"Sør-Georgia"}\r
+        }\r
+        "Atlantic:St_Helena"{\r
+            ec{"St. Helena"}\r
+        }\r
+        "Atlantic:Stanley"{\r
+            ec{"Stanley"}\r
+        }\r
+        "Australia:Adelaide"{\r
+            ec{"Adelaide"}\r
+        }\r
+        "Australia:Brisbane"{\r
+            ec{"Brisbane"}\r
+        }\r
+        "Australia:Broken_Hill"{\r
+            ec{"Broken Hill"}\r
+        }\r
+        "Australia:Currie"{\r
+            ec{"Currie"}\r
+        }\r
+        "Australia:Darwin"{\r
+            ec{"Darwin"}\r
+        }\r
+        "Australia:Eucla"{\r
+            ec{"Eucla"}\r
+        }\r
+        "Australia:Hobart"{\r
+            ec{"Hobart"}\r
+        }\r
+        "Australia:Lindeman"{\r
+            ec{"Lindeman"}\r
+        }\r
+        "Australia:Lord_Howe"{\r
+            ec{"Lord Howe"}\r
+        }\r
+        "Australia:Melbourne"{\r
+            ec{"Melbourne"}\r
+        }\r
+        "Australia:Perth"{\r
+            ec{"Perth"}\r
+        }\r
+        "Australia:Sydney"{\r
+            ec{"Sydney"}\r
+        }\r
+        "Etc:UTC"{\r
+            ls{"koordinert universaltid"}\r
+        }\r
+        "Etc:Unknown"{\r
+            ec{"ukjent by"}\r
+        }\r
+        "Europe:Amsterdam"{\r
+            ec{"Amsterdam"}\r
+        }\r
+        "Europe:Andorra"{\r
+            ec{"Andorra"}\r
+        }\r
+        "Europe:Astrakhan"{\r
+            ec{"Astrakhan"}\r
+        }\r
+        "Europe:Athens"{\r
+            ec{"Athen"}\r
+        }\r
+        "Europe:Belgrade"{\r
+            ec{"Beograd"}\r
+        }\r
+        "Europe:Berlin"{\r
+            ec{"Berlin"}\r
+        }\r
+        "Europe:Bratislava"{\r
+            ec{"Bratislava"}\r
+        }\r
+        "Europe:Brussels"{\r
+            ec{"Brussel"}\r
+        }\r
+        "Europe:Bucharest"{\r
+            ec{"București"}\r
+        }\r
+        "Europe:Budapest"{\r
+            ec{"Budapest"}\r
+        }\r
+        "Europe:Busingen"{\r
+            ec{"Büsingen"}\r
+        }\r
+        "Europe:Chisinau"{\r
+            ec{"Chișinău"}\r
+        }\r
+        "Europe:Copenhagen"{\r
+            ec{"København"}\r
+        }\r
+        "Europe:Dublin"{\r
+            ec{"Dublin"}\r
+            ld{"irsk sommertid"}\r
+        }\r
+        "Europe:Gibraltar"{\r
+            ec{"Gibraltar"}\r
+        }\r
+        "Europe:Guernsey"{\r
+            ec{"Guernsey"}\r
+        }\r
+        "Europe:Helsinki"{\r
+            ec{"Helsingfors"}\r
+        }\r
+        "Europe:Isle_of_Man"{\r
+            ec{"Man"}\r
+        }\r
+        "Europe:Istanbul"{\r
+            ec{"Istanbul"}\r
+        }\r
+        "Europe:Jersey"{\r
+            ec{"Jersey"}\r
+        }\r
+        "Europe:Kaliningrad"{\r
+            ec{"Kaliningrad"}\r
+        }\r
+        "Europe:Kiev"{\r
+            ec{"Kiev"}\r
+        }\r
+        "Europe:Kirov"{\r
+            ec{"Kirov"}\r
+        }\r
+        "Europe:Lisbon"{\r
+            ec{"Lisboa"}\r
+        }\r
+        "Europe:Ljubljana"{\r
+            ec{"Ljubljana"}\r
+        }\r
+        "Europe:London"{\r
+            ec{"London"}\r
+            ld{"britisk sommertid"}\r
+        }\r
+        "Europe:Luxembourg"{\r
+            ec{"Luxemburg"}\r
+        }\r
+        "Europe:Madrid"{\r
+            ec{"Madrid"}\r
+        }\r
+        "Europe:Malta"{\r
+            ec{"Malta"}\r
+        }\r
+        "Europe:Mariehamn"{\r
+            ec{"Mariehamn"}\r
+        }\r
+        "Europe:Minsk"{\r
+            ec{"Minsk"}\r
+        }\r
+        "Europe:Monaco"{\r
+            ec{"Monaco"}\r
+        }\r
+        "Europe:Moscow"{\r
+            ec{"Moskva"}\r
+        }\r
+        "Europe:Oslo"{\r
+            ec{"Oslo"}\r
+        }\r
+        "Europe:Paris"{\r
+            ec{"Paris"}\r
+        }\r
+        "Europe:Podgorica"{\r
+            ec{"Podgorica"}\r
+        }\r
+        "Europe:Prague"{\r
+            ec{"Praha"}\r
+        }\r
+        "Europe:Riga"{\r
+            ec{"Riga"}\r
+        }\r
+        "Europe:Rome"{\r
+            ec{"Roma"}\r
+        }\r
+        "Europe:Samara"{\r
+            ec{"Samara"}\r
+        }\r
+        "Europe:San_Marino"{\r
+            ec{"San Marino"}\r
+        }\r
+        "Europe:Sarajevo"{\r
+            ec{"Sarajevo"}\r
+        }\r
+        "Europe:Saratov"{\r
+            ec{"Saratov"}\r
+        }\r
+        "Europe:Simferopol"{\r
+            ec{"Simferopol"}\r
+        }\r
+        "Europe:Skopje"{\r
+            ec{"Skopje"}\r
+        }\r
+        "Europe:Sofia"{\r
+            ec{"Sofia"}\r
+        }\r
+        "Europe:Stockholm"{\r
+            ec{"Stockholm"}\r
+        }\r
+        "Europe:Tallinn"{\r
+            ec{"Tallinn"}\r
+        }\r
+        "Europe:Tirane"{\r
+            ec{"Tirana"}\r
+        }\r
+        "Europe:Ulyanovsk"{\r
+            ec{"Uljanovsk"}\r
+        }\r
+        "Europe:Uzhgorod"{\r
+            ec{"Uzjhorod"}\r
+        }\r
+        "Europe:Vaduz"{\r
+            ec{"Vaduz"}\r
+        }\r
+        "Europe:Vatican"{\r
+            ec{"Vatikanstaten"}\r
+        }\r
+        "Europe:Vienna"{\r
+            ec{"Wien"}\r
+        }\r
+        "Europe:Vilnius"{\r
+            ec{"Vilnius"}\r
+        }\r
+        "Europe:Volgograd"{\r
+            ec{"Volgograd"}\r
+        }\r
+        "Europe:Warsaw"{\r
+            ec{"Warszawa"}\r
+        }\r
+        "Europe:Zagreb"{\r
+            ec{"Zagreb"}\r
+        }\r
+        "Europe:Zaporozhye"{\r
+            ec{"Zaporizjzja"}\r
+        }\r
+        "Europe:Zurich"{\r
+            ec{"Zürich"}\r
+        }\r
+        "Indian:Antananarivo"{\r
+            ec{"Antananarivo"}\r
+        }\r
+        "Indian:Chagos"{\r
+            ec{"Chagos"}\r
+        }\r
+        "Indian:Christmas"{\r
+            ec{"Christmasøya"}\r
+        }\r
+        "Indian:Cocos"{\r
+            ec{"Kokosøyene"}\r
+        }\r
+        "Indian:Comoro"{\r
+            ec{"Komorene"}\r
+        }\r
+        "Indian:Kerguelen"{\r
+            ec{"Kerguelen"}\r
+        }\r
+        "Indian:Mahe"{\r
+            ec{"Mahé"}\r
+        }\r
+        "Indian:Maldives"{\r
+            ec{"Maldivene"}\r
+        }\r
+        "Indian:Mauritius"{\r
+            ec{"Mauritius"}\r
+        }\r
+        "Indian:Mayotte"{\r
+            ec{"Mayotte"}\r
+        }\r
+        "Indian:Reunion"{\r
+            ec{"Réunion"}\r
+        }\r
+        "Pacific:Apia"{\r
+            ec{"Apia"}\r
+        }\r
+        "Pacific:Auckland"{\r
+            ec{"Auckland"}\r
+        }\r
+        "Pacific:Bougainville"{\r
+            ec{"Bougainville"}\r
+        }\r
+        "Pacific:Chatham"{\r
+            ec{"Chatham"}\r
+        }\r
+        "Pacific:Easter"{\r
+            ec{"Påskeøya"}\r
+        }\r
+        "Pacific:Efate"{\r
+            ec{"Efate"}\r
+        }\r
+        "Pacific:Enderbury"{\r
+            ec{"Enderbury"}\r
+        }\r
+        "Pacific:Fakaofo"{\r
+            ec{"Fakaofo"}\r
+        }\r
+        "Pacific:Fiji"{\r
+            ec{"Fiji"}\r
+        }\r
+        "Pacific:Funafuti"{\r
+            ec{"Funafuti"}\r
+        }\r
+        "Pacific:Galapagos"{\r
+            ec{"Galápagosøyene"}\r
+        }\r
+        "Pacific:Gambier"{\r
+            ec{"Gambier"}\r
+        }\r
+        "Pacific:Guadalcanal"{\r
+            ec{"Guadalcanal"}\r
+        }\r
+        "Pacific:Guam"{\r
+            ec{"Guam"}\r
+        }\r
+        "Pacific:Honolulu"{\r
+            ec{"Honolulu"}\r
+        }\r
+        "Pacific:Johnston"{\r
+            ec{"Johnston"}\r
+        }\r
+        "Pacific:Kiritimati"{\r
+            ec{"Kiritimati"}\r
+        }\r
+        "Pacific:Kosrae"{\r
+            ec{"Kosrae"}\r
+        }\r
+        "Pacific:Kwajalein"{\r
+            ec{"Kwajalein"}\r
+        }\r
+        "Pacific:Majuro"{\r
+            ec{"Majuro"}\r
+        }\r
+        "Pacific:Marquesas"{\r
+            ec{"Marquesas"}\r
+        }\r
+        "Pacific:Midway"{\r
+            ec{"Midway"}\r
+        }\r
+        "Pacific:Nauru"{\r
+            ec{"Nauru"}\r
+        }\r
+        "Pacific:Niue"{\r
+            ec{"Niue"}\r
+        }\r
+        "Pacific:Norfolk"{\r
+            ec{"Norfolkøya"}\r
+        }\r
+        "Pacific:Noumea"{\r
+            ec{"Nouméa"}\r
+        }\r
+        "Pacific:Pago_Pago"{\r
+            ec{"Pago Pago"}\r
+        }\r
+        "Pacific:Palau"{\r
+            ec{"Palau"}\r
+        }\r
+        "Pacific:Pitcairn"{\r
+            ec{"Pitcairn"}\r
+        }\r
+        "Pacific:Ponape"{\r
+            ec{"Pohnpei"}\r
+        }\r
+        "Pacific:Port_Moresby"{\r
+            ec{"Port Moresby"}\r
+        }\r
+        "Pacific:Rarotonga"{\r
+            ec{"Rarotonga"}\r
+        }\r
+        "Pacific:Saipan"{\r
+            ec{"Saipan"}\r
+        }\r
+        "Pacific:Tahiti"{\r
+            ec{"Tahiti"}\r
+        }\r
+        "Pacific:Tarawa"{\r
+            ec{"Tarawa"}\r
+        }\r
+        "Pacific:Tongatapu"{\r
+            ec{"Tongatapu"}\r
+        }\r
+        "Pacific:Truk"{\r
+            ec{"Chuuk"}\r
+        }\r
+        "Pacific:Wake"{\r
+            ec{"Wake"}\r
+        }\r
+        "Pacific:Wallis"{\r
+            ec{"Wallis"}\r
+        }\r
+        "meta:Acre"{\r
+            ld{"Acre sommertid"}\r
+            lg{"Acre-tid"}\r
+            ls{"Acre normaltid"}\r
+        }\r
+        "meta:Afghanistan"{\r
+            ls{"afghansk tid"}\r
+        }\r
+        "meta:Africa_Central"{\r
+            ls{"sentralafrikansk tid"}\r
+        }\r
+        "meta:Africa_Eastern"{\r
+            ls{"østafrikansk tid"}\r
+        }\r
+        "meta:Africa_Southern"{\r
+            ls{"sørafrikansk tid"}\r
+        }\r
+        "meta:Africa_Western"{\r
+            ld{"vestafrikansk sommertid"}\r
+            lg{"vestafrikansk tid"}\r
+            ls{"vestafrikansk normaltid"}\r
+        }\r
+        "meta:Alaska"{\r
+            ld{"alaskisk sommertid"}\r
+            lg{"alaskisk tid"}\r
+            ls{"alaskisk normaltid"}\r
+            sd{"AKDT"}\r
+            sg{"AKT"}\r
+            ss{"AKST"}\r
+        }\r
+        "meta:Almaty"{\r
+            ld{"Almaty, sommertid"}\r
+            lg{"Almaty-tid"}\r
+            ls{"Almaty, standardtid"}\r
+        }\r
+        "meta:Amazon"{\r
+            ld{"sommertid for Amazonas"}\r
+            lg{"tidssone for Amazonas"}\r
+            ls{"normaltid for Amazonas"}\r
+        }\r
+        "meta:America_Central"{\r
+            ld{"sommertid for det sentrale Nord-Amerika"}\r
+            lg{"tidssone for det sentrale Nord-Amerika"}\r
+            ls{"normaltid for det sentrale Nord-Amerika"}\r
+            sd{"CDT"}\r
+            sg{"CT"}\r
+            ss{"CST"}\r
+        }\r
+        "meta:America_Eastern"{\r
+            ld{"sommertid for den nordamerikanske østkysten"}\r
+            lg{"tidssone for den nordamerikanske østkysten"}\r
+            ls{"normaltid for den nordamerikanske østkysten"}\r
+            sd{"EDT"}\r
+            sg{"ET"}\r
+            ss{"EST"}\r
+        }\r
+        "meta:America_Mountain"{\r
+            ld{"sommertid for Rocky Mountains (USA)"}\r
+            lg{"tidssone for Rocky Mountains (USA)"}\r
+            ls{"normaltid for Rocky Mountains (USA)"}\r
+            sd{"MDT"}\r
+            sg{"MT"}\r
+            ss{"MST"}\r
+        }\r
+        "meta:America_Pacific"{\r
+            ld{"sommertid for den nordamerikanske Stillehavskysten"}\r
+            lg{"tidssone for den nordamerikanske Stillehavskysten"}\r
+            ls{"normaltid for den nordamerikanske Stillehavskysten"}\r
+            sd{"PDT"}\r
+            sg{"PT"}\r
+            ss{"PST"}\r
+        }\r
+        "meta:Anadyr"{\r
+            ld{"Russisk (Anadyr) sommertid"}\r
+            lg{"Russisk (Anadyr) tid"}\r
+            ls{"Russisk (Anadyr) normaltid"}\r
+        }\r
+        "meta:Apia"{\r
+            ld{"sommertid for Apia"}\r
+            lg{"tidssone for Apia"}\r
+            ls{"normaltid for Apia"}\r
+        }\r
+        "meta:Aqtau"{\r
+            ld{"Aqtau, sommertid"}\r
+            lg{"Aqtau-tid"}\r
+            ls{"Aqtau, standardtid"}\r
+        }\r
+        "meta:Aqtobe"{\r
+            ld{"Aqtobe, sommertid"}\r
+            lg{"Aqtobe-tid"}\r
+            ls{"Aqtobe, standardtid"}\r
+        }\r
+        "meta:Arabian"{\r
+            ld{"arabisk sommertid"}\r
+            lg{"arabisk tid"}\r
+            ls{"arabisk standardtid"}\r
+        }\r
+        "meta:Argentina"{\r
+            ld{"argentinsk sommertid"}\r
+            lg{"argentinsk tid"}\r
+            ls{"argentinsk normaltid"}\r
+        }\r
+        "meta:Argentina_Western"{\r
+            ld{"vestargentinsk sommertid"}\r
+            lg{"vestargentinsk tid"}\r
+            ls{"vestargentinsk normaltid"}\r
+        }\r
+        "meta:Armenia"{\r
+            ld{"armensk sommertid"}\r
+            lg{"armensk tid"}\r
+            ls{"armensk normaltid"}\r
+        }\r
+        "meta:Atlantic"{\r
+            ld{"sommertid for den nordamerikanske atlanterhavskysten"}\r
+            lg{"tidssone for den nordamerikanske atlanterhavskysten"}\r
+            ls{"normaltid for den nordamerikanske atlanterhavskysten"}\r
+            sd{"ADT"}\r
+            sg{"AT"}\r
+            ss{"AST"}\r
+        }\r
+        "meta:Australia_Central"{\r
+            ld{"sentralaustralsk sommertid"}\r
+            lg{"sentralaustralsk tid"}\r
+            ls{"sentralaustralsk normaltid"}\r
+        }\r
+        "meta:Australia_CentralWestern"{\r
+            ld{"vest-sentralaustralsk sommertid"}\r
+            lg{"vest-sentralaustralsk tid"}\r
+            ls{"vest-sentralaustralsk normaltid"}\r
+        }\r
+        "meta:Australia_Eastern"{\r
+            ld{"østaustralsk sommertid"}\r
+            lg{"østaustralsk tid"}\r
+            ls{"østaustralsk normaltid"}\r
+        }\r
+        "meta:Australia_Western"{\r
+            ld{"vestaustralsk sommertid"}\r
+            lg{"vestaustralsk tid"}\r
+            ls{"vestaustralsk normaltid"}\r
+        }\r
+        "meta:Azerbaijan"{\r
+            ld{"aserbajdsjansk sommertid"}\r
+            lg{"aserbajdsjansk tid"}\r
+            ls{"aserbajdsjansk normaltid"}\r
+        }\r
+        "meta:Azores"{\r
+            ld{"asorisk sommertid"}\r
+            lg{"asorisk tid"}\r
+            ls{"asorisk normaltid"}\r
+        }\r
+        "meta:Bangladesh"{\r
+            ld{"bangladeshisk sommertid"}\r
+            lg{"bangladeshisk tid"}\r
+            ls{"bangladeshisk normaltid"}\r
+        }\r
+        "meta:Bhutan"{\r
+            ls{"bhutansk tid"}\r
+        }\r
+        "meta:Bolivia"{\r
+            ls{"boliviansk tid"}\r
+        }\r
+        "meta:Brasilia"{\r
+            ld{"sommertid for Brasilia"}\r
+            lg{"tidssone for Brasilia"}\r
+            ls{"normaltid for Brasilia"}\r
+        }\r
+        "meta:Brunei"{\r
+            ls{"tidssone for Brunei Darussalam"}\r
+        }\r
+        "meta:Cape_Verde"{\r
+            ld{"kappverdisk sommertid"}\r
+            lg{"kappverdisk tid"}\r
+            ls{"kappverdisk normaltid"}\r
+        }\r
+        "meta:Casey"{\r
+            ls{"Casey-tid"}\r
+        }\r
+        "meta:Chamorro"{\r
+            ls{"tidssone for Chamorro"}\r
+        }\r
+        "meta:Chatham"{\r
+            ld{"sommertid for Chatham"}\r
+            lg{"tidssone for Chatham"}\r
+            ls{"normaltid for Chatham"}\r
+        }\r
+        "meta:Chile"{\r
+            ld{"chilensk sommertid"}\r
+            lg{"chilensk tid"}\r
+            ls{"chilensk normaltid"}\r
+        }\r
+        "meta:China"{\r
+            ld{"kinesisk sommertid"}\r
+            lg{"kinesisk tid"}\r
+            ls{"kinesisk normaltid"}\r
+        }\r
+        "meta:Choibalsan"{\r
+            ld{"sommertid for Tsjojbalsan"}\r
+            lg{"tidssone for Tsjojbalsan"}\r
+            ls{"normaltid for Tsjojbalsan"}\r
+        }\r
+        "meta:Christmas"{\r
+            ls{"tidssone for Christmasøya"}\r
+        }\r
+        "meta:Cocos"{\r
+            ls{"tidssone for Kokosøyene"}\r
+        }\r
+        "meta:Colombia"{\r
+            ld{"colombiansk sommertid"}\r
+            lg{"colombiansk tid"}\r
+            ls{"colombiansk normaltid"}\r
+        }\r
+        "meta:Cook"{\r
+            ld{"halv sommertid for Cookøyene"}\r
+            lg{"tidssone for Cookøyene"}\r
+            ls{"normaltid for Cookøyene"}\r
+        }\r
+        "meta:Cuba"{\r
+            ld{"cubansk sommertid"}\r
+            lg{"cubansk tid"}\r
+            ls{"cubansk normaltid"}\r
+        }\r
+        "meta:Davis"{\r
+            ls{"tidssone for Davis"}\r
+        }\r
+        "meta:DumontDUrville"{\r
+            ls{"tidssone for Dumont d’Urville"}\r
+        }\r
+        "meta:East_Timor"{\r
+            ls{"østtimoresisk tid"}\r
+        }\r
+        "meta:Easter"{\r
+            ld{"sommertid for Påskeøya"}\r
+            lg{"tidssone for Påskeøya"}\r
+            ls{"normaltid for Påskeøya"}\r
+        }\r
+        "meta:Ecuador"{\r
+            ls{"ecuadoriansk tid"}\r
+        }\r
+        "meta:Europe_Central"{\r
+            ld{"sentraleuropeisk sommertid"}\r
+            lg{"sentraleuropeisk tid"}\r
+            ls{"sentraleuropeisk normaltid"}\r
+            sd{"CEST"}\r
+            sg{"CET"}\r
+            ss{"CET"}\r
+        }\r
+        "meta:Europe_Eastern"{\r
+            ld{"østeuropeisk sommertid"}\r
+            lg{"østeuropeisk tid"}\r
+            ls{"østeuropeisk normaltid"}\r
+            sd{"EEST"}\r
+            sg{"EET"}\r
+            ss{"EET"}\r
+        }\r
+        "meta:Europe_Further_Eastern"{\r
+            ls{"fjern-østeuropeisk tid"}\r
+        }\r
+        "meta:Europe_Western"{\r
+            ld{"vesteuropeisk sommertid"}\r
+            lg{"vesteuropeisk tid"}\r
+            ls{"vesteuropeisk normaltid"}\r
+            sd{"WEST"}\r
+            sg{"WET"}\r
+            ss{"WET"}\r
+        }\r
+        "meta:Falkland"{\r
+            ld{"sommertid for Falklandsøyene"}\r
+            lg{"tidssone for Falklandsøyene"}\r
+            ls{"normaltid for Falklandsøyene"}\r
+        }\r
+        "meta:Fiji"{\r
+            ld{"fijiansk sommertid"}\r
+            lg{"fijiansk tid"}\r
+            ls{"fijiansk normaltid"}\r
+        }\r
+        "meta:French_Guiana"{\r
+            ls{"tidssone for Fransk Guyana"}\r
+        }\r
+        "meta:French_Southern"{\r
+            ls{"tidssone for De franske sørterritorier"}\r
+        }\r
+        "meta:GMT"{\r
+            ls{"Greenwich middeltid"}\r
+            ss{"GMT"}\r
+        }\r
+        "meta:Galapagos"{\r
+            ls{"tidssone for Galápagosøyene"}\r
+        }\r
+        "meta:Gambier"{\r
+            ls{"tidssone for Gambier"}\r
+        }\r
+        "meta:Georgia"{\r
+            ld{"georgisk sommertid"}\r
+            lg{"georgisk tid"}\r
+            ls{"georgisk normaltid"}\r
+        }\r
+        "meta:Gilbert_Islands"{\r
+            ls{"tidssone for Gilbertøyene"}\r
+        }\r
+        "meta:Greenland_Eastern"{\r
+            ld{"østgrønlandsk sommertid"}\r
+            lg{"østgrønlandsk tid"}\r
+            ls{"østgrønlandsk normaltid"}\r
+        }\r
+        "meta:Greenland_Western"{\r
+            ld{"vestgrønlandsk sommertid"}\r
+            lg{"vestgrønlandsk tid"}\r
+            ls{"vestgrønlandsk normaltid"}\r
+        }\r
+        "meta:Guam"{\r
+            ls{"Guam-tid"}\r
+        }\r
+        "meta:Gulf"{\r
+            ls{"tidssone for Persiabukta"}\r
+        }\r
+        "meta:Guyana"{\r
+            ls{"guyansk tid"}\r
+        }\r
+        "meta:Hawaii_Aleutian"{\r
+            ld{"sommertid for Hawaii og Aleutene"}\r
+            lg{"tidssone for Hawaii og Aleutene"}\r
+            ls{"normaltid for Hawaii og Aleutene"}\r
+            sd{"HADT"}\r
+            sg{"HAT"}\r
+            ss{"HAST"}\r
+        }\r
+        "meta:Hong_Kong"{\r
+            ld{"sommertid for Hongkong"}\r
+            lg{"tidssone for Hongkong"}\r
+            ls{"normaltid for Hongkong"}\r
+        }\r
+        "meta:Hovd"{\r
+            ld{"sommertid for Khovd"}\r
+            lg{"tidssone for Khovd"}\r
+            ls{"normaltid for Khovd"}\r
+        }\r
+        "meta:India"{\r
+            ls{"indisk tid"}\r
+        }\r
+        "meta:Indian_Ocean"{\r
+            ls{"tidssone for Indiahavet"}\r
+        }\r
+        "meta:Indochina"{\r
+            ls{"indokinesisk tid"}\r
+        }\r
+        "meta:Indonesia_Central"{\r
+            ls{"sentralindonesisk tid"}\r
+        }\r
+        "meta:Indonesia_Eastern"{\r
+            ls{"østindonesisk tid"}\r
+        }\r
+        "meta:Indonesia_Western"{\r
+            ls{"vestindonesisk tid"}\r
+        }\r
+        "meta:Iran"{\r
+            ld{"iransk sommertid"}\r
+            lg{"iransk tid"}\r
+            ls{"iransk normaltid"}\r
+        }\r
+        "meta:Irkutsk"{\r
+            ld{"sommertid for Irkutsk"}\r
+            lg{"tidssone for Irkutsk"}\r
+            ls{"normaltid for Irkutsk"}\r
+        }\r
+        "meta:Israel"{\r
+            ld{"israelsk sommertid"}\r
+            lg{"israelsk tid"}\r
+            ls{"israelsk normaltid"}\r
+        }\r
+        "meta:Japan"{\r
+            ld{"japansk sommertid"}\r
+            lg{"japansk tid"}\r
+            ls{"japansk normaltid"}\r
+        }\r
+        "meta:Kamchatka"{\r
+            ld{"Russisk (Petropavlovsk-Kamtsjatskij) sommertid"}\r
+            lg{"Russisk (Petropavlovsk-Kamtsjatskij) tid"}\r
+            ls{"Russisk (Petropavlovsk-Kamtsjatskij) normaltid"}\r
+        }\r
+        "meta:Kazakhstan_Eastern"{\r
+            ls{"østkasakhstansk tid"}\r
+        }\r
+        "meta:Kazakhstan_Western"{\r
+            ls{"vestkasakhstansk tid"}\r
+        }\r
+        "meta:Korea"{\r
+            ld{"koreansk sommertid"}\r
+            lg{"koreansk tid"}\r
+            ls{"koreansk normaltid"}\r
+        }\r
+        "meta:Kosrae"{\r
+            ls{"tidssone for Kosrae"}\r
+        }\r
+        "meta:Krasnoyarsk"{\r
+            ld{"sommertid for Krasnojarsk"}\r
+            lg{"tidssone for Krasnojarsk"}\r
+            ls{"normaltid for Krasnojarsk"}\r
+        }\r
+        "meta:Kyrgystan"{\r
+            ls{"kirgisisk tid"}\r
+        }\r
+        "meta:Lanka"{\r
+            ls{"Lanka-tid"}\r
+        }\r
+        "meta:Line_Islands"{\r
+            ls{"tidssone for Linjeøyene"}\r
+        }\r
+        "meta:Lord_Howe"{\r
+            ld{"sommertid for Lord Howe-øya"}\r
+            lg{"tidssone for Lord Howe-øya"}\r
+            ls{"normaltid for Lord Howe-øya"}\r
+        }\r
+        "meta:Macau"{\r
+            ld{"Macau, sommertid"}\r
+            lg{"Macau-tid"}\r
+            ls{"Macau, standardtid"}\r
+        }\r
+        "meta:Macquarie"{\r
+            ls{"tidssone for Macquarieøya"}\r
+        }\r
+        "meta:Magadan"{\r
+            ld{"sommertid for Magadan"}\r
+            lg{"tidssone for Magadan"}\r
+            ls{"normaltid for Magadan"}\r
+        }\r
+        "meta:Malaysia"{\r
+            ls{"malaysisk tid"}\r
+        }\r
+        "meta:Maldives"{\r
+            ls{"maldivisk tid"}\r
+        }\r
+        "meta:Marquesas"{\r
+            ls{"tidssone for Marquesasøyene"}\r
+        }\r
+        "meta:Marshall_Islands"{\r
+            ls{"marshallesisk tid"}\r
+        }\r
+        "meta:Mauritius"{\r
+            ld{"mauritisk sommertid"}\r
+            lg{"mauritisk tid"}\r
+            ls{"mauritisk normaltid"}\r
+        }\r
+        "meta:Mawson"{\r
+            ls{"tidssone for Mawson"}\r
+        }\r
+        "meta:Mexico_Northwest"{\r
+            ld{"sommertid for nordvestlige Mexico"}\r
+            lg{"tidssone for nordvestlige Mexico"}\r
+            ls{"normaltid for nordvestlige Mexico"}\r
+        }\r
+        "meta:Mexico_Pacific"{\r
+            ld{"sommertid for den meksikanske Stillehavskysten"}\r
+            lg{"tidssone for den meksikanske Stillehavskysten"}\r
+            ls{"normaltid for den meksikanske Stillehavskysten"}\r
+        }\r
+        "meta:Mongolia"{\r
+            ld{"sommertid for Ulan Bator"}\r
+            lg{"tidssone for Ulan Bator"}\r
+            ls{"normaltid for Ulan Bator"}\r
+        }\r
+        "meta:Moscow"{\r
+            ld{"sommertid for Moskva"}\r
+            lg{"tidssone for Moskva"}\r
+            ls{"normaltid for Moskva"}\r
+        }\r
+        "meta:Myanmar"{\r
+            ls{"myanmarsk tid"}\r
+        }\r
+        "meta:Nauru"{\r
+            ls{"naurisk tid"}\r
+        }\r
+        "meta:Nepal"{\r
+            ls{"nepalsk tid"}\r
+        }\r
+        "meta:New_Caledonia"{\r
+            ld{"kaledonsk sommertid"}\r
+            lg{"kaledonsk tid"}\r
+            ls{"kaledonsk normaltid"}\r
+        }\r
+        "meta:New_Zealand"{\r
+            ld{"newzealandsk sommertid"}\r
+            lg{"newzealandsk tid"}\r
+            ls{"newzealandsk normaltid"}\r
+        }\r
+        "meta:Newfoundland"{\r
+            ld{"sommertid for Newfoundland"}\r
+            lg{"tidssone for Newfoundland"}\r
+            ls{"normaltid for Newfoundland"}\r
+        }\r
+        "meta:Niue"{\r
+            ls{"tidssone for Niue"}\r
+        }\r
+        "meta:Norfolk"{\r
+            ld{"sommertid for Norfolkøya"}\r
+            lg{"tidssone for Norfolkøya"}\r
+            ls{"normaltid for Norfolkøya"}\r
+        }\r
+        "meta:Noronha"{\r
+            ld{"sommertid for Fernando de Noronha"}\r
+            lg{"tidssone for Fernando de Noronha"}\r
+            ls{"normaltid for Fernando de Noronha"}\r
+        }\r
+        "meta:North_Mariana"{\r
+            ls{"Nord-Marianene-tid"}\r
+        }\r
+        "meta:Novosibirsk"{\r
+            ld{"sommertid for Novosibirsk"}\r
+            lg{"tidssone for Novosibirsk"}\r
+            ls{"normaltid for Novosibirsk"}\r
+        }\r
+        "meta:Omsk"{\r
+            ld{"sommertid for Omsk"}\r
+            lg{"tidssone for Omsk"}\r
+            ls{"normaltid for Omsk"}\r
+        }\r
+        "meta:Pakistan"{\r
+            ld{"pakistansk sommertid"}\r
+            lg{"pakistansk tid"}\r
+            ls{"pakistansk normaltid"}\r
+        }\r
+        "meta:Palau"{\r
+            ls{"palauisk tid"}\r
+        }\r
+        "meta:Papua_New_Guinea"{\r
+            ls{"papuansk tid"}\r
+        }\r
+        "meta:Paraguay"{\r
+            ld{"paraguayansk sommertid"}\r
+            lg{"paraguayansk tid"}\r
+            ls{"paraguayansk normaltid"}\r
+        }\r
+        "meta:Peru"{\r
+            ld{"peruansk sommertid"}\r
+            lg{"peruansk tid"}\r
+            ls{"peruansk normaltid"}\r
+        }\r
+        "meta:Philippines"{\r
+            ld{"filippinsk sommertid"}\r
+            lg{"filippinsk tid"}\r
+            ls{"filippinsk normaltid"}\r
+        }\r
+        "meta:Phoenix_Islands"{\r
+            ls{"tidssone for Phoenixøyene"}\r
+        }\r
+        "meta:Pierre_Miquelon"{\r
+            ld{"sommertid for Saint-Pierre-et-Miquelon"}\r
+            lg{"tidssone for Saint-Pierre-et-Miquelon"}\r
+            ls{"normaltid for Saint-Pierre-et-Miquelon"}\r
+        }\r
+        "meta:Pitcairn"{\r
+            ls{"tidssone for Pitcairn"}\r
+        }\r
+        "meta:Ponape"{\r
+            ls{"tidssone for Pohnpei"}\r
+        }\r
+        "meta:Pyongyang"{\r
+            ls{"tidssone for Pyongyang"}\r
+        }\r
+        "meta:Qyzylorda"{\r
+            ld{"Qyzylorda, sommertid"}\r
+            lg{"Qyzylorda-tid"}\r
+            ls{"Qyzylorda, standardtid"}\r
+        }\r
+        "meta:Reunion"{\r
+            ls{"tidssone for Réunion"}\r
+        }\r
+        "meta:Rothera"{\r
+            ls{"tidssone for Rothera"}\r
+        }\r
+        "meta:Sakhalin"{\r
+            ld{"sommertid for Sakhalin"}\r
+            lg{"tidssone for Sakhalin"}\r
+            ls{"normaltid for Sakhalin"}\r
+        }\r
+        "meta:Samara"{\r
+            ld{"Russisk (Samara) sommertid"}\r
+            lg{"Russisk (Samara) tid"}\r
+            ls{"Russisk (Samara) normaltid"}\r
+        }\r
+        "meta:Samoa"{\r
+            ld{"samoansk sommertid"}\r
+            lg{"samoansk tid"}\r
+            ls{"samoansk normaltid"}\r
+        }\r
+        "meta:Seychelles"{\r
+            ls{"seychellisk tid"}\r
+        }\r
+        "meta:Singapore"{\r
+            ls{"singaporsk tid"}\r
+        }\r
+        "meta:Solomon"{\r
+            ls{"salomonsk tid"}\r
+        }\r
+        "meta:South_Georgia"{\r
+            ls{"tidssone for Sør-Georgia"}\r
+        }\r
+        "meta:Suriname"{\r
+            ls{"surinamsk tid"}\r
+        }\r
+        "meta:Syowa"{\r
+            ls{"tidssone for Syowa"}\r
+        }\r
+        "meta:Tahiti"{\r
+            ls{"tahitisk tid"}\r
+        }\r
+        "meta:Taipei"{\r
+            ld{"sommertid for Taipei"}\r
+            lg{"tidssone for Taipei"}\r
+            ls{"normaltid for Taipei"}\r
+        }\r
+        "meta:Tajikistan"{\r
+            ls{"tadsjikisk tid"}\r
+        }\r
+        "meta:Tokelau"{\r
+            ls{"tidssone for Tokelau"}\r
+        }\r
+        "meta:Tonga"{\r
+            ld{"tongansk sommertid"}\r
+            lg{"tongansk tid"}\r
+            ls{"tongansk normaltid"}\r
+        }\r
+        "meta:Truk"{\r
+            ls{"tidssone for Chuukøyene"}\r
+        }\r
+        "meta:Turkmenistan"{\r
+            ld{"turkmensk sommertid"}\r
+            lg{"turkmensk tid"}\r
+            ls{"turkmensk normaltid"}\r
+        }\r
+        "meta:Tuvalu"{\r
+            ls{"tuvalsk tid"}\r
+        }\r
+        "meta:Uruguay"{\r
+            ld{"uruguayansk sommertid"}\r
+            lg{"uruguayansk tid"}\r
+            ls{"uruguayansk normaltid"}\r
+        }\r
+        "meta:Uzbekistan"{\r
+            ld{"usbekisk sommertid"}\r
+            lg{"usbekisk tid"}\r
+            ls{"usbekisk normaltid"}\r
+        }\r
+        "meta:Vanuatu"{\r
+            ld{"vanuatisk sommertid"}\r
+            lg{"vanuatisk tid"}\r
+            ls{"vanuatisk normaltid"}\r
+        }\r
+        "meta:Venezuela"{\r
+            ls{"venezuelansk tid"}\r
+        }\r
+        "meta:Vladivostok"{\r
+            ld{"sommertid for Vladivostok"}\r
+            lg{"tidssone for Vladivostok"}\r
+            ls{"normaltid for Vladivostok"}\r
+        }\r
+        "meta:Volgograd"{\r
+            ld{"sommertid for Volgograd"}\r
+            lg{"tidssone for Volgograd"}\r
+            ls{"normaltid for Volgograd"}\r
+        }\r
+        "meta:Vostok"{\r
+            ls{"tidssone for Vostok"}\r
+        }\r
+        "meta:Wake"{\r
+            ls{"tidssone for Wake Island"}\r
+        }\r
+        "meta:Wallis"{\r
+            ls{"tidssone for Wallis- og Futunaøyene"}\r
+        }\r
+        "meta:Yakutsk"{\r
+            ld{"sommertid for Jakutsk"}\r
+            lg{"tidssone for Jakutsk"}\r
+            ls{"normaltid for Jakutsk"}\r
+        }\r
+        "meta:Yekaterinburg"{\r
+            ld{"sommertid for Jekaterinburg"}\r
+            lg{"tidssone for Jekaterinburg"}\r
+            ls{"normaltid for Jekaterinburg"}\r
+        }\r
+        fallbackFormat{"{1} ({0})"}\r
+        gmtFormat{"GMT{0}"}\r
+        gmtZeroFormat{"GMT"}\r
+        hourFormat{"+HH:mm;-HH:mm"}\r
+        regionFormat{"tidssone for {0}"}\r
+        regionFormatDaylight{"sommertid – {0}"}\r
+        regionFormatStandard{"normaltid – {0}"}\r
+    }\r
 }\r
index 40a8b61..312565f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 no_NO{\r
-    "%%ALIAS"{"nb_NO"}\r
+    "%%ALIAS"{"no"}\r
 }\r
index 04201f3..afa52d1 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html\r
 // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml\r
 root{\r
-    Version{"38.1"}\r
+    Version{"39"}\r
     zoneStrings{\r
         "Africa:Asmera"{\r
             ec{"Asmara"}\r
index 0ca0577..2d2fdea 100644 (file)
@@ -1604,7 +1604,7 @@ zh{
             ls{"印度洋时间"}\r
         }\r
         "meta:Indochina"{\r
-            ls{"印度支那时间"}\r
+            ls{"中南半岛时间"}\r
         }\r
         "meta:Indonesia_Central"{\r
             ls{"印度尼西亚中部时间"}\r
index feedcc4..cdde12c 100644 (file)
@@ -1627,7 +1627,7 @@ zh_Hant{
             ls{"印度洋時間"}\r
         }\r
         "meta:Indochina"{\r
-            ls{"印度支那時間"}\r
+            ls{"中南半島時間"}\r
         }\r
         "meta:Indonesia_Central"{\r
             ls{"印尼中部時間"}\r
index f24734d..fd5fd62 100644 (file)
@@ -566,9 +566,6 @@ zh_Hant_HK{
         "meta:India"{\r
             ls{"印度時間"}\r
         }\r
-        "meta:Indochina"{\r
-            ls{"中南半島時間"}\r
-        }\r
         "meta:Irkutsk"{\r
             ld{"伊爾庫茨克夏令時間"}\r
             lg{"伊爾庫茨克時間"}\r
index 21936c0..7f71598 100644 (file)
@@ -83,7 +83,7 @@ root
   cantSetOutBinMode { "Couldn't set standard output to binary mode." }\r
 \r
   cantOpenFromCodeset { "Couldn''t open converter for original encoding {0}: {1}.\n" } // 0:set, 1: err\r
-  cantOpenToCodeset { "Couldn''t open converteur for destination encoding {0}: {1}.\n" } // 0: set, 1: err\r
+  cantOpenToCodeset { "Couldn''t open converter for destination encoding {0}: {1}.\n" } // 0: set, 1: err\r
 \r
   cantCreateTranslit { "Couldn''t create transliteration \"{0}\": {1}.\n" } // 0: set, 1: err\r
   cantCreateTranslitParseErr { "Couldn''t create transliteration \"{0}\": {1}, line {2}, offset {3}.\n" } // 0: set, 1: err, 2: line, 3: offset\r
index b541d37..9d5ded5 100644 (file)
@@ -423,7 +423,7 @@ BasicTimeZone::getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial,
                         goto error;\r
                     }\r
                 } else {\r
-                    // Colllect transitions after the start time\r
+                    // Collect transitions after the start time\r
                     int32_t startTimes;\r
                     DateTimeRule::TimeRuleType timeType;\r
                     int32_t idx;\r
@@ -547,14 +547,23 @@ error:
 }\r
 \r
 void\r
-BasicTimeZone::getOffsetFromLocal(UDate /*date*/, int32_t /*nonExistingTimeOpt*/, int32_t /*duplicatedTimeOpt*/,\r
-                            int32_t& /*rawOffset*/, int32_t& /*dstOffset*/, UErrorCode& status) const {\r
+BasicTimeZone::getOffsetFromLocal(UDate /*date*/, UTimeZoneLocalOption /*nonExistingTimeOpt*/,\r
+                                  UTimeZoneLocalOption /*duplicatedTimeOpt*/,\r
+                                  int32_t& /*rawOffset*/, int32_t& /*dstOffset*/,\r
+                                  UErrorCode& status) const {\r
     if (U_FAILURE(status)) {\r
         return;\r
     }\r
     status = U_UNSUPPORTED_ERROR;\r
 }\r
 \r
+void BasicTimeZone::getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
+                                       int32_t& rawOffset, int32_t& dstOffset,\r
+                                       UErrorCode& status) const {\r
+    getOffsetFromLocal(date, (UTimeZoneLocalOption)nonExistingTimeOpt,\r
+                       (UTimeZoneLocalOption)duplicatedTimeOpt, rawOffset, dstOffset, status);\r
+}\r
+\r
 U_NAMESPACE_END\r
 \r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
index 2c70c5f..c155da5 100644 (file)
@@ -308,7 +308,7 @@ static ECalType getCalendarTypeForLocale(const char *locid) {
 \r
     calTypeBuf[0] = 0;\r
     if (U_SUCCESS(status) && order != NULL) {\r
-        // the first calender type is the default for the region\r
+        // the first calendar type is the default for the region\r
         int32_t len = 0;\r
         const UChar *uCalType = ures_getStringByIndex(order, 0, &len, &status);\r
         if (len < (int32_t)sizeof(calTypeBuf)) {\r
@@ -2291,7 +2291,7 @@ int32_t Calendar::fieldDifference(UDate targetMs, UCalendarDateFields field, UEr
     if (U_FAILURE(ec)) return 0;\r
     int32_t min = 0;\r
     double startMs = getTimeInMillis(ec);\r
-    // Always add from the start millis.  This accomodates\r
+    // Always add from the start millis.  This accommodates\r
     // operations like adding years from February 29, 2000 up to\r
     // February 29, 2004.  If 1, 1, 1, 1 is added to the year\r
     // field, the DOM gets pinned to 28 and stays there, giving an\r
index b7ead26..9be0618 100644 (file)
@@ -688,7 +688,7 @@ CollationBuilder::addRelation(int32_t strength, const UnicodeString &prefix,
         // A Hangul syllable completely inside a contraction is ok.\r
     }\r
     // Note: If there is a prefix, then the parser checked that\r
-    // both the prefix and the string beging with NFC boundaries (not Jamo V or T).\r
+    // both the prefix and the string begin with NFC boundaries (not Jamo V or T).\r
     // Therefore: prefix.isEmpty() || !isJamoVOrT(nfdString.charAt(0))\r
     // (While handling a Hangul syllable, prefixes on Jamo V or T\r
     // would not see the previous Jamo of that syllable.)\r
index 330e485..8b23be0 100644 (file)
@@ -255,12 +255,18 @@ DataBuilderCollationIterator::getDataCE32(UChar32 c) const {
 \r
 uint32_t\r
 DataBuilderCollationIterator::getCE32FromBuilderData(uint32_t ce32, UErrorCode &errorCode) {\r
+    if (U_FAILURE(errorCode)) { return 0; }\r
     U_ASSERT(Collation::hasCE32Tag(ce32, Collation::BUILDER_DATA_TAG));\r
     if((ce32 & CollationDataBuilder::IS_BUILDER_JAMO_CE32) != 0) {\r
         UChar32 jamo = Collation::indexFromCE32(ce32);\r
         return utrie2_get32(builder.trie, jamo);\r
     } else {\r
         ConditionalCE32 *cond = builder.getConditionalCE32ForCE32(ce32);\r
+        if (cond == nullptr) {\r
+            errorCode = U_INTERNAL_PROGRAM_ERROR;\r
+            // TODO: ICU-21531 figure out why this happens.\r
+            return 0;\r
+        }\r
         if(cond->builtCE32 == Collation::NO_CE32) {\r
             // Build the context-sensitive mappings into their runtime form and cache the result.\r
             cond->builtCE32 = builder.buildContext(cond, errorCode);\r
index f76a91a..cc31e8d 100644 (file)
@@ -282,6 +282,7 @@ void CompoundTransliterator::freeTransliterators(void) {
 CompoundTransliterator& CompoundTransliterator::operator=(\r
                                              const CompoundTransliterator& t)\r
 {\r
+    if (this == &t) { return *this; }  // self-assignment: no-op\r
     Transliterator::operator=(t);\r
     int32_t i = 0;\r
     UBool failed = FALSE;\r
index e94d8c5..b8b918f 100644 (file)
@@ -186,7 +186,7 @@ int32_t CharsetRecog_mbcs::match_mbcs(InputText *det, const uint16_t commonChars
         if (doubleByteCharCount == 0 && totalCharCount < 10) {\r
             // There weren't any multibyte sequences, and there was a low density of non-ASCII single bytes.\r
             // We don't have enough data to have any confidence.\r
-            // Statistical analysis of single byte non-ASCII charcters would probably help here.\r
+            // Statistical analysis of single byte non-ASCII characters would probably help here.\r
             confidence = 0;\r
         }\r
         else {\r
index a4082e2..ffd82d3 100644 (file)
@@ -155,7 +155,7 @@ UBool CharsetRecog_UTF_32::match(InputText* textIn, CharsetMatch *results) const
     } else if (numValid > 0 && numInvalid == 0) {\r
         confidence = 80;\r
     } else if (numValid > numInvalid*10) {\r
-        // Probably corruput UTF-32BE data.  Valid sequences aren't likely by chance.\r
+        // Probably corrupt UTF-32BE data.  Valid sequences aren't likely by chance.\r
         confidence = 25;\r
     }\r
 \r
index 73eeeec..df69dbd 100644 (file)
@@ -99,7 +99,7 @@ UBool CharsetRecog_UTF8::match(InputText* input, CharsetMatch *results) const {
         //              accepts ASCII with confidence = 10.\r
         confidence = 15;\r
     } else if (numValid > numInvalid*10) {\r
-        // Probably corruput utf-8 data.  Valid sequences aren't likely by chance.\r
+        // Probably corrupt utf-8 data.  Valid sequences aren't likely by chance.\r
         confidence = 25;\r
     }\r
 \r
index f87830b..a7803e7 100644 (file)
@@ -150,7 +150,7 @@ U_CAPI uInt  U_EXPORT2 uprv_decContextGetStatus(decContext *context) {
 /*  newstatus is the source for the bits to be restored               */\r
 /*  mask indicates the bits to be restored (the status bit that       */\r
 /*    corresponds to each 1 bit in the mask is set to the value of    */\r
-/*    the correspnding bit in newstatus)                              */\r
+/*    the corresponding bit in newstatus)                              */\r
 /*  returns context                                                   */\r
 /*                                                                    */\r
 /* No error is possible.                                              */\r
index 5122edc..fcea413 100644 (file)
@@ -2203,7 +2203,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *res, const decNumber
       /* if a negative power the constant 1 is needed, and if not subset  */\r
       /* invert the lhs now rather than inverting the result later  */\r
       if (decNumberIsNegative(rhs)) {   /* was a **-n [hence digits>0]  */\r
-        decNumber *inv=invbuff;         /* asssume use fixed buffer  */\r
+        decNumber *inv=invbuff;         /* assume use fixed buffer  */\r
         uprv_decNumberCopy(&dnOne, dac);     /* dnOne=1;  [needed now or later]  */\r
         #if DECSUBSET\r
         if (set->extended) {            /* need to calculate 1/lhs  */\r
@@ -5242,7 +5242,7 @@ static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
 /*    exp(-x) where x can be the tiniest number (Ntiny).              */\r
 /*                                                                    */\r
 /* 2. Normalizing x to be <=0.1 (instead of <=1) reduces loop         */\r
-/*    iterations by appoximately a third with additional (although    */\r
+/*    iterations by approximately a third with additional (although    */\r
 /*    diminishing) returns as the range is reduced to even smaller    */\r
 /*    fractions.  However, h (the power of 10 used to correct the     */\r
 /*    result at the end, see below) must be kept <=8 as otherwise     */\r
index f39caed..2c79d61 100644 (file)
 \r
 \r
   /* ---------------------------------------------------------------- */\r
-  /* Definitions for arbitary-precision modules (only valid after     */\r
+  /* Definitions for arbitrary-precision modules (only valid after     */\r
   /* decNumber.h has been included)                                   */\r
   /* ---------------------------------------------------------------- */\r
 \r
index 5b7e16e..eda80e2 100644 (file)
@@ -384,7 +384,7 @@ static void BignumToFixed(int requested_digits, int* decimal_point,
 // Returns an estimation of k such that 10^(k-1) <= v < 10^k where\r
 // v = f * 2^exponent and 2^52 <= f < 2^53.\r
 // v is hence a normalized double with the given exponent. The output is an\r
-// approximation for the exponent of the decimal approimation .digits * 10^k.\r
+// approximation for the exponent of the decimal approximation .digits * 10^k.\r
 //\r
 // The result might undershoot by 1 in which case 10^k <= v < 10^k+1.\r
 // Note: this property holds for v's upper boundary m+ too.\r
@@ -562,7 +562,7 @@ static void InitialScaledStartValuesNegativeExponentNegativePower(
 //\r
 // Let ep == estimated_power, then the returned values will satisfy:\r
 //  v / 10^ep = numerator / denominator.\r
-//  v's boundarys m- and m+:\r
+//  v's boundaries m- and m+:\r
 //    m- / 10^ep == v / 10^ep - delta_minus / denominator\r
 //    m+ / 10^ep == v / 10^ep + delta_plus / denominator\r
 //  Or in other words:\r
index 044b026..5c56b32 100644 (file)
@@ -107,19 +107,19 @@ void DoubleToStringConverter::CreateExponentialRepresentation(
       result_builder->AddCharacter('+');\r
     }\r
   }\r
-  if (exponent == 0) {\r
-    result_builder->AddCharacter('0');\r
-    return;\r
-  }\r
   DOUBLE_CONVERSION_ASSERT(exponent < 1e4);\r
   // Changing this constant requires updating the comment of DoubleToStringConverter constructor\r
   const int kMaxExponentLength = 5;\r
   char buffer[kMaxExponentLength + 1];\r
   buffer[kMaxExponentLength] = '\0';\r
   int first_char_pos = kMaxExponentLength;\r
-  while (exponent > 0) {\r
-    buffer[--first_char_pos] = '0' + (exponent % 10);\r
-    exponent /= 10;\r
+  if (exponent == 0) {\r
+    buffer[--first_char_pos] = '0';\r
+  } else {\r
+    while (exponent > 0) {\r
+      buffer[--first_char_pos] = '0' + (exponent % 10);\r
+      exponent /= 10;\r
+    }\r
   }\r
   // Add prefix '0' to make exponent width >= min(min_exponent_with_, kMaxExponentLength)\r
   // For example: convert 1e+9 -> 1e+09, if min_exponent_with_ is set to 2\r
@@ -342,9 +342,21 @@ bool DoubleToStringConverter::ToPrecision(double value,
   int exponent = decimal_point - 1;\r
 \r
   int extra_zero = ((flags_ & EMIT_TRAILING_ZERO_AFTER_POINT) != 0) ? 1 : 0;\r
-  if ((-decimal_point + 1 > max_leading_padding_zeroes_in_precision_mode_) ||\r
+  bool as_exponential =\r
+      (-decimal_point + 1 > max_leading_padding_zeroes_in_precision_mode_) ||\r
       (decimal_point - precision + extra_zero >\r
-       max_trailing_padding_zeroes_in_precision_mode_)) {\r
+       max_trailing_padding_zeroes_in_precision_mode_);\r
+  if ((flags_ & NO_TRAILING_ZERO) != 0) {\r
+    // Truncate trailing zeros that occur after the decimal point (if exponential,\r
+    // that is everything after the first digit).\r
+    int stop = as_exponential ? 1 : std::max(1, decimal_point);\r
+    while (decimal_rep_length > stop && decimal_rep[decimal_rep_length - 1] == '0') {\r
+      --decimal_rep_length;\r
+    }\r
+    // Clamp precision to avoid the code below re-adding the zeros.\r
+    precision = std::min(precision, decimal_rep_length);\r
+  }\r
+  if (as_exponential) {\r
     // Fill buffer to contain 'precision' digits.\r
     // Usually the buffer is already at the correct length, but 'DoubleToAscii'\r
     // is allowed to return less characters.\r
index dc42a28..aad931c 100644 (file)
@@ -48,12 +48,11 @@ namespace double_conversion {
 \r
 class DoubleToStringConverter {\r
  public:\r
-#if 0 // not needed for ICU\r
   // When calling ToFixed with a double > 10^kMaxFixedDigitsBeforePoint\r
   // or a requested_digits parameter > kMaxFixedDigitsAfterPoint then the\r
   // function returns false.\r
   static const int kMaxFixedDigitsBeforePoint = 60;\r
-  static const int kMaxFixedDigitsAfterPoint = 60;\r
+  static const int kMaxFixedDigitsAfterPoint = 100;\r
 \r
   // When calling ToExponential with a requested_digits\r
   // parameter > kMaxExponentialDigits then the function returns false.\r
@@ -65,12 +64,36 @@ class DoubleToStringConverter {
   static const int kMinPrecisionDigits = 1;\r
   static const int kMaxPrecisionDigits = 120;\r
 \r
+  // The maximal number of digits that are needed to emit a double in base 10.\r
+  // A higher precision can be achieved by using more digits, but the shortest\r
+  // accurate representation of any double will never use more digits than\r
+  // kBase10MaximalLength.\r
+  // Note that DoubleToAscii null-terminates its input. So the given buffer\r
+  // should be at least kBase10MaximalLength + 1 characters long.\r
+  static const int kBase10MaximalLength = 17;\r
+\r
+  // The maximal number of digits that are needed to emit a single in base 10.\r
+  // A higher precision can be achieved by using more digits, but the shortest\r
+  // accurate representation of any single will never use more digits than\r
+  // kBase10MaximalLengthSingle.\r
+  static const int kBase10MaximalLengthSingle = 9;\r
+\r
+  // The length of the longest string that 'ToShortest' can produce when the\r
+  // converter is instantiated with EcmaScript defaults (see\r
+  // 'EcmaScriptConverter')\r
+  // This value does not include the trailing '\0' character.\r
+  // This amount of characters is needed for negative values that hit the\r
+  // 'decimal_in_shortest_low' limit. For example: "-0.0000033333333333333333"\r
+  static const int kMaxCharsEcmaScriptShortest = 25;\r
+\r
+#if 0 // not needed for ICU\r
   enum Flags {\r
     NO_FLAGS = 0,\r
     EMIT_POSITIVE_EXPONENT_SIGN = 1,\r
     EMIT_TRAILING_DECIMAL_POINT = 2,\r
     EMIT_TRAILING_ZERO_AFTER_POINT = 4,\r
-    UNIQUE_ZERO = 8\r
+    UNIQUE_ZERO = 8,\r
+    NO_TRAILING_ZERO = 16\r
   };\r
 \r
   // Flags should be a bit-or combination of the possible Flags-enum.\r
@@ -82,9 +105,13 @@ class DoubleToStringConverter {
   //    Example: 2345.0 is converted to "2345.".\r
   //  - EMIT_TRAILING_ZERO_AFTER_POINT: in addition to a trailing decimal point\r
   //    emits a trailing '0'-character. This flag requires the\r
-  //    EXMIT_TRAILING_DECIMAL_POINT flag.\r
+  //    EMIT_TRAILING_DECIMAL_POINT flag.\r
   //    Example: 2345.0 is converted to "2345.0".\r
   //  - UNIQUE_ZERO: "-0.0" is converted to "0.0".\r
+  //  - NO_TRAILING_ZERO: Trailing zeros are removed from the fractional portion\r
+  //    of the result in precision mode. Matches printf's %g.\r
+  //    When EMIT_TRAILING_ZERO_AFTER_POINT is also given, one trailing zero is\r
+  //    preserved.\r
   //\r
   // Infinity symbol and nan_symbol provide the string representation for these\r
   // special values. If the string is NULL and the special value is encountered\r
@@ -152,6 +179,14 @@ class DoubleToStringConverter {
   }\r
 \r
   // Returns a converter following the EcmaScript specification.\r
+  //\r
+  // Flags: UNIQUE_ZERO and EMIT_POSITIVE_EXPONENT_SIGN.\r
+  // Special values: "Infinity" and "NaN".\r
+  // Lower case 'e' for exponential values.\r
+  // decimal_in_shortest_low: -6\r
+  // decimal_in_shortest_high: 21\r
+  // max_leading_padding_zeroes_in_precision_mode: 6\r
+  // max_trailing_padding_zeroes_in_precision_mode: 0\r
   static const DoubleToStringConverter& EcmaScriptConverter();\r
 \r
   // Computes the shortest string of digits that correctly represent the input\r
@@ -177,6 +212,21 @@ class DoubleToStringConverter {
   // Returns true if the conversion succeeds. The conversion always succeeds\r
   // except when the input value is special and no infinity_symbol or\r
   // nan_symbol has been given to the constructor.\r
+  //\r
+  // The length of the longest result is the maximum of the length of the\r
+  // following string representations (each with possible examples):\r
+  // - NaN and negative infinity: "NaN", "-Infinity", "-inf".\r
+  // - -10^(decimal_in_shortest_high - 1):\r
+  //      "-100000000000000000000", "-1000000000000000.0"\r
+  // - the longest string in range [0; -10^decimal_in_shortest_low]. Generally,\r
+  //   this string is 3 + kBase10MaximalLength - decimal_in_shortest_low.\r
+  //   (Sign, '0', decimal point, padding zeroes for decimal_in_shortest_low,\r
+  //   and the significant digits).\r
+  //      "-0.0000033333333333333333", "-0.0012345678901234567"\r
+  // - the longest exponential representation. (A negative number with\r
+  //   kBase10MaximalLength significant digits).\r
+  //      "-1.7976931348623157e+308", "-1.7976931348623157E308"\r
+  // In addition, the buffer must be able to hold the trailing '\0' character.\r
   bool ToShortest(double value, StringBuilder* result_builder) const {\r
     return ToShortestIeeeNumber(value, result_builder, SHORTEST);\r
   }\r
@@ -217,9 +267,11 @@ class DoubleToStringConverter {
   //     been provided to the constructor,\r
   //   - 'value' > 10^kMaxFixedDigitsBeforePoint, or\r
   //   - 'requested_digits' > kMaxFixedDigitsAfterPoint.\r
-  // The last two conditions imply that the result will never contain more than\r
-  // 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters\r
+  // The last two conditions imply that the result for non-special values never\r
+  // contains more than\r
+  //  1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters\r
   // (one additional character for the sign, and one for the decimal point).\r
+  // In addition, the buffer must be able to hold the trailing '\0' character.\r
   bool ToFixed(double value,\r
                int requested_digits,\r
                StringBuilder* result_builder) const;\r
@@ -248,14 +300,17 @@ class DoubleToStringConverter {
   //   - the input value is special and no infinity_symbol or nan_symbol has\r
   //     been provided to the constructor,\r
   //   - 'requested_digits' > kMaxExponentialDigits.\r
-  // The last condition implies that the result will never contain more than\r
+  //\r
+  // The last condition implies that the result never contains more than\r
   // kMaxExponentialDigits + 8 characters (the sign, the digit before the\r
   // decimal point, the decimal point, the exponent character, the\r
   // exponent's sign, and at most 3 exponent digits).\r
+  // In addition, the buffer must be able to hold the trailing '\0' character.\r
   bool ToExponential(double value,\r
                      int requested_digits,\r
                      StringBuilder* result_builder) const;\r
 \r
+\r
   // Computes 'precision' leading digits of the given 'value' and returns them\r
   // either in exponential or decimal format, depending on\r
   // max_{leading|trailing}_padding_zeroes_in_precision_mode (given to the\r
@@ -287,9 +342,11 @@ class DoubleToStringConverter {
   //     been provided to the constructor,\r
   //   - precision < kMinPericisionDigits\r
   //   - precision > kMaxPrecisionDigits\r
-  // The last condition implies that the result will never contain more than\r
+  //\r
+  // The last condition implies that the result never contains more than\r
   // kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the\r
   // exponent character, the exponent's sign, and at most 3 exponent digits).\r
+  // In addition, the buffer must be able to hold the trailing '\0' character.\r
   bool ToPrecision(double value,\r
                    int precision,\r
                    StringBuilder* result_builder) const;\r
@@ -310,14 +367,6 @@ class DoubleToStringConverter {
     PRECISION\r
   };\r
 \r
-  // The maximal number of digits that are needed to emit a double in base 10.\r
-  // A higher precision can be achieved by using more digits, but the shortest\r
-  // accurate representation of any double will never use more digits than\r
-  // kBase10MaximalLength.\r
-  // Note that DoubleToAscii null-terminates its input. So the given buffer\r
-  // should be at least kBase10MaximalLength + 1 characters long.\r
-  static const int kBase10MaximalLength = 17;\r
-\r
   // Converts the given double 'v' to digit characters. 'v' must not be NaN,\r
   // +Infinity, or -Infinity. In SHORTEST_SINGLE-mode this restriction also\r
   // applies to 'v' after it has been casted to a single-precision float. That\r
index 5a50ffc..8228bea 100644 (file)
 // ICU PATCH: Wrap in ICU namespace\r
 U_NAMESPACE_BEGIN\r
 \r
+#ifdef _MSC_VER\r
+#  if _MSC_VER >= 1900\r
+// Fix MSVC >= 2015 (_MSC_VER == 1900) warning\r
+// C4244: 'argument': conversion from 'const uc16' to 'char', possible loss of data\r
+// against Advance and friends, when instantiated with **it as char, not uc16.\r
+ __pragma(warning(disable: 4244))\r
+#  endif\r
+#  if _MSC_VER <= 1700 // VS2012, see IsDecimalDigitForRadix warning fix, below\r
+#    define VS2012_RADIXWARN\r
+#  endif\r
+#endif\r
+\r
 namespace double_conversion {\r
 \r
 namespace {\r
@@ -170,9 +182,9 @@ static double SignedZero(bool sign) {
 //\r
 // The function is small and could be inlined, but VS2012 emitted a warning\r
 // because it constant-propagated the radix and concluded that the last\r
-// condition was always true. By moving it into a separate function the\r
-// compiler wouldn't warn anymore.\r
-#ifdef _MSC_VER\r
+// condition was always true. Moving it into a separate function and\r
+// suppressing optimisation keeps the compiler from warning.\r
+#ifdef VS2012_RADIXWARN\r
 #pragma optimize("",off)\r
 static bool IsDecimalDigitForRadix(int c, int radix) {\r
   return '0' <= c && c <= '9' && (c - '0') < radix;\r
@@ -738,11 +750,17 @@ double StringToDoubleConverter::StringToIeee(
   DOUBLE_CONVERSION_ASSERT(buffer_pos < kBufferSize);\r
   buffer[buffer_pos] = '\0';\r
 \r
+  // Code above ensures there are no leading zeros and the buffer has fewer than\r
+  // kMaxSignificantDecimalDigits characters. Trim trailing zeros.\r
+  Vector<const char> chars(buffer, buffer_pos);\r
+  chars = TrimTrailingZeros(chars);\r
+  exponent += buffer_pos - chars.length();\r
+\r
   double converted;\r
   if (read_as_double) {\r
-    converted = Strtod(Vector<const char>(buffer, buffer_pos), exponent);\r
+    converted = StrtodTrimmed(chars, exponent);\r
   } else {\r
-    converted = Strtof(Vector<const char>(buffer, buffer_pos), exponent);\r
+    converted = StrtofTrimmed(chars, exponent);\r
   }\r
   *processed_characters_count = static_cast<int>(current - input);\r
   return sign? -converted: converted;\r
index ed37ae0..0fa7a50 100644 (file)
@@ -115,17 +115,6 @@ static Vector<const char> TrimLeadingZeros(Vector<const char> buffer) {
   return Vector<const char>(buffer.start(), 0);\r
 }\r
 \r
-\r
-static Vector<const char> TrimTrailingZeros(Vector<const char> buffer) {\r
-  for (int i = buffer.length() - 1; i >= 0; --i) {\r
-    if (buffer[i] != '0') {\r
-      return buffer.SubVector(0, i + 1);\r
-    }\r
-  }\r
-  return Vector<const char>(buffer.start(), 0);\r
-}\r
-\r
-\r
 static void CutToMaxSignificantDigits(Vector<const char> buffer,\r
                                        int exponent,\r
                                        char* significant_buffer,\r
@@ -216,12 +205,14 @@ static bool DoubleStrtod(Vector<const char> trimmed,
                          int exponent,\r
                          double* result) {\r
 #if !defined(DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS)\r
+  // Avoid "unused parameter" warnings\r
+  (void) trimmed;\r
+  (void) exponent;\r
+  (void) result;\r
   // On x86 the floating-point stack can be 64 or 80 bits wide. If it is\r
   // 80 bits wide (as is the case on Linux) then double-rounding occurs and the\r
   // result is not accurate.\r
   // We know that Windows32 uses 64 bits and is therefore accurate.\r
-  // Note that the ARM simulator is compiled for 32bits. It therefore exhibits\r
-  // the same problem.\r
   return false;\r
 #else\r
   if (trimmed.length() <= kMaxExactDoubleIntegerDecimalDigits) {\r
@@ -473,6 +464,11 @@ static bool IsNonZeroDigit(const char d) {
   return ('1' <= d) && (d <= '9');\r
 }\r
 \r
+#ifdef __has_cpp_attribute\r
+#if __has_cpp_attribute(maybe_unused)\r
+[[maybe_unused]]\r
+#endif\r
+#endif\r
 static bool AssertTrimmedDigits(const Vector<const char>& buffer) {\r
   for(int i = 0; i < buffer.length(); ++i) {\r
     if(!IsDigit(buffer[i])) {\r
@@ -545,6 +541,12 @@ float Strtof(Vector<const char> buffer, int exponent) {
   TrimAndCut(buffer, exponent, copy_buffer, kMaxSignificantDecimalDigits,\r
              &trimmed, &updated_exponent);\r
   exponent = updated_exponent;\r
+  return StrtofTrimmed(trimmed, exponent);\r
+}\r
+\r
+float StrtofTrimmed(Vector<const char> trimmed, int exponent) {\r
+  DOUBLE_CONVERSION_ASSERT(trimmed.length() <= kMaxSignificantDecimalDigits);\r
+  DOUBLE_CONVERSION_ASSERT(AssertTrimmedDigits(trimmed));\r
 \r
   double double_guess;\r
   bool is_correct = ComputeGuess(trimmed, exponent, &double_guess);\r
index 2406f33..258c966 100644 (file)
@@ -54,11 +54,25 @@ double Strtod(Vector<const char> buffer, int exponent);
 // contain a dot or a sign. It must not start with '0', and must not be empty.\r
 float Strtof(Vector<const char> buffer, int exponent);\r
 \r
-// For special use cases, the heart of the Strtod() function is also available\r
-// separately, it assumes that 'trimmed' is as produced by TrimAndCut(), i.e.\r
-// no leading or trailing zeros, also no lone zero, and not 'too many' digits.\r
+// Same as Strtod, but assumes that 'trimmed' is already trimmed, as if run\r
+// through TrimAndCut. That is, 'trimmed' must have no leading or trailing\r
+// zeros, must not be a lone zero, and must not have 'too many' digits.\r
 double StrtodTrimmed(Vector<const char> trimmed, int exponent);\r
 \r
+// Same as Strtof, but assumes that 'trimmed' is already trimmed, as if run\r
+// through TrimAndCut. That is, 'trimmed' must have no leading or trailing\r
+// zeros, must not be a lone zero, and must not have 'too many' digits.\r
+float StrtofTrimmed(Vector<const char> trimmed, int exponent);\r
+\r
+inline Vector<const char> TrimTrailingZeros(Vector<const char> buffer) {\r
+  for (int i = buffer.length() - 1; i >= 0; --i) {\r
+    if (buffer[i] != '0') {\r
+      return buffer.SubVector(0, i + 1);\r
+    }\r
+  }\r
+  return Vector<const char>(buffer.start(), 0);\r
+}\r
+\r
 }  // namespace double_conversion\r
 \r
 // ICU PATCH: Close ICU namespace\r
index dac9fb0..eb56c56 100644 (file)
@@ -118,7 +118,7 @@ int main(int argc, char** argv) {
     defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \\r
     defined(__hppa__) || defined(__ia64__) || \\r
     defined(__mips__) || \\r
-    defined(__nios2__) || \\r
+    defined(__nios2__) || defined(__ghs) || \\r
     defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \\r
     defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \\r
     defined(__sparc__) || defined(__sparc) || defined(__s390__) || \\r
index c0e7cf3..ecc3380 100644 (file)
@@ -450,6 +450,7 @@ DateFormatSymbols::copyData(const DateFormatSymbols& other) {
  */\r
 DateFormatSymbols& DateFormatSymbols::operator=(const DateFormatSymbols& other)\r
 {\r
+    if (this == &other) { return *this; }  // self-assignment: no-op\r
     dispose();\r
     copyData(other);\r
 \r
@@ -2330,7 +2331,7 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
         // If format/narrow not available, use standalone/narrow\r
         assignArray(fNarrowMonths, fNarrowMonthsCount, fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount);\r
     } else if (narrowMonthsEC != U_MISSING_RESOURCE_ERROR && standaloneNarrowMonthsEC == U_MISSING_RESOURCE_ERROR) {\r
-        // If standalone/narrow not availabe, use format/narrow\r
+        // If standalone/narrow not available, use format/narrow\r
         assignArray(fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, fNarrowMonths, fNarrowMonthsCount);\r
     } else if (narrowMonthsEC == U_MISSING_RESOURCE_ERROR && standaloneNarrowMonthsEC == U_MISSING_RESOURCE_ERROR) {\r
         // If neither is available, use format/abbreviated\r
index e1223fa..3b70dc9 100644 (file)
@@ -704,7 +704,7 @@ DateIntervalFormat::create(const Locale& locale,
         status = U_MEMORY_ALLOCATION_ERROR;\r
         delete dtitvinf;\r
     } else if ( U_FAILURE(status) ) {\r
-        // safe to delete f, although nothing acutally is saved\r
+        // safe to delete f, although nothing actually is saved\r
         delete f;\r
         f = 0;\r
     }\r
@@ -863,6 +863,14 @@ DateIntervalFormat::initializePattern(UErrorCode& status) {
                 setPatternInfo(UCAL_DATE, nullptr, &pattern, fInfo->getDefaultOrder());\r
                 setPatternInfo(UCAL_MONTH, nullptr, &pattern, fInfo->getDefaultOrder());\r
                 setPatternInfo(UCAL_YEAR, nullptr, &pattern, fInfo->getDefaultOrder());\r
+\r
+                timeSkeleton.insert(0, CAP_G);\r
+                pattern = DateFormat::getBestPattern(\r
+                        locale, timeSkeleton, status);\r
+                if ( U_FAILURE(status) ) {\r
+                    return;\r
+                }\r
+                setPatternInfo(UCAL_ERA, nullptr, &pattern, fInfo->getDefaultOrder());\r
             } else {\r
                 // TODO: fall back\r
             }\r
@@ -889,15 +897,23 @@ DateIntervalFormat::initializePattern(UErrorCode& status) {
         setPatternInfo(UCAL_DATE, nullptr, &pattern, fInfo->getDefaultOrder());\r
         setPatternInfo(UCAL_MONTH, nullptr, &pattern, fInfo->getDefaultOrder());\r
         setPatternInfo(UCAL_YEAR, nullptr, &pattern, fInfo->getDefaultOrder());\r
+\r
+        timeSkeleton.insert(0, CAP_G);\r
+        pattern = DateFormat::getBestPattern(\r
+                locale, timeSkeleton, status);\r
+        if ( U_FAILURE(status) ) {\r
+            return;\r
+        }\r
+        setPatternInfo(UCAL_ERA, nullptr, &pattern, fInfo->getDefaultOrder());\r
     } else {\r
         /* if both present,\r
-         * 1) when the year, month, or day differs,\r
+         * 1) when the era, year, month, or day differs,\r
          * concatenate the two original expressions with a separator between,\r
          * 2) otherwise, present the date followed by the\r
          * range expression for the time.\r
          */\r
         /*\r
-         * 1) when the year, month, or day differs,\r
+         * 1) when the era, year, month, or day differs,\r
          * concatenate the two original expressions with a separator between,\r
          */\r
         // if field exists, use fall back\r
@@ -917,6 +933,11 @@ DateIntervalFormat::initializePattern(UErrorCode& status) {
             skeleton.insert(0, LOW_Y);\r
             setFallbackPattern(UCAL_YEAR, skeleton, status);\r
         }\r
+        if ( !fieldExistsInSkeleton(UCAL_ERA, dateSkeleton) ) {\r
+            // then prefix skeleton with 'G'\r
+            skeleton.insert(0, CAP_G);\r
+            setFallbackPattern(UCAL_ERA, skeleton, status);\r
+        }\r
 \r
         /*\r
          * 2) otherwise, present the date followed by the\r
index faf72fe..13b75bd 100644 (file)
@@ -119,7 +119,9 @@ private:
 \r
 // Internal struct that must be exported for MSVC\r
 struct U_I18N_API SpanInfo {\r
+    UFieldCategory category;\r
     int32_t spanValue;\r
+    int32_t start;\r
     int32_t length;\r
 };\r
 \r
@@ -170,17 +172,20 @@ public:
 \r
     /**\r
      * Adds additional metadata used for span fields.\r
-     * \r
-     * spanValue: the index of the list item, for example.\r
+     *\r
+     * category: the category to use for the span field.\r
+     * spanValue: the value of the span field: index of the list item, for example.\r
+     * start: the start position within the string of the span. -1 if unknown.\r
      * length: the length of the span, used to split adjacent fields.\r
      */\r
-    void appendSpanInfo(int32_t spanValue, int32_t length, UErrorCode& status);\r
-    void prependSpanInfo(int32_t spanValue, int32_t length, UErrorCode& status);\r
+    void appendSpanInfo(UFieldCategory category, int32_t spanValue, int32_t start, int32_t length, UErrorCode& status);\r
+    void prependSpanInfo(UFieldCategory category, int32_t spanValue, int32_t start, int32_t length, UErrorCode& status);\r
 \r
 private:\r
     FormattedStringBuilder fString;\r
     FormattedStringBuilder::Field fNumericField;\r
     MaybeStackArray<SpanInfo, 8> spanIndices;\r
+    int32_t spanIndicesCount = 0;\r
 \r
     bool nextPositionImpl(ConstrainedFieldPosition& cfpos, FormattedStringBuilder::Field numericField, UErrorCode& status) const;\r
     static bool isIntOrGroup(FormattedStringBuilder::Field field);\r
index e5575fd..fd7bd3d 100644 (file)
@@ -103,6 +103,27 @@ static constexpr Field kEndField = Field(0xf, 0xf);
 bool FormattedValueStringBuilderImpl::nextPositionImpl(ConstrainedFieldPosition& cfpos, Field numericField, UErrorCode& /*status*/) const {\r
     int32_t fieldStart = -1;\r
     Field currField = kUndefinedField;\r
+    bool prevIsSpan = false;\r
+    int32_t nextSpanStart = -1;\r
+    if (spanIndicesCount > 0) {\r
+        int64_t si = cfpos.getInt64IterationContext();\r
+        U_ASSERT(si <= spanIndicesCount);\r
+        if (si < spanIndicesCount) {\r
+            nextSpanStart = spanIndices[si].start;\r
+        }\r
+        if (si > 0) {\r
+            prevIsSpan = cfpos.getCategory() == spanIndices[si-1].category\r
+                && cfpos.getField() == spanIndices[si-1].spanValue;\r
+        }\r
+    }\r
+    bool prevIsNumeric = false;\r
+    if (numericField != kUndefinedField) {\r
+        prevIsNumeric = cfpos.getCategory() == numericField.getCategory()\r
+            && cfpos.getField() == numericField.getField();\r
+    }\r
+    bool prevIsInteger = cfpos.getCategory() == UFIELD_CATEGORY_NUMBER\r
+        && cfpos.getField() == UNUM_INTEGER_FIELD;\r
+\r
     for (int32_t i = fString.fZero + cfpos.getLimit(); i <= fString.fZero + fString.fLength; i++) {\r
         Field _field = (i < fString.fZero + fString.fLength) ? fString.getFieldPtr()[i] : kEndField;\r
         // Case 1: currently scanning a field.\r
@@ -129,11 +150,38 @@ bool FormattedValueStringBuilderImpl::nextPositionImpl(ConstrainedFieldPosition&
             }\r
             continue;\r
         }\r
+        // Special case: emit normalField if we are pointing at the end of spanField.\r
+        if (i > fString.fZero && prevIsSpan) {\r
+            int64_t si = cfpos.getInt64IterationContext() - 1;\r
+            U_ASSERT(si >= 0);\r
+            int32_t previ = i - spanIndices[si].length;\r
+            U_ASSERT(previ >= fString.fZero);\r
+            Field prevField = fString.getFieldPtr()[previ];\r
+            if (prevField == Field(UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD)) {\r
+                // Special handling for ULISTFMT_ELEMENT_FIELD\r
+                if (cfpos.matchesField(UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD)) {\r
+                    fieldStart = i - fString.fZero - spanIndices[si].length;\r
+                    int32_t end = fieldStart + spanIndices[si].length;\r
+                    cfpos.setState(\r
+                        UFIELD_CATEGORY_LIST,\r
+                        ULISTFMT_ELEMENT_FIELD,\r
+                        fieldStart,\r
+                        end);\r
+                    return true;\r
+                } else {\r
+                    prevIsSpan = false;\r
+                }\r
+            } else {\r
+                // Re-wind, since there may be multiple fields in the span.\r
+                i = previ;\r
+                _field = prevField;\r
+            }\r
+        }\r
         // Special case: coalesce the INTEGER if we are pointing at the end of the INTEGER.\r
         if (cfpos.matchesField(UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD)\r
                 && i > fString.fZero\r
-                // don't return the same field twice in a row:\r
-                && i - fString.fZero > cfpos.getLimit()\r
+                && !prevIsInteger\r
+                && !prevIsNumeric\r
                 && isIntOrGroup(fString.getFieldPtr()[i - 1])\r
                 && !isIntOrGroup(_field)) {\r
             int j = i - 1;\r
@@ -149,10 +197,7 @@ bool FormattedValueStringBuilderImpl::nextPositionImpl(ConstrainedFieldPosition&
         if (numericField != kUndefinedField\r
                 && cfpos.matchesField(numericField.getCategory(), numericField.getField())\r
                 && i > fString.fZero\r
-                // don't return the same field twice in a row:\r
-                && (i - fString.fZero > cfpos.getLimit()\r
-                    || cfpos.getCategory() != numericField.getCategory()\r
-                    || cfpos.getField() != numericField.getField())\r
+                && !prevIsNumeric\r
                 && fString.getFieldPtr()[i - 1].isNumeric()\r
                 && !_field.isNumeric()) {\r
             // Re-wind to the beginning of the field and then emit it\r
@@ -165,38 +210,22 @@ bool FormattedValueStringBuilderImpl::nextPositionImpl(ConstrainedFieldPosition&
                 i - fString.fZero);\r
             return true;\r
         }\r
-        // Special case: emit normalField if we are pointing at the end of spanField.\r
-        if (i > fString.fZero) {\r
-            auto elementField = fString.getFieldPtr()[i-1];\r
-            if (elementField == Field(UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD)\r
-                    && cfpos.matchesField(elementField.getCategory(), elementField.getField())\r
-                    && (cfpos.getLimit() < i - fString.fZero || cfpos.getCategory() != elementField.getCategory())) {\r
-                int64_t si = cfpos.getInt64IterationContext() - 1;\r
-                cfpos.setState(\r
-                    elementField.getCategory(),\r
-                    elementField.getField(),\r
-                    i - fString.fZero - spanIndices[si].length,\r
-                    i - fString.fZero);\r
-                return true;\r
-            }\r
-        }\r
-        // Special case: skip over INTEGER; will be coalesced later.\r
-        if (_field == Field(UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD)) {\r
-            _field = kUndefinedField;\r
-        }\r
-        // Case 2: no field starting at this position.\r
-        if (_field.isUndefined() || _field == kEndField) {\r
-            continue;\r
-        }\r
-        // Case 3: check for field starting at this position\r
-        // Case 3a: Need to add a SpanField\r
-        if (_field == Field(UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD)) {\r
+        // Check for span field\r
+        if (!prevIsSpan && (\r
+                _field == Field(UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD) ||\r
+                i - fString.fZero == nextSpanStart)) {\r
             int64_t si = cfpos.getInt64IterationContext();\r
+            if (si >= spanIndicesCount) {\r
+                break;\r
+            }\r
+            UFieldCategory spanCategory = spanIndices[si].category;\r
             int32_t spanValue = spanIndices[si].spanValue;\r
             int32_t length = spanIndices[si].length;\r
             cfpos.setInt64IterationContext(si + 1);\r
-            if (cfpos.matchesField(UFIELD_CATEGORY_LIST_SPAN, spanValue)) {\r
-                UFieldCategory spanCategory = UFIELD_CATEGORY_LIST_SPAN;\r
+            if (si + 1 < spanIndicesCount) {\r
+                nextSpanStart = spanIndices[si + 1].start;\r
+            }\r
+            if (cfpos.matchesField(spanCategory, spanValue)) {\r
                 fieldStart = i - fString.fZero;\r
                 int32_t end = fieldStart + length;\r
                 cfpos.setState(\r
@@ -205,17 +234,41 @@ bool FormattedValueStringBuilderImpl::nextPositionImpl(ConstrainedFieldPosition&
                     fieldStart,\r
                     end);\r
                 return true;\r
-            } else {\r
-                // Failed to match; jump ahead\r
-                i += length - 1;\r
-                continue;\r
+            } else if (_field == Field(UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD)) {\r
+                // Special handling for ULISTFMT_ELEMENT_FIELD\r
+                if (cfpos.matchesField(UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD)) {\r
+                    fieldStart = i - fString.fZero;\r
+                    int32_t end = fieldStart + length;\r
+                    cfpos.setState(\r
+                        UFIELD_CATEGORY_LIST,\r
+                        ULISTFMT_ELEMENT_FIELD,\r
+                        fieldStart,\r
+                        end);\r
+                    return true;\r
+                } else {\r
+                    // Failed to match; jump ahead\r
+                    i += length - 1;\r
+                    // goto loopend\r
+                }\r
             }\r
         }\r
-        // Case 3b: No SpanField\r
-        if (cfpos.matchesField(_field.getCategory(), _field.getField())) {\r
+        // Special case: skip over INTEGER; will be coalesced later.\r
+        else if (_field == Field(UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD)) {\r
+            _field = kUndefinedField;\r
+        }\r
+        // No field starting at this position.\r
+        else if (_field.isUndefined() || _field == kEndField) {\r
+            // goto loopend\r
+        }\r
+        // No SpanField\r
+        else if (cfpos.matchesField(_field.getCategory(), _field.getField())) {\r
             fieldStart = i - fString.fZero;\r
             currField = _field;\r
         }\r
+        // loopend:\r
+        prevIsSpan = false;\r
+        prevIsNumeric = false;\r
+        prevIsInteger = false;\r
     }\r
 \r
     U_ASSERT(currField == kUndefinedField);\r
@@ -228,7 +281,7 @@ bool FormattedValueStringBuilderImpl::nextPositionImpl(ConstrainedFieldPosition&
     return false;\r
 }\r
 \r
-void FormattedValueStringBuilderImpl::appendSpanInfo(int32_t spanValue, int32_t length, UErrorCode& status) {\r
+void FormattedValueStringBuilderImpl::appendSpanInfo(UFieldCategory category, int32_t spanValue, int32_t start, int32_t length, UErrorCode& status) {\r
     if (U_FAILURE(status)) { return; }\r
     U_ASSERT(spanIndices.getCapacity() >= spanValue);\r
     if (spanIndices.getCapacity() == spanValue) {\r
@@ -237,10 +290,11 @@ void FormattedValueStringBuilderImpl::appendSpanInfo(int32_t spanValue, int32_t
             return;\r
         }\r
     }\r
-    spanIndices[spanValue] = {spanValue, length};\r
+    spanIndices[spanValue] = {category, spanValue, start, length};\r
+    spanIndicesCount++;\r
 }\r
 \r
-void FormattedValueStringBuilderImpl::prependSpanInfo(int32_t spanValue, int32_t length, UErrorCode& status) {\r
+void FormattedValueStringBuilderImpl::prependSpanInfo(UFieldCategory category, int32_t spanValue, int32_t start, int32_t length, UErrorCode& status) {\r
     if (U_FAILURE(status)) { return; }\r
     U_ASSERT(spanIndices.getCapacity() >= spanValue);\r
     if (spanIndices.getCapacity() == spanValue) {\r
@@ -252,7 +306,8 @@ void FormattedValueStringBuilderImpl::prependSpanInfo(int32_t spanValue, int32_t
     for (int32_t i = spanValue - 1; i >= 0; i--) {\r
         spanIndices[i+1] = spanIndices[i];\r
     }\r
-    spanIndices[0] = {spanValue, length};\r
+    spanIndices[0] = {category, spanValue, start, length};\r
+    spanIndicesCount++;\r
 }\r
 \r
 bool FormattedValueStringBuilderImpl::isIntOrGroup(Field field) {\r
index f260ca8..3104e8e 100644 (file)
@@ -398,7 +398,7 @@ void GregorianCalendar::handleComputeFields(int32_t julianDay, UErrorCode& statu
         // with 8 AD.  Before 8 AD the spacing is irregular; every 3 years\r
         // from 45 BC to 9 BC, and then none until 8 AD.  However, we don't\r
         // implement this historical detail; instead, we implement the\r
-        // computatinally cleaner proleptic calendar, which assumes\r
+        // computationally cleaner proleptic calendar, which assumes\r
         // consistent 4-year cycles throughout time.\r
         UBool isLeap = ((eyear&0x3) == 0); // equiv. to (eyear%4 == 0)\r
 \r
index 11a88a2..29444fa 100644 (file)
@@ -60,7 +60,7 @@
     </ClCompile>\r
     <Link>\r
       <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuin68d.dll</OutputFile>\r
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuin69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuind.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuind.lib</ImportLibrary>\r
     </Link>\r
@@ -73,7 +73,7 @@
     </ClCompile>\r
     <Link>\r
       <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuin68.dll</OutputFile>\r
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuin69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuin.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuin.lib</ImportLibrary>\r
     </Link>\r
index e990844..74ec03e 100644 (file)
       <ProgramDataBaseFileName>.\x86\ReleaseUWP/</ProgramDataBaseFileName>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\bin32uwp\icuin68.dll</OutputFile>\r
+      <OutputFile>..\..\bin32uwp\icuin69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\lib32uwp\icuin.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\lib32uwp\icuin.lib</ImportLibrary>\r
       <AdditionalDependencies>..\..\lib32uwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <ProgramDataBaseFileName>.\x86\DebugUWP/</ProgramDataBaseFileName>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\bin32uwp\icuin68d.dll</OutputFile>\r
+      <OutputFile>..\..\bin32uwp\icuin69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\lib32uwp\icuind.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\lib32uwp\icuind.lib</ImportLibrary>\r
       <AdditionalDependencies>..\..\lib32uwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <ProgramDataBaseFileName>.\x64\ReleaseUWP/</ProgramDataBaseFileName>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\bin64uwp\icuin68.dll</OutputFile>\r
+      <OutputFile>..\..\bin64uwp\icuin69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\lib64uwp\icuin.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\lib64uwp\icuin.lib</ImportLibrary>\r
       <AdditionalDependencies>..\..\lib64uwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <ProgramDataBaseFileName>.\x64\DebugUWP/</ProgramDataBaseFileName>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\bin64uwp\icuin68d.dll</OutputFile>\r
+      <OutputFile>..\..\bin64uwp\icuin69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\lib64uwp\icuind.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\lib64uwp\icuind.lib</ImportLibrary>\r
       <AdditionalDependencies>..\..\lib64uwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <ProgramDataBaseFileName>.\ARM\ReleaseUWP/</ProgramDataBaseFileName>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\binARMuwp\icuin68.dll</OutputFile>\r
+      <OutputFile>..\..\binARMuwp\icuin69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\libARMuwp\icuin.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\libARMuwp\icuin.lib</ImportLibrary>\r
       <AdditionalDependencies>..\..\libARMuwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <ProgramDataBaseFileName>.\ARM\DebugUWP/</ProgramDataBaseFileName>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\binARMuwp\icuin68d.dll</OutputFile>\r
+      <OutputFile>..\..\binARMuwp\icuin69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\libARMuwp\icuind.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\libARMuwp\icuind.lib</ImportLibrary>\r
       <AdditionalDependencies>..\..\libARMuwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <ProgramDataBaseFileName>.\ARM64\ReleaseUWP/</ProgramDataBaseFileName>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\binARM64uwp\icuin68.dll</OutputFile>\r
+      <OutputFile>..\..\binARM64uwp\icuin69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\libARM64uwp\icuin.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\libARM64uwp\icuin.lib</ImportLibrary>\r
       <AdditionalDependencies>..\..\libARM64uwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <ProgramDataBaseFileName>.\ARM64\DebugUWP/</ProgramDataBaseFileName>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\binARM64uwp\icuin68d.dll</OutputFile>\r
+      <OutputFile>..\..\binARM64uwp\icuin69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\libARM64uwp\icuind.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\libARM64uwp\icuind.lib</ImportLibrary>\r
       <AdditionalDependencies>..\..\libARM64uwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
index 69fbac5..1cdd659 100644 (file)
@@ -25,7 +25,7 @@ U_NAMESPACE_BEGIN
  * Concrete class which provides the Indian calendar.\r
  * <P>\r
  * <code>IndianCalendar</code> is a subclass of <code>Calendar</code>\r
- * that numbers years since the begining of SAKA ERA.  This is the civil calendar\r
+ * that numbers years since the beginning of SAKA ERA.  This is the civil calendar\r
  * which is accepted by government of India as Indian National Calendar.\r
  * The two calendars most widely used in India today are the Vikrama calendar\r
  * followed in North India and the Shalivahana or Saka calendar which is followed\r
index aba88de..6d4f5b1 100644 (file)
@@ -67,7 +67,7 @@ U_NAMESPACE_BEGIN
  * moon's illumination, and other factors, it is possible to determine the start\r
  * of a lunar month with a fairly high degree of certainty.  However, these\r
  * calculations are extremely complicated and thus slow, so most algorithms,\r
- * including the one used here, are only approximations of the true astronical\r
+ * including the one used here, are only approximations of the true astronomical\r
  * calculations.  At present, the approximations used in this class are fairly\r
  * simplistic; they will be improved in later versions of the code.\r
  * <p>\r
index 3bb6ddb..7254c0a 100644 (file)
@@ -567,7 +567,7 @@ public:
                 start,\r
                 {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD},\r
                 status);\r
-            data->appendSpanInfo(0, start.length(), status);\r
+            data->appendSpanInfo(UFIELD_CATEGORY_LIST_SPAN, 0, -1, start.length(), status);\r
         }\r
     }\r
 \r
@@ -603,7 +603,7 @@ public:
                 next,\r
                 {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD},\r
                 status);\r
-            data->appendSpanInfo(position, next.length(), status);\r
+            data->appendSpanInfo(UFIELD_CATEGORY_LIST_SPAN, position, -1, next.length(), status);\r
             data->getStringRef().append(\r
                 temp.tempSubString(offsets[1]),\r
                 {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD},\r
@@ -622,7 +622,7 @@ public:
                 next,\r
                 {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD},\r
                 status);\r
-            data->prependSpanInfo(position, next.length(), status);\r
+            data->prependSpanInfo(UFIELD_CATEGORY_LIST_SPAN, position, -1, next.length(), status);\r
             data->getStringRef().insert(\r
                 0,\r
                 temp.tempSubStringBetween(0, offsets[1]),\r
index 291f8cc..eabd7aa 100644 (file)
@@ -581,7 +581,10 @@ void MeasureFormat::initMeasureFormat(
         UMeasureFormatWidth w,\r
         NumberFormat *nfToAdopt,\r
         UErrorCode &status) {\r
-    static const char *listStyles[] = {"unit", "unit-short", "unit-narrow"};\r
+    static const UListFormatterWidth listWidths[] = {\r
+        ULISTFMT_WIDTH_WIDE,\r
+        ULISTFMT_WIDTH_SHORT,\r
+        ULISTFMT_WIDTH_NARROW};\r
     LocalPointer<NumberFormat> nf(nfToAdopt);\r
     if (U_FAILURE(status)) {\r
         return;\r
@@ -620,7 +623,8 @@ void MeasureFormat::initMeasureFormat(
     delete listFormatter;\r
     listFormatter = ListFormatter::createInstance(\r
             locale,\r
-            listStyles[getRegularWidth(fWidth)],\r
+            ULISTFMT_TYPE_UNITS,\r
+            listWidths[getRegularWidth(fWidth)],\r
             status);\r
 }\r
 \r
index cdbf1d5..259a61b 100644 (file)
@@ -33,8 +33,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MeasureUnit)
 // update this code, refer to:\r
 // http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit\r
 //\r
-// Start generated code\r
-// TODO(ICU-21076): improve how this generated code is produced.\r
+// Start generated code for measunit.cpp\r
 \r
 // Maps from Type ID to offset in gSubTypes.\r
 static const int32_t gOffsets[] = {\r
@@ -42,57 +41,28 @@ static const int32_t gOffsets[] = {
     2,\r
     7,\r
     17,\r
-    25,\r
-    29,\r
-    328,\r
-    339,\r
-    355,\r
-    359,\r
-    368,\r
-    370,\r
-    374,\r
-    382,\r
-    404,\r
-    408,\r
-    423,\r
-    426,\r
-    432,\r
-    442,\r
-    446,\r
-    450,\r
-    452,\r
-    486\r
+    26,\r
+    30,\r
+    329,\r
+    340,\r
+    356,\r
+    360,\r
+    369,\r
+    371,\r
+    375,\r
+    383,\r
+    405,\r
+    409,\r
+    424,\r
+    425,\r
+    431,\r
+    441,\r
+    445,\r
+    449,\r
+    451,\r
+    485\r
 };\r
 \r
-// TODO: FIX CODE GENERATION - leaving this here but commented-out to make it\r
-// clear that we no longer want this array. We needed it for only one thing: efficient checking of "currency".\r
-//\r
-// static const int32_t gIndexes[] = {\r
-//     0,\r
-//     2,\r
-//     7,\r
-//     17,\r
-//     25,\r
-//     29,\r
-//     29,\r
-//     40,\r
-//     56,\r
-//     60,\r
-//     69,\r
-//     71,\r
-//     75,\r
-//     83,\r
-//     105,\r
-//     109,\r
-//     124,\r
-//     127,\r
-//     133,\r
-//     143,\r
-//     147,\r
-//     151,\r
-//     153,\r
-//     187\r
-// };\r
 static const int32_t kCurrencyOffset = 5;\r
 \r
 // Must be sorted alphabetically.\r
@@ -142,6 +112,7 @@ static const char * const gSubTypes[] = {
     "square-mile",\r
     "square-yard",\r
     "karat",\r
+    "milligram-ofglucose-per-deciliter",\r
     "milligram-per-deciliter",\r
     "millimole-per-liter",\r
     "mole",\r
@@ -547,9 +518,7 @@ static const char * const gSubTypes[] = {
     "solar-mass",\r
     "stone",\r
     "ton",\r
-    "", // TODO(ICU-21076): manual edit of what should have been generated by Java.\r
-    "percent", // TODO(ICU-21076): regenerate, deal with duplication.\r
-    "permille", // TODO(ICU-21076): regenerate, deal with duplication.\r
+    "",\r
     "gigawatt",\r
     "horsepower",\r
     "kilowatt",\r
@@ -612,8 +581,6 @@ static const char * const gSubTypes[] = {
     "teaspoon"\r
 };\r
 \r
-// unitPerUnitToSingleUnit no longer in use! TODO: remove from code-generation code.\r
-\r
 // Shortcuts to the base unit in order to make the default constructor fast\r
 static const int32_t kBaseTypeIdx = 16;\r
 static const int32_t kBaseSubTypeIdx = 0;\r
@@ -762,62 +729,70 @@ MeasureUnit MeasureUnit::getKarat() {
     return MeasureUnit(3, 0);\r
 }\r
 \r
-MeasureUnit *MeasureUnit::createMilligramPerDeciliter(UErrorCode &status) {\r
+MeasureUnit *MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode &status) {\r
     return MeasureUnit::create(3, 1, status);\r
 }\r
 \r
-MeasureUnit MeasureUnit::getMilligramPerDeciliter() {\r
+MeasureUnit MeasureUnit::getMilligramOfglucosePerDeciliter() {\r
     return MeasureUnit(3, 1);\r
 }\r
 \r
-MeasureUnit *MeasureUnit::createMillimolePerLiter(UErrorCode &status) {\r
+MeasureUnit *MeasureUnit::createMilligramPerDeciliter(UErrorCode &status) {\r
     return MeasureUnit::create(3, 2, status);\r
 }\r
 \r
-MeasureUnit MeasureUnit::getMillimolePerLiter() {\r
+MeasureUnit MeasureUnit::getMilligramPerDeciliter() {\r
     return MeasureUnit(3, 2);\r
 }\r
 \r
-MeasureUnit *MeasureUnit::createMole(UErrorCode &status) {\r
+MeasureUnit *MeasureUnit::createMillimolePerLiter(UErrorCode &status) {\r
     return MeasureUnit::create(3, 3, status);\r
 }\r
 \r
-MeasureUnit MeasureUnit::getMole() {\r
+MeasureUnit MeasureUnit::getMillimolePerLiter() {\r
     return MeasureUnit(3, 3);\r
 }\r
 \r
-MeasureUnit *MeasureUnit::createPercent(UErrorCode &status) {\r
+MeasureUnit *MeasureUnit::createMole(UErrorCode &status) {\r
     return MeasureUnit::create(3, 4, status);\r
 }\r
 \r
-MeasureUnit MeasureUnit::getPercent() {\r
+MeasureUnit MeasureUnit::getMole() {\r
     return MeasureUnit(3, 4);\r
 }\r
 \r
-MeasureUnit *MeasureUnit::createPermille(UErrorCode &status) {\r
+MeasureUnit *MeasureUnit::createPercent(UErrorCode &status) {\r
     return MeasureUnit::create(3, 5, status);\r
 }\r
 \r
-MeasureUnit MeasureUnit::getPermille() {\r
+MeasureUnit MeasureUnit::getPercent() {\r
     return MeasureUnit(3, 5);\r
 }\r
 \r
-MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) {\r
+MeasureUnit *MeasureUnit::createPermille(UErrorCode &status) {\r
     return MeasureUnit::create(3, 6, status);\r
 }\r
 \r
-MeasureUnit MeasureUnit::getPartPerMillion() {\r
+MeasureUnit MeasureUnit::getPermille() {\r
     return MeasureUnit(3, 6);\r
 }\r
 \r
-MeasureUnit *MeasureUnit::createPermyriad(UErrorCode &status) {\r
+MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) {\r
     return MeasureUnit::create(3, 7, status);\r
 }\r
 \r
-MeasureUnit MeasureUnit::getPermyriad() {\r
+MeasureUnit MeasureUnit::getPartPerMillion() {\r
     return MeasureUnit(3, 7);\r
 }\r
 \r
+MeasureUnit *MeasureUnit::createPermyriad(UErrorCode &status) {\r
+    return MeasureUnit::create(3, 8, status);\r
+}\r
+\r
+MeasureUnit MeasureUnit::getPermyriad() {\r
+    return MeasureUnit(3, 8);\r
+}\r
+\r
 MeasureUnit *MeasureUnit::createLiterPer100Kilometers(UErrorCode &status) {\r
     return MeasureUnit::create(4, 0, status);\r
 }\r
@@ -2090,7 +2065,7 @@ MeasureUnit MeasureUnit::getTeaspoon() {
     return MeasureUnit(22, 33);\r
 }\r
 \r
-// End generated code\r
+// End generated code for measunit.cpp\r
 \r
 static int32_t binarySearch(\r
         const char * const * array, int32_t start, int32_t end, StringPiece key) {\r
@@ -2277,9 +2252,11 @@ StringEnumeration* MeasureUnit::getAvailableTypes(UErrorCode &errorCode) {
 }\r
 \r
 bool MeasureUnit::findBySubType(StringPiece subType, MeasureUnit* output) {\r
+    // Sanity checking kCurrencyOffset and final entry in gOffsets\r
+    U_ASSERT(uprv_strcmp(gTypes[kCurrencyOffset], "currency") == 0);\r
+    U_ASSERT(gOffsets[UPRV_LENGTHOF(gOffsets) - 1] == UPRV_LENGTHOF(gSubTypes));\r
+\r
     for (int32_t t = 0; t < UPRV_LENGTHOF(gOffsets) - 1; t++) {\r
-        // Ensure kCurrencyOffset is set correctly\r
-        U_ASSERT(uprv_strcmp(gTypes[kCurrencyOffset], "currency") == 0);\r
         // Skip currency units\r
         if (t == kCurrencyOffset) {\r
             continue;\r
@@ -2310,7 +2287,7 @@ void MeasureUnit::initTime(const char *timeId) {
     fTypeId = result;\r
     result = binarySearch(gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], timeId);\r
     U_ASSERT(result != -1);\r
-    fSubTypeId = result - gOffsets[fTypeId]; \r
+    fSubTypeId = result - gOffsets[fTypeId];\r
 }\r
 \r
 void MeasureUnit::initCurrency(StringPiece isoCurrency) {\r
@@ -2353,8 +2330,8 @@ MeasureUnitImpl MeasureUnitImpl::copy(UErrorCode &status) const {
     MeasureUnitImpl result;\r
     result.complexity = complexity;\r
     result.identifier.append(identifier, status);\r
-    for (int32_t i = 0; i < units.length(); i++) {\r
-        SingleUnitImpl *item = result.units.emplaceBack(*units[i]);\r
+    for (int32_t i = 0; i < singleUnits.length(); i++) {\r
+        SingleUnitImpl *item = result.singleUnits.emplaceBack(*singleUnits[i]);\r
         if (!item) {\r
             status = U_MEMORY_ALLOCATION_ERROR;\r
             return result;\r
index 4d87cee..99c3554 100644 (file)
@@ -30,6 +30,7 @@
 #include "unicode/ures.h"\r
 #include "unicode/ustringtrie.h"\r
 #include "uresimp.h"\r
+#include "util.h"\r
 #include <cstdlib>\r
 \r
 U_NAMESPACE_BEGIN\r
@@ -40,12 +41,20 @@ namespace {
 // TODO: Propose a new error code for this?\r
 constexpr UErrorCode kUnitIdentifierSyntaxError = U_ILLEGAL_ARGUMENT_ERROR;\r
 \r
-// Trie value offset for SI Prefixes. This is big enough to ensure we only\r
+// Trie value offset for SI or binary prefixes. This is big enough to ensure we only\r
 // insert positive integers into the trie.\r
-constexpr int32_t kSIPrefixOffset = 64;\r
+constexpr int32_t kPrefixOffset = 64;\r
+static_assert(kPrefixOffset + UMEASURE_PREFIX_INTERNAL_MIN_BIN > 0,\r
+              "kPrefixOffset is too small for minimum UMeasurePrefix value");\r
+static_assert(kPrefixOffset + UMEASURE_PREFIX_INTERNAL_MIN_SI > 0,\r
+              "kPrefixOffset is too small for minimum UMeasurePrefix value");\r
 \r
 // Trie value offset for compound parts, e.g. "-per-", "-", "-and-".\r
 constexpr int32_t kCompoundPartOffset = 128;\r
+static_assert(kCompoundPartOffset > kPrefixOffset + UMEASURE_PREFIX_INTERNAL_MAX_BIN,\r
+              "Ambiguous token values: prefix tokens are overlapping with CompoundPart tokens");\r
+static_assert(kCompoundPartOffset > kPrefixOffset + UMEASURE_PREFIX_INTERNAL_MAX_SI,\r
+              "Ambiguous token values: prefix tokens are overlapping with CompoundPart tokens");\r
 \r
 enum CompoundPart {\r
     // Represents "-per-"\r
@@ -89,44 +98,57 @@ enum PowerPart {
 // "fluid-ounce-imperial".\r
 constexpr int32_t kSimpleUnitOffset = 512;\r
 \r
-const struct SIPrefixStrings {\r
+const struct UnitPrefixStrings {\r
     const char* const string;\r
-    UMeasureSIPrefix value;\r
-} gSIPrefixStrings[] = {\r
-    { "yotta", UMEASURE_SI_PREFIX_YOTTA },\r
-    { "zetta", UMEASURE_SI_PREFIX_ZETTA },\r
-    { "exa", UMEASURE_SI_PREFIX_EXA },\r
-    { "peta", UMEASURE_SI_PREFIX_PETA },\r
-    { "tera", UMEASURE_SI_PREFIX_TERA },\r
-    { "giga", UMEASURE_SI_PREFIX_GIGA },\r
-    { "mega", UMEASURE_SI_PREFIX_MEGA },\r
-    { "kilo", UMEASURE_SI_PREFIX_KILO },\r
-    { "hecto", UMEASURE_SI_PREFIX_HECTO },\r
-    { "deka", UMEASURE_SI_PREFIX_DEKA },\r
-    { "deci", UMEASURE_SI_PREFIX_DECI },\r
-    { "centi", UMEASURE_SI_PREFIX_CENTI },\r
-    { "milli", UMEASURE_SI_PREFIX_MILLI },\r
-    { "micro", UMEASURE_SI_PREFIX_MICRO },\r
-    { "nano", UMEASURE_SI_PREFIX_NANO },\r
-    { "pico", UMEASURE_SI_PREFIX_PICO },\r
-    { "femto", UMEASURE_SI_PREFIX_FEMTO },\r
-    { "atto", UMEASURE_SI_PREFIX_ATTO },\r
-    { "zepto", UMEASURE_SI_PREFIX_ZEPTO },\r
-    { "yocto", UMEASURE_SI_PREFIX_YOCTO },\r
+    UMeasurePrefix value;\r
+} gUnitPrefixStrings[] = {\r
+    // SI prefixes\r
+    { "yotta", UMEASURE_PREFIX_YOTTA },\r
+    { "zetta", UMEASURE_PREFIX_ZETTA },\r
+    { "exa", UMEASURE_PREFIX_EXA },\r
+    { "peta", UMEASURE_PREFIX_PETA },\r
+    { "tera", UMEASURE_PREFIX_TERA },\r
+    { "giga", UMEASURE_PREFIX_GIGA },\r
+    { "mega", UMEASURE_PREFIX_MEGA },\r
+    { "kilo", UMEASURE_PREFIX_KILO },\r
+    { "hecto", UMEASURE_PREFIX_HECTO },\r
+    { "deka", UMEASURE_PREFIX_DEKA },\r
+    { "deci", UMEASURE_PREFIX_DECI },\r
+    { "centi", UMEASURE_PREFIX_CENTI },\r
+    { "milli", UMEASURE_PREFIX_MILLI },\r
+    { "micro", UMEASURE_PREFIX_MICRO },\r
+    { "nano", UMEASURE_PREFIX_NANO },\r
+    { "pico", UMEASURE_PREFIX_PICO },\r
+    { "femto", UMEASURE_PREFIX_FEMTO },\r
+    { "atto", UMEASURE_PREFIX_ATTO },\r
+    { "zepto", UMEASURE_PREFIX_ZEPTO },\r
+    { "yocto", UMEASURE_PREFIX_YOCTO },\r
+    // Binary prefixes\r
+    { "yobi", UMEASURE_PREFIX_YOBI },\r
+    { "zebi", UMEASURE_PREFIX_ZEBI },\r
+    { "exbi", UMEASURE_PREFIX_EXBI },\r
+    { "pebi", UMEASURE_PREFIX_PEBI },\r
+    { "tebi", UMEASURE_PREFIX_TEBI },\r
+    { "gibi", UMEASURE_PREFIX_GIBI },\r
+    { "mebi", UMEASURE_PREFIX_MEBI },\r
+    { "kibi", UMEASURE_PREFIX_KIBI },\r
 };\r
 \r
 /**\r
  * A ResourceSink that collects simple unit identifiers from the keys of the\r
  * convertUnits table into an array, and adds these values to a TrieBuilder,\r
  * with associated values being their index into this array plus a specified\r
- * offset, to a trie.\r
+ * offset.\r
  *\r
  * Example code:\r
  *\r
  *     UErrorCode status = U_ZERO_ERROR;\r
  *     BytesTrieBuilder b(status);\r
- *     const char *unitIdentifiers[200];\r
- *     SimpleUnitIdentifiersSink identifierSink(unitIdentifiers, 200, b, kTrieValueOffset);\r
+ *     int32_t ARR_SIZE = 200;\r
+ *     const char *unitIdentifiers[ARR_SIZE];\r
+ *     int32_t *unitCategories[ARR_SIZE];\r
+ *     SimpleUnitIdentifiersSink identifierSink(gSerializedUnitCategoriesTrie, unitIdentifiers,\r
+ *                                              unitCategories, ARR_SIZE, b, kTrieValueOffset);\r
  *     LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));\r
  *     ures_getAllItemsWithFallback(unitsBundle.getAlias(), "convertUnits", identifierSink, status);\r
  */\r
@@ -134,20 +156,27 @@ class SimpleUnitIdentifiersSink : public icu::ResourceSink {
   public:\r
     /**\r
      * Constructor.\r
-     * @param out Array of char* to which the simple unit identifiers will be\r
-     *     saved.\r
-     * @param outSize The size of `out`.\r
+     * @param quantitiesTrieData The data for constructing a quantitiesTrie,\r
+     *     which maps from a simple unit identifier to an index into the\r
+     *     gCategories array.\r
+     * @param out Array of char* to which pointers to the simple unit\r
+     *     identifiers will be saved. (Does not take ownership.)\r
+     * @param outCategories Array of int32_t to which category indexes will be\r
+     *     saved: this corresponds to simple unit IDs saved to `out`, mapping\r
+     *     from the ID to the value produced by the quantitiesTrie (which is an\r
+     *     index into the gCategories array).\r
+     * @param outSize The size of `out` and `outCategories`.\r
      * @param trieBuilder The trie builder to which the simple unit identifier\r
      *     should be added. The trie builder must outlive this resource sink.\r
      * @param trieValueOffset This is added to the index of the identifier in\r
      *     the `out` array, before adding to `trieBuilder` as the value\r
      *     associated with the identifier.\r
      */\r
-    explicit SimpleUnitIdentifiersSink(const char **out, int32_t outSize, BytesTrieBuilder &trieBuilder,\r
-                                       int32_t trieValueOffset)\r
-        : outArray(out), outSize(outSize), trieBuilder(trieBuilder), trieValueOffset(trieValueOffset),\r
-          outIndex(0) {\r
-    }\r
+    explicit SimpleUnitIdentifiersSink(StringPiece quantitiesTrieData, const char **out,\r
+                                       int32_t *outCategories, int32_t outSize,\r
+                                       BytesTrieBuilder &trieBuilder, int32_t trieValueOffset)\r
+        : outArray(out), outCategories(outCategories), outSize(outSize), trieBuilder(trieBuilder),\r
+          trieValueOffset(trieValueOffset), quantitiesTrieData(quantitiesTrieData), outIndex(0) {}\r
 \r
     /**\r
      * Adds the table keys found in value to the output vector.\r
@@ -167,30 +196,120 @@ class SimpleUnitIdentifiersSink : public icu::ResourceSink {
             return;\r
         }\r
 \r
+        BytesTrie quantitiesTrie(quantitiesTrieData.data());\r
+\r
         // Collect keys from the table resource.\r
-        const char *key;\r
-        for (int32_t i = 0; table.getKeyAndValue(i, key, value); ++i) {\r
+        const char *simpleUnitID;\r
+        for (int32_t i = 0; table.getKeyAndValue(i, simpleUnitID, value); ++i) {\r
             U_ASSERT(i < table.getSize());\r
             U_ASSERT(outIndex < outSize);\r
-            if (uprv_strcmp(key, "kilogram") == 0) {\r
+            if (uprv_strcmp(simpleUnitID, "kilogram") == 0) {\r
                 // For parsing, we use "gram", the prefixless metric mass unit. We\r
                 // thus ignore the SI Base Unit of Mass: it exists due to being the\r
                 // mass conversion target unit, but not needed for MeasureUnit\r
                 // parsing.\r
                 continue;\r
             }\r
-            outArray[outIndex] = key;\r
-            trieBuilder.add(key, trieValueOffset + outIndex, status);\r
+            outArray[outIndex] = simpleUnitID;\r
+            trieBuilder.add(simpleUnitID, trieValueOffset + outIndex, status);\r
+\r
+            // Find the base target unit for this simple unit\r
+            ResourceTable table = value.getTable(status);\r
+            if (U_FAILURE(status)) { return; }\r
+            if (!table.findValue("target", value)) {\r
+                status = U_INVALID_FORMAT_ERROR;\r
+                break;\r
+            }\r
+            int32_t len;\r
+            const UChar* uTarget = value.getString(len, status);\r
+            CharString target;\r
+            target.appendInvariantChars(uTarget, len, status);\r
+            if (U_FAILURE(status)) { return; }\r
+            quantitiesTrie.reset();\r
+            UStringTrieResult result = quantitiesTrie.next(target.data(), target.length());\r
+            if (!USTRINGTRIE_HAS_VALUE(result)) {\r
+                status = U_INVALID_FORMAT_ERROR;\r
+                break;\r
+            }\r
+            outCategories[outIndex] = quantitiesTrie.getValue();\r
+\r
             outIndex++;\r
         }\r
     }\r
 \r
   private:\r
     const char **outArray;\r
+    int32_t *outCategories;\r
     int32_t outSize;\r
     BytesTrieBuilder &trieBuilder;\r
     int32_t trieValueOffset;\r
 \r
+    StringPiece quantitiesTrieData;\r
+\r
+    int32_t outIndex;\r
+};\r
+\r
+/**\r
+ * A ResourceSink that collects information from `unitQuantities` in the `units`\r
+ * resource to provide key->value lookups from base unit to category, as well as\r
+ * preserving ordering information for these categories. See `units.txt`.\r
+ *\r
+ * For example: "kilogram" -> "mass", "meter-per-second" -> "speed".\r
+ *\r
+ * In C++ unitQuantity values are collected in order into a UChar* array, while\r
+ * unitQuantity keys are added added to a TrieBuilder, with associated values\r
+ * being the index into the aforementioned UChar* array.\r
+ */\r
+class CategoriesSink : public icu::ResourceSink {\r
+  public:\r
+    /**\r
+     * Constructor.\r
+     * @param out Array of UChar* to which unitQuantity values will be saved.\r
+     *     The pointers returned  not owned: they point directly at the resource\r
+     *     strings in static memory.\r
+     * @param outSize The size of the `out` array.\r
+     * @param trieBuilder The trie builder to which the keys (base units) of\r
+     *     each unitQuantity will be added, each with value being the offset\r
+     *     into `out`.\r
+     */\r
+    explicit CategoriesSink(const UChar **out, int32_t &outSize, BytesTrieBuilder &trieBuilder)\r
+        : outQuantitiesArray(out), outSize(outSize), trieBuilder(trieBuilder), outIndex(0) {}\r
+\r
+    void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) {\r
+        ResourceArray array = value.getArray(status);\r
+        if (U_FAILURE(status)) {\r
+            return;\r
+        }\r
+\r
+        if (outIndex + array.getSize() > outSize) {\r
+            status = U_INDEX_OUTOFBOUNDS_ERROR;\r
+            return;\r
+        }\r
+\r
+        for (int32_t i = 0; array.getValue(i, value); ++i) {\r
+            U_ASSERT(outIndex < outSize);\r
+            ResourceTable table = value.getTable(status);\r
+            if (U_FAILURE(status)) {\r
+                return;\r
+            }\r
+            if (table.getSize() != 1) {\r
+                status = U_INVALID_FORMAT_ERROR;\r
+                return;\r
+            }\r
+            const char *key;\r
+            table.getKeyAndValue(0, key, value);\r
+            int32_t uTmpLen;\r
+            outQuantitiesArray[outIndex] = value.getString(uTmpLen, status);\r
+            trieBuilder.add(key, outIndex, status);\r
+            outIndex++;\r
+        }\r
+    }\r
+\r
+  private:\r
+    const UChar **outQuantitiesArray;\r
+    int32_t &outSize;\r
+    BytesTrieBuilder &trieBuilder;\r
+\r
     int32_t outIndex;\r
 };\r
 \r
@@ -203,11 +322,34 @@ icu::UInitOnce gUnitExtrasInitOnce = U_INITONCE_INITIALIZER;
 // by SingleUnitImpl::getSimpleUnitID().)\r
 const char **gSimpleUnits = nullptr;\r
 \r
+// Maps from the value associated with each simple unit ID to an index into the\r
+// gCategories array.\r
+int32_t *gSimpleUnitCategories = nullptr;\r
+\r
 char *gSerializedUnitExtrasStemTrie = nullptr;\r
 \r
+// Array of UChar* pointing at the unit categories (aka "quantities", aka\r
+// "types"), as found in the `unitQuantities` resource. The array memory itself\r
+// is owned by this pointer, but the individual UChar* in that array point at\r
+// static memory.\r
+const UChar **gCategories = nullptr;\r
+// Number of items in `gCategories`.\r
+int32_t gCategoriesCount = 0;\r
+// TODO: rather save an index into gCategories?\r
+const char *kConsumption = "consumption";\r
+size_t kConsumptionLen = strlen("consumption");\r
+// Serialized BytesTrie for mapping from base units to indices into gCategories.\r
+char *gSerializedUnitCategoriesTrie = nullptr;\r
+\r
 UBool U_CALLCONV cleanupUnitExtras() {\r
+    uprv_free(gSerializedUnitCategoriesTrie);\r
+    gSerializedUnitCategoriesTrie = nullptr;\r
+    uprv_free(gCategories);\r
+    gCategories = nullptr;\r
     uprv_free(gSerializedUnitExtrasStemTrie);\r
     gSerializedUnitExtrasStemTrie = nullptr;\r
+    uprv_free(gSimpleUnitCategories);\r
+    gSimpleUnitCategories = nullptr;\r
     uprv_free(gSimpleUnits);\r
     gSimpleUnits = nullptr;\r
     gUnitExtrasInitOnce.reset();\r
@@ -216,13 +358,43 @@ UBool U_CALLCONV cleanupUnitExtras() {
 \r
 void U_CALLCONV initUnitExtras(UErrorCode& status) {\r
     ucln_i18n_registerCleanup(UCLN_I18N_UNIT_EXTRAS, cleanupUnitExtras);\r
+    LocalUResourceBundlePointer unitsBundle(ures_openDirect(nullptr, "units", &status));\r
+\r
+    // Collect unitQuantities information into gSerializedUnitCategoriesTrie and gCategories.\r
+    const char *CATEGORY_TABLE_NAME = "unitQuantities";\r
+    LocalUResourceBundlePointer unitQuantities(\r
+        ures_getByKey(unitsBundle.getAlias(), CATEGORY_TABLE_NAME, nullptr, &status));\r
+    if (U_FAILURE(status)) { return; }\r
+    gCategoriesCount = unitQuantities.getAlias()->fSize;\r
+    size_t quantitiesMallocSize = sizeof(UChar *) * gCategoriesCount;\r
+    gCategories = static_cast<const UChar **>(uprv_malloc(quantitiesMallocSize));\r
+    if (gCategories == nullptr) {\r
+        status = U_MEMORY_ALLOCATION_ERROR;\r
+        return;\r
+    }\r
+    uprv_memset(gCategories, 0, quantitiesMallocSize);\r
+    BytesTrieBuilder quantitiesBuilder(status);\r
+    CategoriesSink categoriesSink(gCategories, gCategoriesCount, quantitiesBuilder);\r
+    ures_getAllItemsWithFallback(unitsBundle.getAlias(), CATEGORY_TABLE_NAME, categoriesSink, status);\r
+    StringPiece resultQuantities = quantitiesBuilder.buildStringPiece(USTRINGTRIE_BUILD_FAST, status);\r
+    if (U_FAILURE(status)) { return; }\r
+    // Copy the result into the global constant pointer\r
+    size_t numBytesQuantities = resultQuantities.length();\r
+    gSerializedUnitCategoriesTrie = static_cast<char *>(uprv_malloc(numBytesQuantities));\r
+    if (gSerializedUnitCategoriesTrie == nullptr) {\r
+        status = U_MEMORY_ALLOCATION_ERROR;\r
+        return;\r
+    }\r
+    uprv_memcpy(gSerializedUnitCategoriesTrie, resultQuantities.data(), numBytesQuantities);\r
+\r
+    // Build the BytesTrie that Parser needs for parsing unit identifiers.\r
 \r
     BytesTrieBuilder b(status);\r
     if (U_FAILURE(status)) { return; }\r
 \r
-    // Add SI prefixes\r
-    for (const auto& siPrefixInfo : gSIPrefixStrings) {\r
-        b.add(siPrefixInfo.string, siPrefixInfo.value + kSIPrefixOffset, status);\r
+    // Add SI and binary prefixes\r
+    for (const auto& unitPrefixInfo : gUnitPrefixStrings) {\r
+        b.add(unitPrefixInfo.string, unitPrefixInfo.value + kPrefixOffset, status);\r
     }\r
     if (U_FAILURE(status)) { return; }\r
 \r
@@ -251,11 +423,8 @@ void U_CALLCONV initUnitExtras(UErrorCode& status) {
 \r
     // Add sanctioned simple units by offset: simple units all have entries in\r
     // units/convertUnits resources.\r
-    // TODO(ICU-21059): confirm whether this is clean enough, or whether we need to\r
-    // filter units' validity list instead.\r
-    LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));\r
     LocalUResourceBundlePointer convertUnits(\r
-        ures_getByKey(unitsBundle.getAlias(), "convertUnits", NULL, &status));\r
+        ures_getByKey(unitsBundle.getAlias(), "convertUnits", nullptr, &status));\r
     if (U_FAILURE(status)) { return; }\r
 \r
     // Allocate enough space: with identifierSink below skipping kilogram, we're\r
@@ -268,9 +437,17 @@ void U_CALLCONV initUnitExtras(UErrorCode& status) {
         return;\r
     }\r
     uprv_memset(gSimpleUnits, 0, arrayMallocSize);\r
+    arrayMallocSize = sizeof(int32_t) * simpleUnitsCount;\r
+    gSimpleUnitCategories = static_cast<int32_t *>(uprv_malloc(arrayMallocSize));\r
+    if (gSimpleUnitCategories == nullptr) {\r
+        status = U_MEMORY_ALLOCATION_ERROR;\r
+        return;\r
+    }\r
+    uprv_memset(gSimpleUnitCategories, 0, arrayMallocSize);\r
 \r
     // Populate gSimpleUnits and build the associated trie.\r
-    SimpleUnitIdentifiersSink identifierSink(gSimpleUnits, simpleUnitsCount, b, kSimpleUnitOffset);\r
+    SimpleUnitIdentifiersSink identifierSink(resultQuantities, gSimpleUnits, gSimpleUnitCategories,\r
+                                             simpleUnitsCount, b, kSimpleUnitOffset);\r
     ures_getAllItemsWithFallback(unitsBundle.getAlias(), "convertUnits", identifierSink, status);\r
 \r
     // Build the CharsTrie\r
@@ -294,7 +471,7 @@ public:
 \r
     enum Type {\r
         TYPE_UNDEFINED,\r
-        TYPE_SI_PREFIX,\r
+        TYPE_PREFIX,\r
         // Token type for "-per-", "-", and "-and-".\r
         TYPE_COMPOUND_PART,\r
         // Token type for "per-".\r
@@ -308,7 +485,7 @@ public:
     Type getType() const {\r
         U_ASSERT(fMatch > 0);\r
         if (fMatch < kCompoundPartOffset) {\r
-            return TYPE_SI_PREFIX;\r
+            return TYPE_PREFIX;\r
         }\r
         if (fMatch < kInitialCompoundPartOffset) {\r
             return TYPE_COMPOUND_PART;\r
@@ -322,9 +499,9 @@ public:
         return TYPE_SIMPLE_UNIT;\r
     }\r
 \r
-    UMeasureSIPrefix getSIPrefix() const {\r
-        U_ASSERT(getType() == TYPE_SI_PREFIX);\r
-        return static_cast<UMeasureSIPrefix>(fMatch - kSIPrefixOffset);\r
+    UMeasurePrefix getUnitPrefix() const {\r
+        U_ASSERT(getType() == TYPE_PREFIX);\r
+        return static_cast<UMeasurePrefix>(fMatch - kPrefixOffset);\r
     }\r
 \r
     // Valid only for tokens with type TYPE_COMPOUND_PART.\r
@@ -380,7 +557,53 @@ public:
 \r
     MeasureUnitImpl parse(UErrorCode& status) {\r
         MeasureUnitImpl result;\r
-        parseImpl(result, status);\r
+\r
+        if (U_FAILURE(status)) {\r
+            return result;\r
+        }\r
+        if (fSource.empty()) {\r
+            // The dimenionless unit: nothing to parse. leave result as is.\r
+            return result;\r
+        }\r
+\r
+        while (hasNext()) {\r
+            bool sawAnd = false;\r
+\r
+            SingleUnitImpl singleUnit = nextSingleUnit(sawAnd, status);\r
+            if (U_FAILURE(status)) {\r
+                return result;\r
+            }\r
+\r
+            bool added = result.appendSingleUnit(singleUnit, status);\r
+            if (U_FAILURE(status)) {\r
+                return result;\r
+            }\r
+\r
+            if (sawAnd && !added) {\r
+                // Two similar units are not allowed in a mixed unit.\r
+                status = kUnitIdentifierSyntaxError;\r
+                return result;\r
+            }\r
+\r
+            if (result.singleUnits.length() >= 2) {\r
+                // nextSingleUnit fails appropriately for "per" and "and" in the\r
+                // same identifier. It doesn't fail for other compound units\r
+                // (COMPOUND_PART_TIMES). Consequently we take care of that\r
+                // here.\r
+                UMeasureUnitComplexity complexity =\r
+                    sawAnd ? UMEASURE_UNIT_MIXED : UMEASURE_UNIT_COMPOUND;\r
+                if (result.singleUnits.length() == 2) {\r
+                    // After appending two singleUnits, the complexity will be `UMEASURE_UNIT_COMPOUND`\r
+                    U_ASSERT(result.complexity == UMEASURE_UNIT_COMPOUND);\r
+                    result.complexity = complexity;\r
+                } else if (result.complexity != complexity) {\r
+                    // Can't have mixed compound units\r
+                    status = kUnitIdentifierSyntaxError;\r
+                    return result;\r
+                }\r
+            }\r
+        }\r
+\r
         return result;\r
     }\r
 \r
@@ -457,20 +680,23 @@ private:
      * unit", sawAnd is set to true. If not, it is left as is.\r
      * @param status ICU error code.\r
      */\r
-    void nextSingleUnit(SingleUnitImpl& result, bool& sawAnd, UErrorCode& status) {\r
+    SingleUnitImpl nextSingleUnit(bool &sawAnd, UErrorCode &status) {\r
+        SingleUnitImpl result;\r
         if (U_FAILURE(status)) {\r
-            return;\r
+            return result;\r
         }\r
 \r
         // state:\r
-        // 0 = no tokens seen yet (will accept power, SI prefix, or simple unit)\r
+        // 0 = no tokens seen yet (will accept power, SI or binary prefix, or simple unit)\r
         // 1 = power token seen (will not accept another power token)\r
-        // 2 = SI prefix token seen (will not accept a power or SI prefix token)\r
+        // 2 = SI or binary prefix token seen (will not accept a power, or SI or binary prefix token)\r
         int32_t state = 0;\r
 \r
         bool atStart = fIndex == 0;\r
         Token token = nextToken(status);\r
-        if (U_FAILURE(status)) { return; }\r
+        if (U_FAILURE(status)) {\r
+            return result;\r
+        }\r
 \r
         if (atStart) {\r
             // Identifiers optionally start with "per-".\r
@@ -480,14 +706,16 @@ private:
                 result.dimensionality = -1;\r
 \r
                 token = nextToken(status);\r
-                if (U_FAILURE(status)) { return; }\r
+                if (U_FAILURE(status)) {\r
+                    return result;\r
+                }\r
             }\r
         } else {\r
             // All other SingleUnit's are separated from previous SingleUnit's\r
             // via a compound part:\r
             if (token.getType() != Token::TYPE_COMPOUND_PART) {\r
                 status = kUnitIdentifierSyntaxError;\r
-                return;\r
+                return result;\r
             }\r
 \r
             switch (token.getMatch()) {\r
@@ -496,7 +724,7 @@ private:
                     // Mixed compound units not yet supported,\r
                     // TODO(CLDR-13700).\r
                     status = kUnitIdentifierSyntaxError;\r
-                    return;\r
+                    return result;\r
                 }\r
                 fAfterPer = true;\r
                 result.dimensionality = -1;\r
@@ -513,14 +741,16 @@ private:
                     // Can't start with "-and-", and mixed compound units\r
                     // not yet supported, TODO(CLDR-13700).\r
                     status = kUnitIdentifierSyntaxError;\r
-                    return;\r
+                    return result;\r
                 }\r
                 sawAnd = true;\r
                 break;\r
             }\r
 \r
             token = nextToken(status);\r
-            if (U_FAILURE(status)) { return; }\r
+            if (U_FAILURE(status)) {\r
+                return result;\r
+            }\r
         }\r
 \r
         // Read tokens until we have a complete SingleUnit or we reach the end.\r
@@ -529,87 +759,46 @@ private:
                 case Token::TYPE_POWER_PART:\r
                     if (state > 0) {\r
                         status = kUnitIdentifierSyntaxError;\r
-                        return;\r
+                        return result;\r
                     }\r
                     result.dimensionality *= token.getPower();\r
                     state = 1;\r
                     break;\r
 \r
-                case Token::TYPE_SI_PREFIX:\r
+                case Token::TYPE_PREFIX:\r
                     if (state > 1) {\r
                         status = kUnitIdentifierSyntaxError;\r
-                        return;\r
+                        return result;\r
                     }\r
-                    result.siPrefix = token.getSIPrefix();\r
+                    result.unitPrefix = token.getUnitPrefix();\r
                     state = 2;\r
                     break;\r
 \r
                 case Token::TYPE_SIMPLE_UNIT:\r
                     result.index = token.getSimpleUnitIndex();\r
-                    return;\r
+                    return result;\r
 \r
                 default:\r
                     status = kUnitIdentifierSyntaxError;\r
-                    return;\r
+                    return result;\r
             }\r
 \r
             if (!hasNext()) {\r
                 // We ran out of tokens before finding a complete single unit.\r
                 status = kUnitIdentifierSyntaxError;\r
-                return;\r
+                return result;\r
             }\r
             token = nextToken(status);\r
             if (U_FAILURE(status)) {\r
-                return;\r
+                return result;\r
             }\r
         }\r
-    }\r
 \r
-    /// @param result is modified, not overridden. Caller must pass in a\r
-    /// default-constructed (empty) MeasureUnitImpl instance.\r
-    void parseImpl(MeasureUnitImpl& result, UErrorCode& status) {\r
-        if (U_FAILURE(status)) {\r
-            return;\r
-        }\r
-        if (fSource.empty()) {\r
-            // The dimenionless unit: nothing to parse. leave result as is.\r
-            return;\r
-        }\r
-        int32_t unitNum = 0;\r
-        while (hasNext()) {\r
-            bool sawAnd = false;\r
-            SingleUnitImpl singleUnit;\r
-            nextSingleUnit(singleUnit, sawAnd, status);\r
-            if (U_FAILURE(status)) {\r
-                return;\r
-            }\r
-            U_ASSERT(!singleUnit.isDimensionless());\r
-            bool added = result.append(singleUnit, status);\r
-            if (sawAnd && !added) {\r
-                // Two similar units are not allowed in a mixed unit\r
-                status = kUnitIdentifierSyntaxError;\r
-                return;\r
-            }\r
-            if ((++unitNum) >= 2) {\r
-                // nextSingleUnit fails appropriately for "per" and "and" in the\r
-                // same identifier. It doesn't fail for other compound units\r
-                // (COMPOUND_PART_TIMES). Consequently we take care of that\r
-                // here.\r
-                UMeasureUnitComplexity complexity =\r
-                    sawAnd ? UMEASURE_UNIT_MIXED : UMEASURE_UNIT_COMPOUND;\r
-                if (unitNum == 2) {\r
-                    U_ASSERT(result.complexity == UMEASURE_UNIT_SINGLE);\r
-                    result.complexity = complexity;\r
-                } else if (result.complexity != complexity) {\r
-                    // Can't have mixed compound units\r
-                    status = kUnitIdentifierSyntaxError;\r
-                    return;\r
-                }\r
-            }\r
-        }\r
+        return result;\r
     }\r
 };\r
 \r
+// Sorting function wrapping SingleUnitImpl::compareTo for use with uprv_sortArray.\r
 int32_t U_CALLCONV\r
 compareSingleUnits(const void* /*context*/, const void* left, const void* right) {\r
     auto realLeft = static_cast<const SingleUnitImpl* const*>(left);\r
@@ -617,162 +806,86 @@ compareSingleUnits(const void* /*context*/, const void* left, const void* right)
     return (*realLeft)->compareTo(**realRight);\r
 }\r
 \r
-/**\r
- * Generate the identifier string for a single unit in place.\r
- *\r
- * Does not support the dimensionless SingleUnitImpl: calling serializeSingle\r
- * with the dimensionless unit results in an U_INTERNAL_PROGRAM_ERROR.\r
- *\r
- * @param first If singleUnit is part of a compound unit, and not its first\r
- * single unit, set this to false. Otherwise: set to true.\r
- */\r
-void serializeSingle(const SingleUnitImpl& singleUnit, bool first, CharString& output, UErrorCode& status) {\r
-    if (first && singleUnit.dimensionality < 0) {\r
-        // Essentially the "unary per". For compound units with a numerator, the\r
-        // caller takes care of the "binary per".\r
-        output.append("per-", status);\r
-    }\r
-\r
-    if (singleUnit.isDimensionless()) {\r
-        status = U_INTERNAL_PROGRAM_ERROR;\r
-        return;\r
-    }\r
-    int8_t posPower = std::abs(singleUnit.dimensionality);\r
-    if (posPower == 0) {\r
-        status = U_INTERNAL_PROGRAM_ERROR;\r
-    } else if (posPower == 1) {\r
-        // no-op\r
-    } else if (posPower == 2) {\r
-        output.append("square-", status);\r
-    } else if (posPower == 3) {\r
-        output.append("cubic-", status);\r
-    } else if (posPower < 10) {\r
-        output.append("pow", status);\r
-        output.append(posPower + '0', status);\r
-        output.append('-', status);\r
-    } else if (posPower <= 15) {\r
-        output.append("pow1", status);\r
-        output.append('0' + (posPower % 10), status);\r
-        output.append('-', status);\r
-    } else {\r
-        status = kUnitIdentifierSyntaxError;\r
-    }\r
+// Returns an index into the gCategories array, for the "unitQuantity" (aka\r
+// "type" or "category") associated with the given base unit identifier. Returns\r
+// -1 on failure, together with U_UNSUPPORTED_ERROR.\r
+int32_t getUnitCategoryIndex(StringPiece baseUnitIdentifier, UErrorCode &status) {\r
+    umtx_initOnce(gUnitExtrasInitOnce, &initUnitExtras, status);\r
     if (U_FAILURE(status)) {\r
-        return;\r
+        return -1;\r
     }\r
-\r
-    if (singleUnit.siPrefix != UMEASURE_SI_PREFIX_ONE) {\r
-        for (const auto& siPrefixInfo : gSIPrefixStrings) {\r
-            if (siPrefixInfo.value == singleUnit.siPrefix) {\r
-                output.append(siPrefixInfo.string, status);\r
-                break;\r
-            }\r
-        }\r
+    BytesTrie trie(gSerializedUnitCategoriesTrie);\r
+    UStringTrieResult result = trie.next(baseUnitIdentifier.data(), baseUnitIdentifier.length());\r
+    if (!USTRINGTRIE_HAS_VALUE(result)) {\r
+        status = U_UNSUPPORTED_ERROR;\r
+        return -1;\r
     }\r
-    if (U_FAILURE(status)) {\r
-        return;\r
-    }\r
-\r
-    output.append(singleUnit.getSimpleUnitID(), status);\r
+    return trie.getValue();\r
 }\r
 \r
-/**\r
- * Normalize a MeasureUnitImpl and generate the identifier string in place.\r
- */\r
-void serialize(MeasureUnitImpl& impl, UErrorCode& status) {\r
-    if (U_FAILURE(status)) {\r
-        return;\r
-    }\r
-    U_ASSERT(impl.identifier.isEmpty());\r
-    if (impl.units.length() == 0) {\r
-        // Dimensionless, constructed by the default constructor: no appending\r
-        // to impl.identifier, we wish it to contain the zero-length string.\r
-        return;\r
-    }\r
-    if (impl.complexity == UMEASURE_UNIT_COMPOUND) {\r
-        // Note: don't sort a MIXED unit\r
-        uprv_sortArray(\r
-            impl.units.getAlias(),\r
-            impl.units.length(),\r
-            sizeof(impl.units[0]),\r
-            compareSingleUnits,\r
-            nullptr,\r
-            false,\r
-            &status);\r
-        if (U_FAILURE(status)) {\r
-            return;\r
-        }\r
-    }\r
-    serializeSingle(*impl.units[0], true, impl.identifier, status);\r
-    if (impl.units.length() == 1) {\r
-        return;\r
-    }\r
-    for (int32_t i = 1; i < impl.units.length(); i++) {\r
-        const SingleUnitImpl& prev = *impl.units[i-1];\r
-        const SingleUnitImpl& curr = *impl.units[i];\r
-        if (impl.complexity == UMEASURE_UNIT_MIXED) {\r
-            impl.identifier.append("-and-", status);\r
-            serializeSingle(curr, true, impl.identifier, status);\r
-        } else {\r
-            if (prev.dimensionality > 0 && curr.dimensionality < 0) {\r
-                impl.identifier.append("-per-", status);\r
-            } else {\r
-                impl.identifier.append('-', status);\r
-            }\r
-            serializeSingle(curr, false, impl.identifier, status);\r
-        }\r
+} // namespace\r
+\r
+U_CAPI int32_t U_EXPORT2\r
+umeas_getPrefixPower(UMeasurePrefix unitPrefix) {\r
+    if (unitPrefix >= UMEASURE_PREFIX_INTERNAL_MIN_BIN &&\r
+        unitPrefix <= UMEASURE_PREFIX_INTERNAL_MAX_BIN) {\r
+        return unitPrefix - UMEASURE_PREFIX_INTERNAL_ONE_BIN;\r
     }\r
+    U_ASSERT(unitPrefix >= UMEASURE_PREFIX_INTERNAL_MIN_SI &&\r
+             unitPrefix <= UMEASURE_PREFIX_INTERNAL_MAX_SI);\r
+    return unitPrefix - UMEASURE_PREFIX_ONE;\r
+}\r
 \r
+U_CAPI int32_t U_EXPORT2\r
+umeas_getPrefixBase(UMeasurePrefix unitPrefix) {\r
+    if (unitPrefix >= UMEASURE_PREFIX_INTERNAL_MIN_BIN &&\r
+        unitPrefix <= UMEASURE_PREFIX_INTERNAL_MAX_BIN) {\r
+        return 1024;\r
+    }\r
+    U_ASSERT(unitPrefix >= UMEASURE_PREFIX_INTERNAL_MIN_SI &&\r
+             unitPrefix <= UMEASURE_PREFIX_INTERNAL_MAX_SI);\r
+    return 10;\r
 }\r
 \r
-/**\r
- * Appends a SingleUnitImpl to a MeasureUnitImpl.\r
- *\r
- * @return true if a new item was added. If unit is the dimensionless unit, it\r
- * is never added: the return value will always be false.\r
- */\r
-bool appendImpl(MeasureUnitImpl& impl, const SingleUnitImpl& unit, UErrorCode& status) {\r
-    if (unit.isDimensionless()) {\r
-        // We don't append dimensionless units.\r
-        return false;\r
+CharString U_I18N_API getUnitQuantity(StringPiece baseUnitIdentifier, UErrorCode &status) {\r
+    CharString result;\r
+    U_ASSERT(result.length() == 0);\r
+    if (U_FAILURE(status)) {\r
+        return result;\r
     }\r
-    // Find a similar unit that already exists, to attempt to coalesce\r
-    SingleUnitImpl* oldUnit = nullptr;\r
-    for (int32_t i = 0; i < impl.units.length(); i++) {\r
-        auto* candidate = impl.units[i];\r
-        if (candidate->isCompatibleWith(unit)) {\r
-            oldUnit = candidate;\r
+    UErrorCode localStatus = U_ZERO_ERROR;\r
+    int32_t idx = getUnitCategoryIndex(baseUnitIdentifier, localStatus);\r
+    if (U_FAILURE(localStatus)) {\r
+        // TODO(icu-units#130): support inverting any unit, with correct\r
+        // fallback logic: inversion and fallback may depend on presence or\r
+        // absence of a usage for that category.\r
+        if (uprv_strcmp(baseUnitIdentifier.data(), "meter-per-cubic-meter") == 0) {\r
+            result.append(kConsumption, (int32_t)kConsumptionLen, status);\r
+            return result;\r
         }\r
+        status = U_INVALID_FORMAT_ERROR;\r
+        return result;\r
     }\r
-    if (oldUnit) {\r
-        // Both dimensionalities will be positive, or both will be negative, by\r
-        // virtue of isCompatibleWith().\r
-        oldUnit->dimensionality += unit.dimensionality;\r
-    } else {\r
-        SingleUnitImpl* destination = impl.units.emplaceBack();\r
-        if (!destination) {\r
-            status = U_MEMORY_ALLOCATION_ERROR;\r
-            return false;\r
-        }\r
-        *destination = unit;\r
+    if (idx < 0 || idx >= gCategoriesCount) {\r
+        status = U_INVALID_FORMAT_ERROR;\r
+        return result;\r
     }\r
-    return (oldUnit == nullptr);\r
+    result.appendInvariantChars(gCategories[idx], u_strlen(gCategories[idx]), status);\r
+    return result;\r
 }\r
 \r
-} // namespace\r
-\r
-\r
+// In ICU4J, this is MeasureUnit.getSingleUnitImpl().\r
 SingleUnitImpl SingleUnitImpl::forMeasureUnit(const MeasureUnit& measureUnit, UErrorCode& status) {\r
     MeasureUnitImpl temp;\r
     const MeasureUnitImpl& impl = MeasureUnitImpl::forMeasureUnit(measureUnit, temp, status);\r
     if (U_FAILURE(status)) {\r
         return {};\r
     }\r
-    if (impl.units.length() == 0) {\r
+    if (impl.singleUnits.length() == 0) {\r
         return {};\r
     }\r
-    if (impl.units.length() == 1) {\r
-        return *impl.units[0];\r
+    if (impl.singleUnits.length() == 1) {\r
+        return *impl.singleUnits[0];\r
     }\r
     status = U_ILLEGAL_ARGUMENT_ERROR;\r
     return {};\r
@@ -780,7 +893,13 @@ SingleUnitImpl SingleUnitImpl::forMeasureUnit(const MeasureUnit& measureUnit, UE
 \r
 MeasureUnit SingleUnitImpl::build(UErrorCode& status) const {\r
     MeasureUnitImpl temp;\r
-    temp.append(*this, status);\r
+    temp.appendSingleUnit(*this, status);\r
+    // TODO(icu-units#28): the MeasureUnitImpl::build() method uses\r
+    // findBySubtype, which is relatively slow.\r
+    // - At the time of loading the simple unit IDs, we could also save a\r
+    //   mapping to the builtin MeasureUnit type and subtype they correspond to.\r
+    // - This method could then check dimensionality and index, and if both are\r
+    //   1, directly return MeasureUnit instances very quickly.\r
     return std::move(temp).build(status);\r
 }\r
 \r
@@ -788,12 +907,56 @@ const char *SingleUnitImpl::getSimpleUnitID() const {
     return gSimpleUnits[index];\r
 }\r
 \r
-MeasureUnitImpl::MeasureUnitImpl(const MeasureUnitImpl &other, UErrorCode &status) {\r
-    *this = other.copy(status);\r
+void SingleUnitImpl::appendNeutralIdentifier(CharString &result, UErrorCode &status) const {\r
+    int32_t absPower = std::abs(this->dimensionality);\r
+\r
+    U_ASSERT(absPower > 0); // "this function does not support the dimensionless single units";\r
+    \r
+    if (absPower == 1) {\r
+        // no-op\r
+    } else if (absPower == 2) {\r
+        result.append(StringPiece("square-"), status);\r
+    } else if (absPower == 3) {\r
+        result.append(StringPiece("cubic-"), status);\r
+    } else if (absPower <= 15) {\r
+        result.append(StringPiece("pow"), status);\r
+        result.appendNumber(absPower, status);\r
+        result.append(StringPiece("-"), status);\r
+    } else {\r
+        status = U_ILLEGAL_ARGUMENT_ERROR; // Unit Identifier Syntax Error\r
+        return;\r
+    }\r
+\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+\r
+    if (this->unitPrefix != UMEASURE_PREFIX_ONE) {\r
+        bool found = false;\r
+        for (const auto &unitPrefixInfo : gUnitPrefixStrings) {\r
+            // TODO: consider using binary search? If we do this, add a unit\r
+            // test to ensure gUnitPrefixStrings is sorted?\r
+            if (unitPrefixInfo.value == this->unitPrefix) {\r
+                result.append(unitPrefixInfo.string, status);\r
+                found = true;\r
+                break;\r
+            }\r
+        }\r
+        if (!found) {\r
+            status = U_UNSUPPORTED_ERROR;\r
+            return;\r
+        }\r
+    }\r
+\r
+    result.append(StringPiece(this->getSimpleUnitID()), status);\r
+}\r
+\r
+int32_t SingleUnitImpl::getUnitCategoryIndex() const {\r
+    return gSimpleUnitCategories[index];\r
 }\r
 \r
 MeasureUnitImpl::MeasureUnitImpl(const SingleUnitImpl &singleUnit, UErrorCode &status) {\r
-    this->append(singleUnit, status);\r
+    this->appendSingleUnit(singleUnit, status);\r
 }\r
 \r
 MeasureUnitImpl MeasureUnitImpl::forIdentifier(StringPiece identifier, UErrorCode& status) {\r
@@ -821,33 +984,135 @@ MeasureUnitImpl MeasureUnitImpl::forMeasureUnitMaybeCopy(
 \r
 void MeasureUnitImpl::takeReciprocal(UErrorCode& /*status*/) {\r
     identifier.clear();\r
-    for (int32_t i = 0; i < units.length(); i++) {\r
-        units[i]->dimensionality *= -1;\r
+    for (int32_t i = 0; i < singleUnits.length(); i++) {\r
+        singleUnits[i]->dimensionality *= -1;\r
     }\r
 }\r
 \r
-bool MeasureUnitImpl::append(const SingleUnitImpl& singleUnit, UErrorCode& status) {\r
+bool MeasureUnitImpl::appendSingleUnit(const SingleUnitImpl &singleUnit, UErrorCode &status) {\r
     identifier.clear();\r
-    return appendImpl(*this, singleUnit, status);\r
+\r
+    if (singleUnit.isDimensionless()) {\r
+        // Do not append dimensionless units.\r
+        return false;\r
+    }\r
+\r
+    // Find a similar unit that already exists, to attempt to coalesce\r
+    SingleUnitImpl *oldUnit = nullptr;\r
+    for (int32_t i = 0; i < this->singleUnits.length(); i++) {\r
+        auto *candidate = this->singleUnits[i];\r
+        if (candidate->isCompatibleWith(singleUnit)) {\r
+            oldUnit = candidate;\r
+        }\r
+    }\r
+\r
+    if (oldUnit) {\r
+        // Both dimensionalities will be positive, or both will be negative, by\r
+        // virtue of isCompatibleWith().\r
+        oldUnit->dimensionality += singleUnit.dimensionality;\r
+\r
+        return false;\r
+    }\r
+\r
+    // Add a copy of singleUnit\r
+    // NOTE: MaybeStackVector::emplaceBackAndCheckErrorCode creates new copy of  singleUnit.\r
+    this->singleUnits.emplaceBackAndCheckErrorCode(status, singleUnit);\r
+    if (U_FAILURE(status)) {\r
+        return false;\r
+    }\r
+\r
+    // If the MeasureUnitImpl is `UMEASURE_UNIT_SINGLE` and after the appending a unit, the `singleUnits`\r
+    // contains more than one. thus means the complexity should be `UMEASURE_UNIT_COMPOUND`\r
+    if (this->singleUnits.length() > 1 &&\r
+        this->complexity == UMeasureUnitComplexity::UMEASURE_UNIT_SINGLE) {\r
+        this->complexity = UMeasureUnitComplexity::UMEASURE_UNIT_COMPOUND;\r
+    }\r
+\r
+    return true;\r
 }\r
 \r
-MaybeStackVector<MeasureUnitImpl> MeasureUnitImpl::extractIndividualUnits(UErrorCode &status) const {\r
-    MaybeStackVector<MeasureUnitImpl> result;\r
+MaybeStackVector<MeasureUnitImplWithIndex>\r
+MeasureUnitImpl::extractIndividualUnitsWithIndices(UErrorCode &status) const {\r
+    MaybeStackVector<MeasureUnitImplWithIndex> result;\r
 \r
     if (this->complexity != UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) {\r
-        result.emplaceBackAndCheckErrorCode(status, *this, status);\r
+        result.emplaceBackAndCheckErrorCode(status, 0, *this, status);\r
         return result;\r
     }\r
 \r
-    for (int32_t i = 0; i < units.length(); i++) {\r
-        result.emplaceBackAndCheckErrorCode(status, *units[i], status);\r
+    for (int32_t i = 0; i < singleUnits.length(); ++i) {\r
+        result.emplaceBackAndCheckErrorCode(status, i, *singleUnits[i], status);\r
+        if (U_FAILURE(status)) {\r
+            return result;\r
+        }\r
     }\r
 \r
     return result;\r
 }\r
 \r
+/**\r
+ * Normalize a MeasureUnitImpl and generate the identifier string in place.\r
+ */\r
+void MeasureUnitImpl::serialize(UErrorCode &status) {\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+\r
+    if (this->singleUnits.length() == 0) {\r
+        // Dimensionless, constructed by the default constructor.\r
+        return;\r
+    }\r
+\r
+    if (this->complexity == UMEASURE_UNIT_COMPOUND) {\r
+        // Note: don't sort a MIXED unit\r
+        uprv_sortArray(this->singleUnits.getAlias(), this->singleUnits.length(),\r
+                       sizeof(this->singleUnits[0]), compareSingleUnits, nullptr, false, &status);\r
+        if (U_FAILURE(status)) {\r
+            return;\r
+        }\r
+    }\r
+\r
+    CharString result;\r
+    bool beforePer = true;\r
+    bool firstTimeNegativeDimension = false;\r
+    for (int32_t i = 0; i < this->singleUnits.length(); i++) {\r
+        if (beforePer && (*this->singleUnits[i]).dimensionality < 0) {\r
+            beforePer = false;\r
+            firstTimeNegativeDimension = true;\r
+        } else if ((*this->singleUnits[i]).dimensionality < 0) {\r
+            firstTimeNegativeDimension = false;\r
+        }\r
+\r
+        if (U_FAILURE(status)) {\r
+            return;\r
+        }\r
+\r
+        if (this->complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) {\r
+            if (result.length() != 0) {\r
+                result.append(StringPiece("-and-"), status);\r
+            }\r
+        } else {\r
+            if (firstTimeNegativeDimension) {\r
+                if (result.length() == 0) {\r
+                    result.append(StringPiece("per-"), status);\r
+                } else {\r
+                    result.append(StringPiece("-per-"), status);\r
+                }\r
+            } else {\r
+                if (result.length() != 0) {\r
+                    result.append(StringPiece("-"), status);\r
+                }\r
+            }\r
+        }\r
+\r
+        this->singleUnits[i]->appendNeutralIdentifier(result, status);\r
+    }\r
+\r
+    this->identifier = CharString(result, status);\r
+}\r
+\r
 MeasureUnit MeasureUnitImpl::build(UErrorCode& status) && {\r
-    serialize(*this, status);\r
+    this->serialize(status);\r
     return MeasureUnit(std::move(*this));\r
 }\r
 \r
@@ -860,13 +1125,13 @@ UMeasureUnitComplexity MeasureUnit::getComplexity(UErrorCode& status) const {
     return MeasureUnitImpl::forMeasureUnit(*this, temp, status).complexity;\r
 }\r
 \r
-UMeasureSIPrefix MeasureUnit::getSIPrefix(UErrorCode& status) const {\r
-    return SingleUnitImpl::forMeasureUnit(*this, status).siPrefix;\r
+UMeasurePrefix MeasureUnit::getPrefix(UErrorCode& status) const {\r
+    return SingleUnitImpl::forMeasureUnit(*this, status).unitPrefix;\r
 }\r
 \r
-MeasureUnit MeasureUnit::withSIPrefix(UMeasureSIPrefix prefix, UErrorCode& status) const {\r
+MeasureUnit MeasureUnit::withPrefix(UMeasurePrefix prefix, UErrorCode& status) const {\r
     SingleUnitImpl singleUnit = SingleUnitImpl::forMeasureUnit(*this, status);\r
-    singleUnit.siPrefix = prefix;\r
+    singleUnit.unitPrefix = prefix;\r
     return singleUnit.build(status);\r
 }\r
 \r
@@ -899,10 +1164,10 @@ MeasureUnit MeasureUnit::product(const MeasureUnit& other, UErrorCode& status) c
         status = U_ILLEGAL_ARGUMENT_ERROR;\r
         return {};\r
     }\r
-    for (int32_t i = 0; i < otherImpl.units.length(); i++) {\r
-        impl.append(*otherImpl.units[i], status);\r
+    for (int32_t i = 0; i < otherImpl.singleUnits.length(); i++) {\r
+        impl.appendSingleUnit(*otherImpl.singleUnits[i], status);\r
     }\r
-    if (impl.units.length() > 1) {\r
+    if (impl.singleUnits.length() > 1) {\r
         impl.complexity = UMEASURE_UNIT_COMPOUND;\r
     }\r
     return std::move(impl).build(status);\r
@@ -911,14 +1176,14 @@ MeasureUnit MeasureUnit::product(const MeasureUnit& other, UErrorCode& status) c
 LocalArray<MeasureUnit> MeasureUnit::splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const {\r
     MeasureUnitImpl temp;\r
     const MeasureUnitImpl& impl = MeasureUnitImpl::forMeasureUnit(*this, temp, status);\r
-    outCount = impl.units.length();\r
+    outCount = impl.singleUnits.length();\r
     MeasureUnit* arr = new MeasureUnit[outCount];\r
     if (arr == nullptr) {\r
         status = U_MEMORY_ALLOCATION_ERROR;\r
         return LocalArray<MeasureUnit>();\r
     }\r
     for (int32_t i = 0; i < outCount; i++) {\r
-        arr[i] = impl.units[i]->build(status);\r
+        arr[i] = impl.singleUnits[i]->build(status);\r
     }\r
     return LocalArray<MeasureUnit>(arr, status);\r
 }\r
index c92b535..53f8117 100644 (file)
 \r
 U_NAMESPACE_BEGIN\r
 \r
+namespace number {\r
+namespace impl {\r
+class LongNameHandler;\r
+}\r
+} // namespace number\r
 \r
 static const char16_t kDefaultCurrency[] = u"XXX";\r
 static const char kDefaultCurrency8[] = "XXX";\r
 \r
+/**\r
+ * Looks up the "unitQuantity" (aka "type" or "category") of a base unit\r
+ * identifier. The category is returned via `result`, which must initially be\r
+ * empty.\r
+ *\r
+ * This only supports base units: other units must be resolved to base units\r
+ * before passing to this function, otherwise U_UNSUPPORTED_ERROR status will be\r
+ * returned.\r
+ *\r
+ * Categories are found in `unitQuantities` in the `units` resource (see\r
+ * `units.txt`).\r
+ */\r
+CharString U_I18N_API getUnitQuantity(StringPiece baseUnitIdentifier, UErrorCode &status);\r
 \r
 /**\r
- * A struct representing a single unit (optional SI prefix and dimensionality).\r
+ * A struct representing a single unit (optional SI or binary prefix, and dimensionality).\r
  */\r
 struct U_I18N_API SingleUnitImpl : public UMemory {\r
     /**\r
@@ -43,9 +61,25 @@ struct U_I18N_API SingleUnitImpl : public UMemory {
     const char *getSimpleUnitID() const;\r
 \r
     /**\r
+     * Generates and append a neutral identifier string for a single unit which means we do not include\r
+     * the dimension signal.\r
+     */\r
+    void appendNeutralIdentifier(CharString &result, UErrorCode &status) const;\r
+\r
+    /**\r
+     * Returns the index of this unit's "quantity" in unitQuantities (in\r
+     * measunit_extra.cpp). The value of this index determines sort order for\r
+     * normalization of unit identifiers.\r
+     */\r
+    int32_t getUnitCategoryIndex() const;\r
+\r
+    /**\r
      * Compare this SingleUnitImpl to another SingleUnitImpl for the sake of\r
      * sorting and coalescing.\r
      *\r
+     * Sort order of units is specified by UTS #35\r
+     * (https://unicode.org/reports/tr35/tr35-info.html#Unit_Identifier_Normalization).\r
+     *\r
      * Takes the sign of dimensionality into account, but not the absolute\r
      * value: per-meter is not considered the same as meter, but meter is\r
      * considered the same as square-meter.\r
@@ -62,16 +96,29 @@ struct U_I18N_API SingleUnitImpl : public UMemory {
         if (dimensionality > 0 && other.dimensionality < 0) {\r
             return -1;\r
         }\r
+        // Sort by official quantity order\r
+        int32_t thisQuantity = this->getUnitCategoryIndex();\r
+        int32_t otherQuantity = other.getUnitCategoryIndex();\r
+        if (thisQuantity < otherQuantity) {\r
+            return -1;\r
+        }\r
+        if (thisQuantity > otherQuantity) {\r
+            return 1;\r
+        }\r
+        // If quantity order didn't help, then we go by index.\r
         if (index < other.index) {\r
             return -1;\r
         }\r
         if (index > other.index) {\r
             return 1;\r
         }\r
-        if (siPrefix < other.siPrefix) {\r
+        // TODO: revisit if the spec dictates prefix sort order - it doesn't\r
+        // currently. For now we're sorting binary prefixes before SI prefixes,\r
+        // as per enum values order.\r
+        if (unitPrefix < other.unitPrefix) {\r
             return -1;\r
         }\r
-        if (siPrefix > other.siPrefix) {\r
+        if (unitPrefix > other.unitPrefix) {\r
             return 1;\r
         }\r
         return 0;\r
@@ -80,8 +127,8 @@ struct U_I18N_API SingleUnitImpl : public UMemory {
     /**\r
      * Return whether this SingleUnitImpl is compatible with another for the purpose of coalescing.\r
      *\r
-     * Units with the same base unit and SI prefix should match, except that they must also have\r
-     * the same dimensionality sign, such that we don't merge numerator and denominator.\r
+     * Units with the same base unit and SI or binary prefix should match, except that they must also\r
+     * have the same dimensionality sign, such that we don't merge numerator and denominator.\r
      */\r
     bool isCompatibleWith(const SingleUnitImpl& other) const {\r
         return (compareTo(other) == 0);\r
@@ -98,7 +145,8 @@ struct U_I18N_API SingleUnitImpl : public UMemory {
 \r
     /**\r
      * Simple unit index, unique for every simple unit, -1 for the dimensionless\r
-     * unit. This is an index into a string list in measunit_extra.cpp.\r
+     * unit. This is an index into a string list in measunit_extra.cpp, as\r
+     * loaded by SimpleUnitIdentifiersSink.\r
      *\r
      * The default value is -1, meaning the dimensionless unit:\r
      * isDimensionless() will return true, until index is changed.\r
@@ -106,11 +154,11 @@ struct U_I18N_API SingleUnitImpl : public UMemory {
     int32_t index = -1;\r
 \r
     /**\r
-     * SI prefix.\r
+     * SI or binary prefix.\r
      *\r
      * This is ignored for the dimensionless unit.\r
      */\r
-    UMeasureSIPrefix siPrefix = UMEASURE_SI_PREFIX_ONE;\r
+    UMeasurePrefix unitPrefix = UMEASURE_PREFIX_ONE;\r
 \r
     /**\r
      * Dimensionality.\r
@@ -120,11 +168,14 @@ struct U_I18N_API SingleUnitImpl : public UMemory {
     int32_t dimensionality = 1;\r
 };\r
 \r
+// Forward declaration\r
+struct MeasureUnitImplWithIndex;\r
+\r
 // Export explicit template instantiations of MaybeStackArray, MemoryPool and\r
 // MaybeStackVector. This is required when building DLLs for Windows. (See\r
 // datefmt.h, collationiterator.h, erarules.h and others for similar examples.)\r
 #if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN\r
-template class U_I18N_API MaybeStackArray<SingleUnitImpl*, 8>;\r
+template class U_I18N_API MaybeStackArray<SingleUnitImpl *, 8>;\r
 template class U_I18N_API MemoryPool<SingleUnitImpl, 8>;\r
 template class U_I18N_API MaybeStackVector<SingleUnitImpl, 8>;\r
 #endif\r
@@ -133,16 +184,18 @@ template class U_I18N_API MaybeStackVector<SingleUnitImpl, 8>;
  * Internal representation of measurement units. Capable of representing all complexities of units,\r
  * including mixed and compound units.\r
  */\r
-struct U_I18N_API MeasureUnitImpl : public UMemory {\r
+class U_I18N_API MeasureUnitImpl : public UMemory {\r
+  public:\r
     MeasureUnitImpl() = default;\r
     MeasureUnitImpl(MeasureUnitImpl &&other) = default;\r
-    MeasureUnitImpl(const MeasureUnitImpl &other, UErrorCode &status);\r
+    // No copy constructor, use MeasureUnitImpl::copy() to make it explicit.\r
+    MeasureUnitImpl(const MeasureUnitImpl &other, UErrorCode &status) = delete;\r
     MeasureUnitImpl(const SingleUnitImpl &singleUnit, UErrorCode &status);\r
 \r
     MeasureUnitImpl &operator=(MeasureUnitImpl &&other) noexcept = default;\r
 \r
     /** Extract the MeasureUnitImpl from a MeasureUnit. */\r
-    static inline const MeasureUnitImpl* get(const MeasureUnit& measureUnit) {\r
+    static inline const MeasureUnitImpl *get(const MeasureUnit &measureUnit) {\r
         return measureUnit.fImpl;\r
     }\r
 \r
@@ -197,14 +250,15 @@ struct U_I18N_API MeasureUnitImpl : public UMemory {
     MeasureUnitImpl copy(UErrorCode& status) const;\r
 \r
     /**\r
-     * Extracts the list of all the individual units inside the `MeasureUnitImpl`.\r
+     * Extracts the list of all the individual units inside the `MeasureUnitImpl` with their indices.\r
      *      For example:    \r
      *          -   if the `MeasureUnitImpl` is `foot-per-hour`\r
-     *                  it will return a list of 1 {`foot-per-hour`\r
+     *                  it will return a list of 1 {(0, `foot-per-hour`)\r
      *          -   if the `MeasureUnitImpl` is `foot-and-inch` \r
-     *                  it will return a list of 2 { `foot`, `inch`}\r
+     *                  it will return a list of 2 {(0, `foot`), (1, `inch`)}\r
      */\r
-    MaybeStackVector<MeasureUnitImpl> extractIndividualUnits(UErrorCode &status) const;\r
+    MaybeStackVector<MeasureUnitImplWithIndex>\r
+    extractIndividualUnitsWithIndices(UErrorCode &status) const;\r
 \r
     /** Mutates this MeasureUnitImpl to take the reciprocal. */\r
     void takeReciprocal(UErrorCode& status);\r
@@ -215,26 +269,71 @@ struct U_I18N_API MeasureUnitImpl : public UMemory {
      * @return true if a new item was added. If unit is the dimensionless unit,\r
      * it is never added: the return value will always be false.\r
      */\r
-    bool append(const SingleUnitImpl& singleUnit, UErrorCode& status);\r
+    bool appendSingleUnit(const SingleUnitImpl& singleUnit, UErrorCode& status);\r
 \r
     /** The complexity, either SINGLE, COMPOUND, or MIXED. */\r
     UMeasureUnitComplexity complexity = UMEASURE_UNIT_SINGLE;\r
 \r
     /**\r
-     * The list of simple units. These may be summed or multiplied, based on the\r
+     * The list of single units. These may be summed or multiplied, based on the\r
      * value of the complexity field.\r
      *\r
      * The "dimensionless" unit (SingleUnitImpl default constructor) must not be\r
      * added to this list.\r
      */\r
-    MaybeStackVector<SingleUnitImpl> units;\r
+    MaybeStackVector<SingleUnitImpl> singleUnits;\r
 \r
     /**\r
      * The full unit identifier.  Owned by the MeasureUnitImpl.  Empty if not computed.\r
      */\r
     CharString identifier;\r
+\r
+  private:\r
+    /**\r
+     * Normalizes a MeasureUnitImpl and generate the identifier string in place.\r
+     */\r
+    void serialize(UErrorCode &status);\r
+\r
+    // For calling serialize\r
+    // TODO(icu-units#147): revisit serialization\r
+    friend class number::impl::LongNameHandler;\r
+};\r
+\r
+struct U_I18N_API MeasureUnitImplWithIndex : public UMemory {\r
+    const int32_t index;\r
+    MeasureUnitImpl unitImpl;\r
+    // Makes a copy of unitImpl.\r
+    MeasureUnitImplWithIndex(int32_t index, const MeasureUnitImpl &unitImpl, UErrorCode &status)\r
+        : index(index), unitImpl(unitImpl.copy(status)) {\r
+    }\r
+    MeasureUnitImplWithIndex(int32_t index, const SingleUnitImpl &singleUnitImpl, UErrorCode &status)\r
+        : index(index), unitImpl(MeasureUnitImpl(singleUnitImpl, status)) {\r
+    }\r
 };\r
 \r
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and\r
+// MaybeStackVector. This is required when building DLLs for Windows. (See\r
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)\r
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN\r
+template class U_I18N_API MaybeStackArray<MeasureUnitImplWithIndex *, 8>;\r
+template class U_I18N_API MemoryPool<MeasureUnitImplWithIndex, 8>;\r
+template class U_I18N_API MaybeStackVector<MeasureUnitImplWithIndex, 8>;\r
+\r
+// Export an explicit template instantiation of the LocalPointer that is used as a\r
+// data member of MeasureUnitImpl.\r
+// (When building DLLs for Windows this is required.)\r
+#if defined(_MSC_VER)\r
+// Ignore warning 4661 as LocalPointerBase does not use operator== or operator!=\r
+#pragma warning(push)\r
+#pragma warning(disable : 4661)\r
+#endif\r
+template class U_I18N_API LocalPointerBase<MeasureUnitImpl>;\r
+template class U_I18N_API LocalPointer<MeasureUnitImpl>;\r
+#if defined(_MSC_VER)\r
+#pragma warning(pop)\r
+#endif\r
+#endif\r
+\r
 U_NAMESPACE_END\r
 \r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
index f8e2c43..eeb72ba 100644 (file)
@@ -1107,7 +1107,7 @@ void MessageFormat::format(int32_t msgStart, const void *plNumber,
         } else if (argType == UMSGPAT_ARG_TYPE_NONE || (cachedFormatters && uhash_iget(cachedFormatters, i - 2))) {\r
             // We arrive here if getCachedFormatter returned NULL, but there was actually an element in the hash table.\r
             // This can only happen if the hash table contained a DummyFormat, so the if statement above is a check\r
-            // for the hash table containind DummyFormat.\r
+            // for the hash table containing DummyFormat.\r
             if (arg->isNumeric()) {\r
                 const NumberFormat* nf = getDefaultNumberFormat(success);\r
                 appendTo.formatAndAppend(nf, *arg, success);\r
@@ -1440,7 +1440,7 @@ MessageFormat::parse(int32_t msgStart,
             argType==UMSGPAT_ARG_TYPE_NONE || (cachedFormatters && uhash_iget(cachedFormatters, i -2))) {\r
             // We arrive here if getCachedFormatter returned NULL, but there was actually an element in the hash table.\r
             // This can only happen if the hash table contained a DummyFormat, so the if statement above is a check\r
-            // for the hash table containind DummyFormat.\r
+            // for the hash table containing DummyFormat.\r
 \r
             // Match as a string.\r
             // if at end, use longest possible match\r
index 123de1c..602d5f7 100644 (file)
@@ -119,7 +119,7 @@ void NameUnicodeTransliterator::handleTransliterate(Replaceable& text, UTransPos
         return;\r
     }\r
 \r
-    // Accomodate the longest possible name\r
+    // Accommodate the longest possible name\r
     ++maxLen; // allow for temporary trailing space\r
     char* cbuf = (char*) uprv_malloc(maxLen);\r
     if (cbuf == NULL) {\r
index 92f851f..15de217 100644 (file)
@@ -231,7 +231,7 @@ NFRuleSet::parseRules(UnicodeString& description, UErrorCode& status)
 \r
     // (this isn't a for loop because we might be deleting items from\r
     // the vector-- we want to make sure we only increment i when\r
-    // we _didn't_ delete aything from the vector)\r
+    // we _didn't_ delete anything from the vector)\r
     int32_t rulesSize = rules.size();\r
     for (int32_t i = 0; i < rulesSize; i++) {\r
         NFRule* rule = rules[i];\r
@@ -647,7 +647,7 @@ NFRuleSet::findFractionRuleSetRule(double number) const
 /**\r
  * Parses a string.  Matches the string to be parsed against each\r
  * of its rules (with a base value less than upperBound) and returns\r
- * the value produced by the rule that matched the most charcters\r
+ * the value produced by the rule that matched the most characters\r
  * in the source string.\r
  * @param text The string to parse\r
  * @param parsePosition The initial position is ignored and assumed\r
index ab17feb..fffc2bd 100644 (file)
@@ -55,7 +55,7 @@ int32_t countZeros(const UChar *patternString, int32_t patternLength) {
 } // namespace\r
 \r
 // NOTE: patterns and multipliers both get zero-initialized.\r
-CompactData::CompactData() : patterns(), multipliers(), largestMagnitude(0), isEmpty(TRUE) {\r
+CompactData::CompactData() : patterns(), multipliers(), largestMagnitude(0), isEmpty(true) {\r
 }\r
 \r
 void CompactData::populate(const Locale &locale, const char *nsName, CompactStyle compactStyle,\r
@@ -104,14 +104,30 @@ int32_t CompactData::getMultiplier(int32_t magnitude) const {
     return multipliers[magnitude];\r
 }\r
 \r
-const UChar *CompactData::getPattern(int32_t magnitude, StandardPlural::Form plural) const {\r
+const UChar *CompactData::getPattern(\r
+        int32_t magnitude,\r
+        const PluralRules *rules,\r
+        const DecimalQuantity &dq) const {\r
     if (magnitude < 0) {\r
         return nullptr;\r
     }\r
     if (magnitude > largestMagnitude) {\r
         magnitude = largestMagnitude;\r
     }\r
-    const UChar *patternString = patterns[getIndex(magnitude, plural)];\r
+    const UChar *patternString = nullptr;\r
+    if (dq.hasIntegerValue()) {\r
+        int64_t i = dq.toLong(true);\r
+        if (i == 0) {\r
+            patternString = patterns[getIndex(magnitude, StandardPlural::Form::EQ_0)];\r
+        } else if (i == 1) {\r
+            patternString = patterns[getIndex(magnitude, StandardPlural::Form::EQ_1)];\r
+        }\r
+        if (patternString != nullptr) {\r
+            return patternString;\r
+        }\r
+    }\r
+    StandardPlural::Form plural = utils::getStandardPlural(rules, dq);\r
+    patternString = patterns[getIndex(magnitude, plural)];\r
     if (patternString == nullptr && plural != StandardPlural::OTHER) {\r
         // Fall back to "other" plural variant\r
         patternString = patterns[getIndex(magnitude, StandardPlural::OTHER)];\r
@@ -166,12 +182,6 @@ void CompactData::CompactDataSink::put(const char *key, ResourceValue &value, UB
         ResourceTable pluralVariantsTable = value.getTable(status);\r
         if (U_FAILURE(status)) { return; }\r
         for (int i4 = 0; pluralVariantsTable.getKeyAndValue(i4, key, value); ++i4) {\r
-\r
-            if (uprv_strcmp(key, "0") == 0 || uprv_strcmp(key, "1") == 0) {\r
-                // TODO(ICU-21258): Handle this case. For now, skip.\r
-                continue;\r
-            }\r
-\r
             // Skip this magnitude/plural if we already have it from a child locale.\r
             // Note: This also skips USE_FALLBACK entries.\r
             StandardPlural::Form plural = StandardPlural::fromString(key, status);\r
@@ -296,8 +306,7 @@ void CompactHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micr
         magnitude -= multiplier;\r
     }\r
 \r
-    StandardPlural::Form plural = utils::getStandardPlural(rules, quantity);\r
-    const UChar *patternString = data.getPattern(magnitude, plural);\r
+    const UChar *patternString = data.getPattern(magnitude, rules, quantity);\r
     if (patternString == nullptr) {\r
         // Use the default (non-compact) modifier.\r
         // No need to take any action.\r
index bb5a227..c6e1132 100644 (file)
@@ -28,7 +28,10 @@ class CompactData : public MultiplierProducer {
 \r
     int32_t getMultiplier(int32_t magnitude) const U_OVERRIDE;\r
 \r
-    const UChar *getPattern(int32_t magnitude, StandardPlural::Form plural) const;\r
+    const UChar *getPattern(\r
+        int32_t magnitude,\r
+        const PluralRules *rules,\r
+        const DecimalQuantity &dq) const;\r
 \r
     void getUniquePatterns(UVector &output, UErrorCode &status) const;\r
 \r
index 98c0838..a53e0e7 100644 (file)
@@ -273,6 +273,9 @@ double DecimalQuantity::getPluralOperand(PluralOperand operand) const {
             return fractionCountWithoutTrailingZeros();\r
         case PLURAL_OPERAND_E:\r
             return static_cast<double>(getExponent());\r
+        case PLURAL_OPERAND_C:\r
+            // Plural operand `c` is currently an alias for `e`.\r
+            return static_cast<double>(getExponent());\r
         default:\r
             return std::abs(toDouble());\r
     }\r
index dfdea36..68a52f5 100644 (file)
@@ -38,7 +38,7 @@ namespace impl {
 \r
 // Exported as U_I18N_API because it is a public member field of exported DecimalFormatProperties\r
 // Using this wrapper is rather unfortunate, but is needed on Windows platforms in order to allow\r
-// for DLL-exporting an fully specified template instantiation.\r
+// for DLL-exporting a fully specified template instantiation.\r
 class U_I18N_API CurrencyPluralInfoWrapper {\r
 public:\r
     LocalPointer<CurrencyPluralInfo> fPtr;\r
@@ -52,7 +52,8 @@ public:
     }\r
 \r
     CurrencyPluralInfoWrapper& operator=(const CurrencyPluralInfoWrapper& other) {\r
-        if (!other.fPtr.isNull()) {\r
+        if (this != &other &&  // self-assignment: no-op\r
+                !other.fPtr.isNull()) {\r
             fPtr.adoptInstead(new CurrencyPluralInfo(*other.fPtr));\r
         }\r
         return *this;\r
index ae2bb54..24a3410 100644 (file)
@@ -289,6 +289,20 @@ Derived NumberFormatterSettings<Derived>::usage(const StringPiece usage)&& {
 }\r
 \r
 template<typename Derived>\r
+Derived NumberFormatterSettings<Derived>::unitDisplayCase(const StringPiece unitDisplayCase) const& {\r
+    Derived copy(*this);\r
+    copy.fMacros.unitDisplayCase.set(unitDisplayCase);\r
+    return copy;\r
+}\r
+\r
+template<typename Derived>\r
+Derived NumberFormatterSettings<Derived>::unitDisplayCase(const StringPiece unitDisplayCase)&& {\r
+    Derived move(std::move(*this));\r
+    move.fMacros.unitDisplayCase.set(unitDisplayCase);\r
+    return move;\r
+}\r
+\r
+template<typename Derived>\r
 Derived NumberFormatterSettings<Derived>::padding(const Padder& padder) const& {\r
     Derived copy(*this);\r
     copy.fMacros.padder = padder;\r
@@ -428,6 +442,7 @@ LocalizedNumberFormatter::LocalizedNumberFormatter(NFS<LNF>&& src) U_NOEXCEPT
 }\r
 \r
 LocalizedNumberFormatter& LocalizedNumberFormatter::operator=(const LNF& other) {\r
+    if (this == &other) { return *this; }  // self-assignment: no-op\r
     NFS<LNF>::operator=(static_cast<const NFS<LNF>&>(other));\r
     UErrorCode localStatus = U_ZERO_ERROR; // Can't bubble up the error\r
     lnfCopyHelper(other, localStatus);\r
index fdf62ff..449d829 100644 (file)
@@ -39,6 +39,7 @@ int32_t NumberFormatterImpl::formatStatic(const MacroProps &macros, UFormattedNu
     int32_t length = writeNumber(micros, inValue, outString, 0, status);\r
     length += writeAffixes(micros, outString, 0, length, status);\r
     results->outputUnit = std::move(micros.outputUnit);\r
+    results->gender = micros.gender;\r
     return length;\r
 }\r
 \r
@@ -63,6 +64,7 @@ int32_t NumberFormatterImpl::format(UFormattedNumberData *results, UErrorCode &s
     int32_t length = writeNumber(micros, inValue, outString, 0, status);\r
     length += writeAffixes(micros, outString, 0, length, status);\r
     results->outputUnit = std::move(micros.outputUnit);\r
+    results->gender = micros.gender;\r
     return length;\r
 }\r
 \r
@@ -137,8 +139,10 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
     bool isPermille = utils::unitIsPermille(macros.unit);\r
     bool isCompactNotation = macros.notation.fType == Notation::NTN_COMPACT;\r
     bool isAccounting =\r
-            macros.sign == UNUM_SIGN_ACCOUNTING || macros.sign == UNUM_SIGN_ACCOUNTING_ALWAYS ||\r
-            macros.sign == UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO;\r
+            macros.sign == UNUM_SIGN_ACCOUNTING ||\r
+            macros.sign == UNUM_SIGN_ACCOUNTING_ALWAYS ||\r
+            macros.sign == UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO ||\r
+            macros.sign == UNUM_SIGN_ACCOUNTING_NEGATIVE;\r
     CurrencyUnit currency(u"", status);\r
     if (isCurrency) {\r
         currency = CurrencyUnit(macros.unit, status); // Restore CurrencyUnit from MeasureUnit\r
@@ -177,6 +181,9 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
     uprv_strncpy(fMicros.nsName, nsName, 8);\r
     fMicros.nsName[8] = 0; // guarantee NUL-terminated\r
 \r
+    // Default gender: none.\r
+    fMicros.gender = "";\r
+\r
     // Resolve the symbols. Do this here because currency may need to customize them.\r
     if (macros.symbols.isDecimalFormatSymbols()) {\r
         fMicros.symbols = macros.symbols.getDecimalFormatSymbols();\r
@@ -246,14 +253,11 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
             return nullptr;\r
         }\r
         auto usagePrefsHandler =\r
-            new UsagePrefsHandler(macros.locale, macros.unit, macros.usage.fUsage, chain, status);\r
+            new UsagePrefsHandler(macros.locale, macros.unit, macros.usage.fValue, chain, status);\r
         fUsagePrefsHandler.adoptInsteadAndCheckErrorCode(usagePrefsHandler, status);\r
         chain = fUsagePrefsHandler.getAlias();\r
     } else if (isMixedUnit) {\r
-        MeasureUnitImpl temp;\r
-        const MeasureUnitImpl &outputUnit = MeasureUnitImpl::forMeasureUnit(macros.unit, temp, status);\r
-        auto unitConversionHandler =\r
-            new UnitConversionHandler(outputUnit.units[0]->build(status), macros.unit, chain, status);\r
+        auto unitConversionHandler = new UnitConversionHandler(macros.unit, chain, status);\r
         fUnitConversionHandler.adoptInsteadAndCheckErrorCode(unitConversionHandler, status);\r
         chain = fUnitConversionHandler.getAlias();\r
     }\r
@@ -373,10 +377,14 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
 \r
     // Outer modifier (CLDR units and currency long names)\r
     if (isCldrUnit) {\r
+        const char *unitDisplayCase = "";\r
+        if (macros.unitDisplayCase.isSet()) {\r
+            unitDisplayCase = macros.unitDisplayCase.fValue;\r
+        }\r
         if (macros.usage.isSet()) {\r
             fLongNameMultiplexer.adoptInsteadAndCheckErrorCode(\r
                 LongNameMultiplexer::forMeasureUnits(\r
-                    macros.locale, *fUsagePrefsHandler->getOutputUnits(), unitWidth,\r
+                    macros.locale, *fUsagePrefsHandler->getOutputUnits(), unitWidth, unitDisplayCase,\r
                     resolvePluralRules(macros.rules, macros.locale, status), chain, status),\r
                 status);\r
             chain = fLongNameMultiplexer.getAlias();\r
@@ -384,13 +392,27 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
             fMixedUnitLongNameHandler.adoptInsteadAndCheckErrorCode(new MixedUnitLongNameHandler(),\r
                                                                     status);\r
             MixedUnitLongNameHandler::forMeasureUnit(\r
-                macros.locale, macros.unit, unitWidth,\r
+                macros.locale, macros.unit, unitWidth, unitDisplayCase,\r
                 resolvePluralRules(macros.rules, macros.locale, status), chain,\r
                 fMixedUnitLongNameHandler.getAlias(), status);\r
             chain = fMixedUnitLongNameHandler.getAlias();\r
         } else {\r
+            MeasureUnit unit = macros.unit;\r
+            if (!utils::unitIsBaseUnit(macros.perUnit)) {\r
+                unit = unit.product(macros.perUnit.reciprocal(status), status);\r
+                // This isn't strictly necessary, but was what we specced out\r
+                // when perUnit became a backward-compatibility thing:\r
+                // unit/perUnit use case is only valid if both units are\r
+                // built-ins, or the product is a built-in.\r
+                if (uprv_strcmp(unit.getType(), "") == 0 &&\r
+                    (uprv_strcmp(macros.unit.getType(), "") == 0 ||\r
+                     uprv_strcmp(macros.perUnit.getType(), "") == 0)) {\r
+                    status = U_UNSUPPORTED_ERROR;\r
+                    return nullptr;\r
+                }\r
+            }\r
             fLongNameHandler.adoptInsteadAndCheckErrorCode(new LongNameHandler(), status);\r
-            LongNameHandler::forMeasureUnit(macros.locale, macros.unit, macros.perUnit, unitWidth,\r
+            LongNameHandler::forMeasureUnit(macros.locale, unit, unitWidth, unitDisplayCase,\r
                                             resolvePluralRules(macros.rules, macros.locale, status),\r
                                             chain, fLongNameHandler.getAlias(), status);\r
             chain = fLongNameHandler.getAlias();\r
index d91a60e..e22c7c0 100644 (file)
@@ -5,6 +5,8 @@
 \r
 #if !UCONFIG_NO_FORMATTING\r
 \r
+#include <cstdlib>\r
+\r
 #include "unicode/simpleformatter.h"\r
 #include "unicode/ures.h"\r
 #include "ureslocs.h"\r
@@ -39,19 +41,77 @@ constexpr int32_t DNAM_INDEX = StandardPlural::Form::COUNT;
  * `per` forms.\r
  */\r
 constexpr int32_t PER_INDEX = StandardPlural::Form::COUNT + 1;\r
+/**\r
+ * Gender of the word, in languages with grammatical gender.\r
+ */\r
+constexpr int32_t GENDER_INDEX = StandardPlural::Form::COUNT + 2;\r
 // Number of keys in the array populated by PluralTableSink.\r
-constexpr int32_t ARRAY_LENGTH = StandardPlural::Form::COUNT + 2;\r
+constexpr int32_t ARRAY_LENGTH = StandardPlural::Form::COUNT + 3;\r
+\r
+// TODO(icu-units#28): load this list from resources, after creating a "&set"\r
+// function for use in ldml2icu rules.\r
+const int32_t GENDER_COUNT = 7;\r
+const char *gGenders[GENDER_COUNT] = {"animate",   "common", "feminine", "inanimate",\r
+                                      "masculine", "neuter", "personal"};\r
+\r
+// Converts a UnicodeString to a const char*, either pointing to a string in\r
+// gGenders, or pointing to an empty string if an appropriate string was not\r
+// found.\r
+const char *getGenderString(UnicodeString uGender, UErrorCode status) {\r
+    if (uGender.length() == 0) {\r
+        return "";\r
+    }\r
+    CharString gender;\r
+    gender.appendInvariantChars(uGender, status);\r
+    if (U_FAILURE(status)) {\r
+        return "";\r
+    }\r
+    int32_t first = 0;\r
+    int32_t last = GENDER_COUNT;\r
+    while (first < last) {\r
+        int32_t mid = (first + last) / 2;\r
+        int32_t cmp = uprv_strcmp(gender.data(), gGenders[mid]);\r
+        if (cmp == 0) {\r
+            return gGenders[mid];\r
+        } else if (cmp > 0) {\r
+            first = mid + 1;\r
+        } else if (cmp < 0) {\r
+            last = mid;\r
+        }\r
+    }\r
+    // We don't return an error in case our gGenders list is incomplete in\r
+    // production.\r
+    //\r
+    // TODO(icu-units#28): a unit test checking all locales' genders are covered\r
+    // by gGenders? Else load a complete list of genders found in\r
+    // grammaticalFeatures in an initOnce.\r
+    return "";\r
+}\r
 \r
+// Returns the array index that corresponds to the given pluralKeyword.\r
 static int32_t getIndex(const char* pluralKeyword, UErrorCode& status) {\r
-    // pluralKeyword can also be "dnam" or "per"\r
-    if (uprv_strcmp(pluralKeyword, "dnam") == 0) {\r
-        return DNAM_INDEX;\r
-    } else if (uprv_strcmp(pluralKeyword, "per") == 0) {\r
-        return PER_INDEX;\r
-    } else {\r
-        StandardPlural::Form plural = StandardPlural::fromString(pluralKeyword, status);\r
-        return plural;\r
+    // pluralKeyword can also be "dnam", "per", or "gender"\r
+    switch (*pluralKeyword) {\r
+    case 'd':\r
+        if (uprv_strcmp(pluralKeyword + 1, "nam") == 0) {\r
+            return DNAM_INDEX;\r
+        }\r
+        break;\r
+    case 'g':\r
+        if (uprv_strcmp(pluralKeyword + 1, "ender") == 0) {\r
+            return GENDER_INDEX;\r
+        }\r
+        break;\r
+    case 'p':\r
+        if (uprv_strcmp(pluralKeyword + 1, "er") == 0) {\r
+            return PER_INDEX;\r
+        }\r
+        break;\r
+    default:\r
+        break;\r
     }\r
+    StandardPlural::Form plural = StandardPlural::fromString(pluralKeyword, status);\r
+    return plural;\r
 }\r
 \r
 // Selects a string out of the `strings` array which corresponds to the\r
@@ -74,13 +134,260 @@ static UnicodeString getWithPlural(
     return result;\r
 }\r
 \r
+enum PlaceholderPosition { PH_EMPTY, PH_NONE, PH_BEGINNING, PH_MIDDLE, PH_END };\r
+\r
+/**\r
+ * Returns three outputs extracted from pattern.\r
+ *\r
+ * @param coreUnit is extracted as per Extract(...) in the spec:\r
+ *   https://unicode.org/reports/tr35/tr35-general.html#compound-units\r
+ * @param PlaceholderPosition indicates where in the string the placeholder was\r
+ *   found.\r
+ * @param joinerChar Iff the placeholder was at the beginning or end, joinerChar\r
+ *   contains the space character (if any) that separated the placeholder from\r
+ *   the rest of the pattern. Otherwise, joinerChar is set to NUL. Only one\r
+ *   space character is considered.\r
+ */\r
+void extractCorePattern(const UnicodeString &pattern,\r
+                        UnicodeString &coreUnit,\r
+                        PlaceholderPosition &placeholderPosition,\r
+                        UChar &joinerChar) {\r
+    joinerChar = 0;\r
+    int32_t len = pattern.length();\r
+    if (pattern.startsWith(u"{0}", 3)) {\r
+        placeholderPosition = PH_BEGINNING;\r
+        if (u_isJavaSpaceChar(pattern[3])) {\r
+            joinerChar = pattern[3];\r
+            coreUnit.setTo(pattern, 4, len - 4);\r
+        } else {\r
+            coreUnit.setTo(pattern, 3, len - 3);\r
+        }\r
+    } else if (pattern.endsWith(u"{0}", 3)) {\r
+        placeholderPosition = PH_END;\r
+        if (u_isJavaSpaceChar(pattern[len - 4])) {\r
+            coreUnit.setTo(pattern, 0, len - 4);\r
+            joinerChar = pattern[len - 4];\r
+        } else {\r
+            coreUnit.setTo(pattern, 0, len - 3);\r
+        }\r
+    } else if (pattern.indexOf(u"{0}", 3, 1, len - 2) == -1) {\r
+        placeholderPosition = PH_NONE;\r
+        coreUnit = pattern;\r
+    } else {\r
+        placeholderPosition = PH_MIDDLE;\r
+        coreUnit = pattern;\r
+    }\r
+}\r
 \r
 //////////////////////////\r
 /// BEGIN DATA LOADING ///\r
 //////////////////////////\r
 \r
+// Gets the gender of a built-in unit: unit must be a built-in. Returns an empty\r
+// string both in case of unknown gender and in case of unknown unit.\r
+UnicodeString\r
+getGenderForBuiltin(const Locale &locale, const MeasureUnit &builtinUnit, UErrorCode &status) {\r
+    LocalUResourceBundlePointer unitsBundle(ures_open(U_ICUDATA_UNIT, locale.getName(), &status));\r
+    if (U_FAILURE(status)) { return {}; }\r
+\r
+    // Map duration-year-person, duration-week-person, etc. to duration-year, duration-week, ...\r
+    // TODO(ICU-20400): Get duration-*-person data properly with aliases.\r
+    StringPiece subtypeForResource;\r
+    int32_t subtypeLen = static_cast<int32_t>(uprv_strlen(builtinUnit.getSubtype()));\r
+    if (subtypeLen > 7 && uprv_strcmp(builtinUnit.getSubtype() + subtypeLen - 7, "-person") == 0) {\r
+        subtypeForResource = {builtinUnit.getSubtype(), subtypeLen - 7};\r
+    } else {\r
+        subtypeForResource = builtinUnit.getSubtype();\r
+    }\r
+\r
+    CharString key;\r
+    key.append("units/", status);\r
+    key.append(builtinUnit.getType(), status);\r
+    key.append("/", status);\r
+    key.append(subtypeForResource, status);\r
+    key.append("/gender", status);\r
+\r
+    UErrorCode localStatus = status;\r
+    int32_t resultLen = 0;\r
+    const UChar *result =\r
+        ures_getStringByKeyWithFallback(unitsBundle.getAlias(), key.data(), &resultLen, &localStatus);\r
+    if (U_SUCCESS(localStatus)) {\r
+        status = localStatus;\r
+        return UnicodeString(true, result, resultLen);\r
+    } else {\r
+        // TODO(icu-units#28): "$unitRes/gender" does not exist. Do we want to\r
+        // check whether the parent "$unitRes" exists? Then we could return\r
+        // U_MISSING_RESOURCE_ERROR for incorrect usage (e.g. builtinUnit not\r
+        // being a builtin).\r
+        return {};\r
+    }\r
+}\r
+\r
+// Loads data from a resource tree with paths matching\r
+// $key/$pluralForm/$gender/$case, with lateral inheritance for missing cases\r
+// and genders.\r
+//\r
+// An InflectedPluralSink is configured to load data for a specific gender and\r
+// case. It loads all plural forms, because selection between plural forms is\r
+// dependent upon the value being formatted.\r
+//\r
+// See data/unit/de.txt and data/unit/fr.txt for examples - take a look at\r
+// units/compound/power2: German has case, French has differences for gender,\r
+// but no case.\r
+//\r
+// TODO(icu-units#138): Conceptually similar to PluralTableSink, however the\r
+// tree structures are different. After homogenizing the structures, we may be\r
+// able to unify the two classes.\r
+//\r
+// TODO: Spec violation: expects presence of "count" - does not fallback to an\r
+// absent "count"! If this fallback were added, getCompoundValue could be\r
+// superseded?\r
+class InflectedPluralSink : public ResourceSink {\r
+  public:\r
+    // Accepts `char*` rather than StringPiece because\r
+    // ResourceTable::findValue(...) requires a null-terminated `char*`.\r
+    //\r
+    // NOTE: outArray MUST have a length of at least ARRAY_LENGTH. No bounds\r
+    // checking is performed.\r
+    explicit InflectedPluralSink(const char *gender, const char *caseVariant, UnicodeString *outArray)\r
+        : gender(gender), caseVariant(caseVariant), outArray(outArray) {\r
+        // Initialize the array to bogus strings.\r
+        for (int32_t i = 0; i < ARRAY_LENGTH; i++) {\r
+            outArray[i].setToBogus();\r
+        }\r
+    }\r
+\r
+    // See ResourceSink::put().\r
+    void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) U_OVERRIDE {\r
+        ResourceTable pluralsTable = value.getTable(status);\r
+        if (U_FAILURE(status)) { return; }\r
+        for (int32_t i = 0; pluralsTable.getKeyAndValue(i, key, value); ++i) {\r
+            int32_t pluralIndex = getIndex(key, status);\r
+            if (U_FAILURE(status)) { return; }\r
+            if (!outArray[pluralIndex].isBogus()) {\r
+                // We already have a pattern\r
+                continue;\r
+            }\r
+            ResourceTable genderTable = value.getTable(status);\r
+            ResourceTable caseTable; // This instance has to outlive `value`\r
+            if (loadForPluralForm(genderTable, caseTable, value, status)) {\r
+                outArray[pluralIndex] = value.getUnicodeString(status);\r
+            }\r
+        }\r
+    }\r
+\r
+  private:\r
+    // Tries to load data for the configured gender from `genderTable`. Returns\r
+    // true if found, returning the data in `value`. The returned data will be\r
+    // for the configured gender if found, falling back to "neuter" and\r
+    // no-gender if not. The caseTable parameter holds the intermediate\r
+    // ResourceTable for the sake of lifetime management.\r
+    bool loadForPluralForm(const ResourceTable &genderTable,\r
+                           ResourceTable &caseTable,\r
+                           ResourceValue &value,\r
+                           UErrorCode &status) {\r
+        if (uprv_strcmp(gender, "") != 0) {\r
+            if (loadForGender(genderTable, gender, caseTable, value, status)) {\r
+                return true;\r
+            }\r
+            if (uprv_strcmp(gender, "neuter") != 0 &&\r
+                loadForGender(genderTable, "neuter", caseTable, value, status)) {\r
+                return true;\r
+            }\r
+        }\r
+        if (loadForGender(genderTable, "_", caseTable, value, status)) {\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+\r
+    // Tries to load data for the given gender from `genderTable`. Returns true\r
+    // if found, returning the data in `value`. The returned data will be for\r
+    // the configured case if found, falling back to "nominative" and no-case if\r
+    // not.\r
+    bool loadForGender(const ResourceTable &genderTable,\r
+                       const char *genderVal,\r
+                       ResourceTable &caseTable,\r
+                       ResourceValue &value,\r
+                       UErrorCode &status) {\r
+        if (!genderTable.findValue(genderVal, value)) {\r
+            return false;\r
+        }\r
+        caseTable = value.getTable(status);\r
+        if (uprv_strcmp(caseVariant, "") != 0) {\r
+            if (loadForCase(caseTable, caseVariant, value)) {\r
+                return true;\r
+            }\r
+            if (uprv_strcmp(caseVariant, "nominative") != 0 &&\r
+                loadForCase(caseTable, "nominative", value)) {\r
+                return true;\r
+            }\r
+        }\r
+        if (loadForCase(caseTable, "_", value)) {\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+\r
+    // Tries to load data for the given case from `caseTable`. Returns true if\r
+    // found, returning the data in `value`.\r
+    bool loadForCase(const ResourceTable &caseTable, const char *caseValue, ResourceValue &value) {\r
+        if (!caseTable.findValue(caseValue, value)) {\r
+            return false;\r
+        }\r
+        return true;\r
+    }\r
+\r
+    const char *gender;\r
+    const char *caseVariant;\r
+    UnicodeString *outArray;\r
+};\r
+\r
+// Fetches localised formatting patterns for the given subKey. See documentation\r
+// for InflectedPluralSink for details.\r
+//\r
+// Data is loaded for the appropriate unit width, with missing data filled in\r
+// from unitsShort.\r
+void getInflectedMeasureData(StringPiece subKey,\r
+                             const Locale &locale,\r
+                             const UNumberUnitWidth &width,\r
+                             const char *gender,\r
+                             const char *caseVariant,\r
+                             UnicodeString *outArray,\r
+                             UErrorCode &status) {\r
+    InflectedPluralSink sink(gender, caseVariant, outArray);\r
+    LocalUResourceBundlePointer unitsBundle(ures_open(U_ICUDATA_UNIT, locale.getName(), &status));\r
+    if (U_FAILURE(status)) { return; }\r
+\r
+    CharString key;\r
+    key.append("units", status);\r
+    if (width == UNUM_UNIT_WIDTH_NARROW) {\r
+        key.append("Narrow", status);\r
+    } else if (width == UNUM_UNIT_WIDTH_SHORT) {\r
+        key.append("Short", status);\r
+    }\r
+    key.append("/", status);\r
+    key.append(subKey, status);\r
+\r
+    UErrorCode localStatus = status;\r
+    ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, localStatus);\r
+    if (width == UNUM_UNIT_WIDTH_SHORT) {\r
+        status = localStatus;\r
+        return;\r
+    }\r
+\r
+    // TODO(ICU-13353): The fallback to short does not work in ICU4C.\r
+    // Manually fall back to short (this is done automatically in Java).\r
+    key.clear();\r
+    key.append("unitsShort/", status);\r
+    key.append(subKey, status);\r
+    ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, status);\r
+}\r
+\r
 class PluralTableSink : public ResourceSink {\r
   public:\r
+    // NOTE: outArray MUST have a length of at least ARRAY_LENGTH. No bounds\r
+    // checking is performed.\r
     explicit PluralTableSink(UnicodeString *outArray) : outArray(outArray) {\r
         // Initialize the array to bogus strings.\r
         for (int32_t i = 0; i < ARRAY_LENGTH; i++) {\r
@@ -92,6 +399,9 @@ class PluralTableSink : public ResourceSink {
         ResourceTable pluralsTable = value.getTable(status);\r
         if (U_FAILURE(status)) { return; }\r
         for (int32_t i = 0; pluralsTable.getKeyAndValue(i, key, value); ++i) {\r
+            if (uprv_strcmp(key, "case") == 0) {\r
+                continue;\r
+            }\r
             int32_t index = getIndex(key, status);\r
             if (U_FAILURE(status)) { return; }\r
             if (!outArray[index].isBogus()) {\r
@@ -106,8 +416,6 @@ class PluralTableSink : public ResourceSink {
     UnicodeString *outArray;\r
 };\r
 \r
-// NOTE: outArray MUST have room for all StandardPlural values.  No bounds checking is performed.\r
-\r
 /**\r
  * Populates outArray with `locale`-specific values for `unit` through use of\r
  * PluralTableSink. Only the set of basic units are supported!\r
@@ -116,24 +424,47 @@ class PluralTableSink : public ResourceSink {
  * UNUM_UNIT_WIDTH_NARROW), or just *unitsShort* (for width\r
  * UNUM_UNIT_WIDTH_SHORT). For other widths, it reads just "units".\r
  *\r
- * @param unit must have a type and subtype (i.e. it must be a unit listed in\r
- *     gTypes and gSubTypes in measunit.cpp).\r
+ * @param unit must be a built-in unit, i.e. must have a type and subtype,\r
+ *     listed in gTypes and gSubTypes in measunit.cpp.\r
+ * @param unitDisplayCase the empty string and "nominative" are treated the\r
+ *     same. For other cases, strings for the requested case are used if found.\r
+ *     (For any missing case-specific data, we fall back to nominative.)\r
  * @param outArray must be of fixed length ARRAY_LENGTH.\r
  */\r
-void getMeasureData(const Locale &locale, const MeasureUnit &unit, const UNumberUnitWidth &width,\r
-                    UnicodeString *outArray, UErrorCode &status) {\r
+void getMeasureData(const Locale &locale,\r
+                    const MeasureUnit &unit,\r
+                    const UNumberUnitWidth &width,\r
+                    const char *unitDisplayCase,\r
+                    UnicodeString *outArray,\r
+                    UErrorCode &status) {\r
     PluralTableSink sink(outArray);\r
     LocalUResourceBundlePointer unitsBundle(ures_open(U_ICUDATA_UNIT, locale.getName(), &status));\r
     if (U_FAILURE(status)) { return; }\r
 \r
+    CharString subKey;\r
+    subKey.append("/", status);\r
+    subKey.append(unit.getType(), status);\r
+    subKey.append("/", status);\r
+\r
     // Map duration-year-person, duration-week-person, etc. to duration-year, duration-week, ...\r
     // TODO(ICU-20400): Get duration-*-person data properly with aliases.\r
-    StringPiece subtypeForResource;\r
     int32_t subtypeLen = static_cast<int32_t>(uprv_strlen(unit.getSubtype()));\r
     if (subtypeLen > 7 && uprv_strcmp(unit.getSubtype() + subtypeLen - 7, "-person") == 0) {\r
-        subtypeForResource = {unit.getSubtype(), subtypeLen - 7};\r
+        subKey.append({unit.getSubtype(), subtypeLen - 7}, status);\r
     } else {\r
-        subtypeForResource = unit.getSubtype();\r
+        subKey.append({unit.getSubtype(), subtypeLen}, status);\r
+    }\r
+\r
+    if (width != UNUM_UNIT_WIDTH_FULL_NAME) {\r
+        UErrorCode localStatus = status;\r
+        CharString genderKey;\r
+        genderKey.append("units", localStatus);\r
+        genderKey.append(subKey, localStatus);\r
+        genderKey.append("/gender", localStatus);\r
+        StackUResourceBundle fillIn;\r
+        ures_getByKeyWithFallback(unitsBundle.getAlias(), genderKey.data(), fillIn.getAlias(),\r
+                                  &localStatus);\r
+        outArray[GENDER_INDEX] = ures_getUnicodeString(fillIn.getAlias(), &localStatus);\r
     }\r
 \r
     CharString key;\r
@@ -143,11 +474,30 @@ void getMeasureData(const Locale &locale, const MeasureUnit &unit, const UNumber
     } else if (width == UNUM_UNIT_WIDTH_SHORT) {\r
         key.append("Short", status);\r
     }\r
-    key.append("/", status);\r
-    key.append(unit.getType(), status);\r
-    key.append("/", status);\r
-    key.append(subtypeForResource, status);\r
+    key.append(subKey, status);\r
+\r
+    // Grab desired case first, if available. Then grab no-case data to fill in\r
+    // the gaps.\r
+    if (width == UNUM_UNIT_WIDTH_FULL_NAME && unitDisplayCase[0] != 0) {\r
+        CharString caseKey;\r
+        caseKey.append(key, status);\r
+        caseKey.append("/case/", status);\r
+        caseKey.append(unitDisplayCase, status);\r
 \r
+        UErrorCode localStatus = U_ZERO_ERROR;\r
+        // TODO(icu-units#138): our fallback logic is not spec-compliant:\r
+        // lateral fallback should happen before locale fallback. Switch to\r
+        // getInflectedMeasureData after homogenizing data format? Find a unit\r
+        // test case that demonstrates the incorrect fallback logic (via\r
+        // regional variant of an inflected language?)\r
+        ures_getAllItemsWithFallback(unitsBundle.getAlias(), caseKey.data(), sink, localStatus);\r
+    }\r
+\r
+    // TODO(icu-units#138): our fallback logic is not spec-compliant: we\r
+    // check the given case, then go straight to the no-case data. The spec\r
+    // states we should first look for case="nominative". As part of #138,\r
+    // either get the spec changed, or add unit tests that warn us if\r
+    // case="nominative" data differs from no-case data?\r
     UErrorCode localStatus = U_ZERO_ERROR;\r
     ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, localStatus);\r
     if (width == UNUM_UNIT_WIDTH_SHORT) {\r
@@ -160,13 +510,12 @@ void getMeasureData(const Locale &locale, const MeasureUnit &unit, const UNumber
     // TODO(ICU-13353): The fallback to short does not work in ICU4C.\r
     // Manually fall back to short (this is done automatically in Java).\r
     key.clear();\r
-    key.append("unitsShort/", status);\r
-    key.append(unit.getType(), status);\r
-    key.append("/", status);\r
-    key.append(subtypeForResource, status);\r
+    key.append("unitsShort", status);\r
+    key.append(subKey, status);\r
     ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, status);\r
 }\r
 \r
+// NOTE: outArray MUST have a length of at least ARRAY_LENGTH.\r
 void getCurrencyLongNameData(const Locale &locale, const CurrencyUnit &currency, UnicodeString *outArray,\r
                              UErrorCode &status) {\r
     // In ICU4J, this method gets a CurrencyData from CurrencyData.provider.\r
@@ -195,7 +544,10 @@ void getCurrencyLongNameData(const Locale &locale, const CurrencyUnit &currency,
     }\r
 }\r
 \r
-UnicodeString getPerUnitFormat(const Locale& locale, const UNumberUnitWidth &width, UErrorCode& status) {\r
+UnicodeString getCompoundValue(StringPiece compoundKey,\r
+                               const Locale &locale,\r
+                               const UNumberUnitWidth &width,\r
+                               UErrorCode &status) {\r
     LocalUResourceBundlePointer unitsBundle(ures_open(U_ICUDATA_UNIT, locale.getName(), &status));\r
     if (U_FAILURE(status)) { return {}; }\r
     CharString key;\r
@@ -205,119 +557,893 @@ UnicodeString getPerUnitFormat(const Locale& locale, const UNumberUnitWidth &wid
     } else if (width == UNUM_UNIT_WIDTH_SHORT) {\r
         key.append("Short", status);\r
     }\r
-    key.append("/compound/per", status);\r
+    key.append("/compound/", status);\r
+    key.append(compoundKey, status);\r
+\r
+    UErrorCode localStatus = status;\r
     int32_t len = 0;\r
-    const UChar* ptr = ures_getStringByKeyWithFallback(unitsBundle.getAlias(), key.data(), &len, &status);\r
+    const UChar *ptr =\r
+        ures_getStringByKeyWithFallback(unitsBundle.getAlias(), key.data(), &len, &localStatus);\r
+    if (U_FAILURE(localStatus) && width != UNUM_UNIT_WIDTH_SHORT) {\r
+        // Fall back to short, which contains more compound data\r
+        key.clear();\r
+        key.append("unitsShort/compound/", status);\r
+        key.append(compoundKey, status);\r
+        ptr = ures_getStringByKeyWithFallback(unitsBundle.getAlias(), key.data(), &len, &status);\r
+    } else {\r
+        status = localStatus;\r
+    }\r
+    if (U_FAILURE(status)) {\r
+        return {};\r
+    }\r
     return UnicodeString(ptr, len);\r
 }\r
 \r
+/**\r
+ * Loads and applies deriveComponent rules from CLDR's grammaticalFeatures.xml.\r
+ *\r
+ * Consider a deriveComponent rule that looks like this:\r
+ *\r
+ *     <deriveComponent feature="case" structure="per" value0="compound" value1="nominative"/>\r
+ *\r
+ * Instantiating an instance as follows:\r
+ *\r
+ *     DerivedComponents d(loc, "case", "per");\r
+ *\r
+ * Applying the rule in the XML element above, `d.value0("foo")` will be "foo",\r
+ * and `d.value1("foo")` will be "nominative".\r
+ *\r
+ * The values returned by value0(...) and value1(...) are valid only while the\r
+ * instance exists. In case of any kind of failure, value0(...) and value1(...)\r
+ * will return "".\r
+ */\r
+class DerivedComponents {\r
+  public:\r
+    /**\r
+     * Constructor.\r
+     *\r
+     * The feature and structure parameters must be null-terminated. The string\r
+     * referenced by compoundValue must exist for longer than the\r
+     * DerivedComponents instance.\r
+     */\r
+    DerivedComponents(const Locale &locale, const char *feature, const char *structure) {\r
+        StackUResourceBundle derivationsBundle, stackBundle;\r
+        ures_openDirectFillIn(derivationsBundle.getAlias(), NULL, "grammaticalFeatures", &status);\r
+        ures_getByKey(derivationsBundle.getAlias(), "grammaticalData", derivationsBundle.getAlias(),\r
+                      &status);\r
+        ures_getByKey(derivationsBundle.getAlias(), "derivations", derivationsBundle.getAlias(),\r
+                      &status);\r
+        if (U_FAILURE(status)) {\r
+            return;\r
+        }\r
+        UErrorCode localStatus = U_ZERO_ERROR;\r
+        // TODO(icu-units#28): use standard normal locale resolution algorithms\r
+        // rather than just grabbing language:\r
+        ures_getByKey(derivationsBundle.getAlias(), locale.getLanguage(), stackBundle.getAlias(),\r
+                      &localStatus);\r
+        // TODO(icu-units#28):\r
+        // - code currently assumes if the locale exists, the rules are there -\r
+        //   instead of falling back to root when the requested rule is missing.\r
+        // - investigate ures.h functions, see if one that uses res_findResource()\r
+        //   might be better (or use res_findResource directly), or maybe help\r
+        //   improve ures documentation to guide function selection?\r
+        if (localStatus == U_MISSING_RESOURCE_ERROR) {\r
+            ures_getByKey(derivationsBundle.getAlias(), "root", stackBundle.getAlias(), &status);\r
+        } else {\r
+            status = localStatus;\r
+        }\r
+        ures_getByKey(stackBundle.getAlias(), "component", stackBundle.getAlias(), &status);\r
+        ures_getByKey(stackBundle.getAlias(), feature, stackBundle.getAlias(), &status);\r
+        ures_getByKey(stackBundle.getAlias(), structure, stackBundle.getAlias(), &status);\r
+        UnicodeString val0 = ures_getUnicodeStringByIndex(stackBundle.getAlias(), 0, &status);\r
+        UnicodeString val1 = ures_getUnicodeStringByIndex(stackBundle.getAlias(), 1, &status);\r
+        if (U_SUCCESS(status)) {\r
+            if (val0.compare(UnicodeString(u"compound")) == 0) {\r
+                compound0_ = true;\r
+            } else {\r
+                compound0_ = false;\r
+                value0_.appendInvariantChars(val0, status);\r
+            }\r
+            if (val1.compare(UnicodeString(u"compound")) == 0) {\r
+                compound1_ = true;\r
+            } else {\r
+                compound1_ = false;\r
+                value1_.appendInvariantChars(val1, status);\r
+            }\r
+        }\r
+    }\r
+\r
+    // Returns a StringPiece that is only valid as long as the instance exists.\r
+    StringPiece value0(const StringPiece compoundValue) const {\r
+        return compound0_ ? compoundValue : value0_.toStringPiece();\r
+    }\r
+\r
+    // Returns a StringPiece that is only valid as long as the instance exists.\r
+    StringPiece value1(const StringPiece compoundValue) const {\r
+        return compound1_ ? compoundValue : value1_.toStringPiece();\r
+    }\r
+\r
+    // Returns a char* that is only valid as long as the instance exists.\r
+    const char *value0(const char *compoundValue) const {\r
+        return compound0_ ? compoundValue : value0_.data();\r
+    }\r
+\r
+    // Returns a char* that is only valid as long as the instance exists.\r
+    const char *value1(const char *compoundValue) const {\r
+        return compound1_ ? compoundValue : value1_.data();\r
+    }\r
+\r
+  private:\r
+    UErrorCode status = U_ZERO_ERROR;\r
+\r
+    // Holds strings referred to by value0 and value1;\r
+    bool compound0_ = false, compound1_ = false;\r
+    CharString value0_, value1_;\r
+};\r
+\r
+// TODO(icu-units#28): test somehow? Associate with an ICU ticket for adding\r
+// testsuite support for testing with synthetic data?\r
+/**\r
+ * Loads and returns the value in rules that look like these:\r
+ *\r
+ * <deriveCompound feature="gender" structure="per" value="0"/>\r
+ * <deriveCompound feature="gender" structure="times" value="1"/>\r
+ *\r
+ * Currently a fake example, but spec compliant:\r
+ * <deriveCompound feature="gender" structure="power" value="feminine"/>\r
+ *\r
+ * NOTE: If U_FAILURE(status), returns an empty string.\r
+ */ \r
+UnicodeString\r
+getDeriveCompoundRule(Locale locale, const char *feature, const char *structure, UErrorCode &status) {\r
+    StackUResourceBundle derivationsBundle, stackBundle;\r
+    ures_openDirectFillIn(derivationsBundle.getAlias(), NULL, "grammaticalFeatures", &status);\r
+    ures_getByKey(derivationsBundle.getAlias(), "grammaticalData", derivationsBundle.getAlias(),\r
+                  &status);\r
+    ures_getByKey(derivationsBundle.getAlias(), "derivations", derivationsBundle.getAlias(), &status);\r
+    // TODO: use standard normal locale resolution algorithms rather than just grabbing language:\r
+    ures_getByKey(derivationsBundle.getAlias(), locale.getLanguage(), stackBundle.getAlias(), &status);\r
+    // TODO:\r
+    // - code currently assumes if the locale exists, the rules are there -\r
+    //   instead of falling back to root when the requested rule is missing.\r
+    // - investigate ures.h functions, see if one that uses res_findResource()\r
+    //   might be better (or use res_findResource directly), or maybe help\r
+    //   improve ures documentation to guide function selection?\r
+    if (status == U_MISSING_RESOURCE_ERROR) {\r
+        status = U_ZERO_ERROR;\r
+        ures_getByKey(derivationsBundle.getAlias(), "root", stackBundle.getAlias(), &status);\r
+    }\r
+    ures_getByKey(stackBundle.getAlias(), "compound", stackBundle.getAlias(), &status);\r
+    ures_getByKey(stackBundle.getAlias(), feature, stackBundle.getAlias(), &status);\r
+    UnicodeString uVal = ures_getUnicodeStringByKey(stackBundle.getAlias(), structure, &status);\r
+    if (U_FAILURE(status)) {\r
+        return {};\r
+    }\r
+    U_ASSERT(!uVal.isBogus());\r
+    return uVal;\r
+}\r
+\r
+// Returns the gender string for structures following these rules:\r
+//\r
+// <deriveCompound feature="gender" structure="per" value="0"/>\r
+// <deriveCompound feature="gender" structure="times" value="1"/>\r
+//\r
+// Fake example:\r
+// <deriveCompound feature="gender" structure="power" value="feminine"/>\r
+//\r
+// data0 and data1 should be pattern arrays (UnicodeString[ARRAY_SIZE]) that\r
+// correspond to value="0" and value="1".\r
+//\r
+// Pass a nullptr to data1 if the structure has no concept of value="1" (e.g.\r
+// "prefix" doesn't).\r
+UnicodeString getDerivedGender(Locale locale,\r
+                               const char *structure,\r
+                               UnicodeString *data0,\r
+                               UnicodeString *data1,\r
+                               UErrorCode &status) {\r
+    UnicodeString val = getDeriveCompoundRule(locale, "gender", structure, status);\r
+    if (val.length() == 1) {\r
+        switch (val[0]) {\r
+        case u'0':\r
+            return data0[GENDER_INDEX];\r
+        case u'1':\r
+            if (data1 == nullptr) {\r
+                return {};\r
+            }\r
+            return data1[GENDER_INDEX];\r
+        }\r
+    }\r
+    return val;\r
+}\r
+\r
 ////////////////////////\r
 /// END DATA LOADING ///\r
 ////////////////////////\r
 \r
-} // namespace\r
+// TODO: promote this somewhere? It's based on patternprops.cpp' trimWhitespace\r
+const UChar *trimSpaceChars(const UChar *s, int32_t &length) {\r
+    if (length <= 0 || (!u_isJavaSpaceChar(s[0]) && !u_isJavaSpaceChar(s[length - 1]))) {\r
+        return s;\r
+    }\r
+    int32_t start = 0;\r
+    int32_t limit = length;\r
+    while (start < limit && u_isJavaSpaceChar(s[start])) {\r
+        ++start;\r
+    }\r
+    if (start < limit) {\r
+        // There is non-white space at start; we will not move limit below that,\r
+        // so we need not test start<limit in the loop.\r
+        while (u_isJavaSpaceChar(s[limit - 1])) {\r
+            --limit;\r
+        }\r
+    }\r
+    length = limit - start;\r
+    return s + start;\r
+}\r
 \r
-void LongNameHandler::forMeasureUnit(const Locale &loc, const MeasureUnit &unitRef,\r
-                                     const MeasureUnit &perUnit, const UNumberUnitWidth &width,\r
-                                     const PluralRules *rules, const MicroPropsGenerator *parent,\r
-                                     LongNameHandler *fillIn, UErrorCode &status) {\r
-    // Not valid for mixed units that aren't built-in units, and there should\r
-    // not be any built-in mixed units!\r
-    U_ASSERT(uprv_strcmp(unitRef.getType(), "") != 0 ||\r
-             unitRef.getComplexity(status) != UMEASURE_UNIT_MIXED);\r
-    U_ASSERT(fillIn != nullptr);\r
+/**\r
+ * Calculates the gender of an arbitrary unit: this is the *second*\r
+ * implementation of an algorithm to do this:\r
+ *\r
+ * Gender is also calculated in "processPatternTimes": that code path is "bottom\r
+ * up", loading the gender for every component of a compound unit (at the same\r
+ * time as loading the Long Names formatting patterns), even if the gender is\r
+ * unneeded, then combining the single units' genders into the compound unit's\r
+ * gender, according to the rules. This algorithm does a lazier "top-down"\r
+ * evaluation, starting with the compound unit, calculating which single unit's\r
+ * gender is needed by breaking it down according to the rules, and then loading\r
+ * only the gender of the one single unit who's gender is needed.\r
+ *\r
+ * For future refactorings:\r
+ * 1. we could drop processPatternTimes' gender calculation and just call this\r
+ *    function: for UNUM_UNIT_WIDTH_FULL_NAME, the unit gender is in the very\r
+ *    same table as the formatting patterns, so loading it then may be\r
+ *    efficient. For other unit widths however, it needs to be explicitly looked\r
+ *    up anyway.\r
+ * 2. alternatively, if CLDR is providing all the genders we need such that we\r
+ *    don't need to calculate them in ICU anymore, we could drop this function\r
+ *    and keep only processPatternTimes' calculation. (And optimise it a bit?)\r
+ *\r
+ * @param locale The desired locale.\r
+ * @param unit The measure unit to calculate the gender for.\r
+ * @return The gender string for the unit, or an empty string if unknown or\r
+ *     ungendered.\r
+ */\r
+UnicodeString calculateGenderForUnit(const Locale &locale, const MeasureUnit &unit, UErrorCode &status) {\r
+    MeasureUnitImpl impl;\r
+    const MeasureUnitImpl& mui = MeasureUnitImpl::forMeasureUnit(unit, impl, status);\r
+    int32_t singleUnitIndex = 0;\r
+    if (mui.complexity == UMEASURE_UNIT_COMPOUND) {\r
+        int32_t startSlice = 0;\r
+        // inclusive\r
+        int32_t endSlice = mui.singleUnits.length()-1;\r
+        U_ASSERT(endSlice > 0); // Else it would not be COMPOUND\r
+        if (mui.singleUnits[endSlice]->dimensionality < 0) {\r
+            // We have a -per- construct\r
+            UnicodeString perRule = getDeriveCompoundRule(locale, "gender", "per", status);\r
+            if (perRule.length() != 1) {\r
+                // Fixed gender for -per- units\r
+                return perRule;\r
+            }\r
+            if (perRule[0] == u'1') {\r
+                // Find the start of the denominator. We already know there is one.\r
+                while (mui.singleUnits[startSlice]->dimensionality >= 0) {\r
+                    startSlice++;\r
+                }\r
+            } else {\r
+                // Find the end of the numerator\r
+                while (endSlice >= 0 && mui.singleUnits[endSlice]->dimensionality < 0) {\r
+                    endSlice--;\r
+                }\r
+                if (endSlice < 0) {\r
+                    // We have only a denominator, e.g. "per-second".\r
+                    // TODO(icu-units#28): find out what gender to use in the\r
+                    // absence of a first value - mentioned in CLDR-14253.\r
+                    return {};\r
+                }\r
+            }\r
+        }\r
+        if (endSlice > startSlice) {\r
+            // We have a -times- construct\r
+            UnicodeString timesRule = getDeriveCompoundRule(locale, "gender", "times", status);\r
+            if (timesRule.length() != 1) {\r
+                // Fixed gender for -times- units\r
+                return timesRule;\r
+            }\r
+            if (timesRule[0] == u'0') {\r
+                endSlice = startSlice;\r
+            } else {\r
+                // We assume timesRule[0] == u'1'\r
+                startSlice = endSlice;\r
+            }\r
+        }\r
+        U_ASSERT(startSlice == endSlice);\r
+        singleUnitIndex = startSlice;\r
+    } else if (mui.complexity == UMEASURE_UNIT_MIXED) {\r
+        status = U_INTERNAL_PROGRAM_ERROR;\r
+        return {};\r
+    } else {\r
+        U_ASSERT(mui.complexity == UMEASURE_UNIT_SINGLE);\r
+        U_ASSERT(mui.singleUnits.length() == 1);\r
+    }\r
 \r
-    MeasureUnit unit = unitRef;\r
-    if (uprv_strcmp(perUnit.getType(), "none") != 0) {\r
-        // Compound unit: first try to simplify (e.g., meters per second is its own unit).\r
-        MeasureUnit simplified = unit.product(perUnit.reciprocal(status), status);\r
-        if (uprv_strcmp(simplified.getType(), "") != 0) {\r
-            unit = simplified;\r
-        } else {\r
-            // No simplified form is available.\r
-            forCompoundUnit(loc, unit, perUnit, width, rules, parent, fillIn, status);\r
+    // Now we know which singleUnit's gender we want\r
+    const SingleUnitImpl *singleUnit = mui.singleUnits[singleUnitIndex];\r
+    // Check for any power-prefix gender override:\r
+    if (std::abs(singleUnit->dimensionality) != 1) {\r
+        UnicodeString powerRule = getDeriveCompoundRule(locale, "gender", "power", status);\r
+        if (powerRule.length() != 1) {\r
+            // Fixed gender for -powN- units\r
+            return powerRule;\r
+        }\r
+        // powerRule[0] == u'0'; u'1' not currently in spec.\r
+    }\r
+    // Check for any SI and binary prefix gender override:\r
+    if (std::abs(singleUnit->dimensionality) != 1) {\r
+        UnicodeString prefixRule = getDeriveCompoundRule(locale, "gender", "prefix", status);\r
+        if (prefixRule.length() != 1) {\r
+            // Fixed gender for -powN- units\r
+            return prefixRule;\r
+        }\r
+        // prefixRule[0] == u'0'; u'1' not currently in spec.\r
+    }\r
+    // Now we've boiled it down to the gender of one simple unit identifier:\r
+    return getGenderForBuiltin(locale, MeasureUnit::forIdentifier(singleUnit->getSimpleUnitID(), status),\r
+                               status);\r
+}\r
+\r
+void maybeCalculateGender(const Locale &locale,\r
+                          const MeasureUnit &unitRef,\r
+                          UnicodeString *outArray,\r
+                          UErrorCode &status) {\r
+    if (outArray[GENDER_INDEX].isBogus()) {\r
+        UnicodeString meterGender = getGenderForBuiltin(locale, MeasureUnit::getMeter(), status);\r
+        if (meterGender.isEmpty()) {\r
+            // No gender for meter: assume ungendered language\r
             return;\r
         }\r
+        // We have a gendered language, but are lacking gender for unitRef.\r
+        outArray[GENDER_INDEX] = calculateGenderForUnit(locale, unitRef, status);\r
     }\r
+}\r
 \r
-    if (uprv_strcmp(unit.getType(), "") == 0) {\r
-        // TODO(ICU-20941): Unsanctioned unit. Not yet fully supported. Set an\r
-        // error code. Once we support not-built-in units here, unitRef may be\r
-        // anything, but if not built-in, perUnit has to be "none".\r
-        status = U_UNSUPPORTED_ERROR;\r
+} // namespace\r
+\r
+void LongNameHandler::forMeasureUnit(const Locale &loc,\r
+                                     const MeasureUnit &unitRef,\r
+                                     const UNumberUnitWidth &width,\r
+                                     const char *unitDisplayCase,\r
+                                     const PluralRules *rules,\r
+                                     const MicroPropsGenerator *parent,\r
+                                     LongNameHandler *fillIn,\r
+                                     UErrorCode &status) {\r
+    // From https://unicode.org/reports/tr35/tr35-general.html#compound-units -\r
+    // Points 1 and 2 are mostly handled by MeasureUnit:\r
+    //\r
+    // 1. If the unitId is empty or invalid, fail\r
+    // 2. Put the unitId into normalized order\r
+    U_ASSERT(fillIn != nullptr);\r
+\r
+    if (uprv_strcmp(unitRef.getType(), "") != 0) {\r
+        // Handling built-in units:\r
+        //\r
+        // 3. Set result to be getValue(unitId with length, pluralCategory, caseVariant)\r
+        //    - If result is not empty, return it\r
+        UnicodeString simpleFormats[ARRAY_LENGTH];\r
+        getMeasureData(loc, unitRef, width, unitDisplayCase, simpleFormats, status);\r
+        maybeCalculateGender(loc, unitRef, simpleFormats, status);\r
+        if (U_FAILURE(status)) {\r
+            return;\r
+        }\r
+        fillIn->rules = rules;\r
+        fillIn->parent = parent;\r
+        fillIn->simpleFormatsToModifiers(simpleFormats,\r
+                                         {UFIELD_CATEGORY_NUMBER, UNUM_MEASURE_UNIT_FIELD}, status);\r
+        if (!simpleFormats[GENDER_INDEX].isBogus()) {\r
+            fillIn->gender = getGenderString(simpleFormats[GENDER_INDEX], status);\r
+        }\r
         return;\r
-    }\r
 \r
-    UnicodeString simpleFormats[ARRAY_LENGTH];\r
-    getMeasureData(loc, unit, width, simpleFormats, status);\r
-    if (U_FAILURE(status)) {\r
+        // TODO(icu-units#145): figure out why this causes a failure in\r
+        // format/MeasureFormatTest/TestIndividualPluralFallback and other\r
+        // tests, when it should have been an alternative for the lines above:\r
+\r
+        // forArbitraryUnit(loc, unitRef, width, unitDisplayCase, fillIn, status);\r
+        // fillIn->rules = rules;\r
+        // fillIn->parent = parent;\r
+        // return;\r
+    } else {\r
+        // Check if it is a MeasureUnit this constructor handles: this\r
+        // constructor does not handle mixed units\r
+        U_ASSERT(unitRef.getComplexity(status) != UMEASURE_UNIT_MIXED);\r
+        forArbitraryUnit(loc, unitRef, width, unitDisplayCase, fillIn, status);\r
+        fillIn->rules = rules;\r
+        fillIn->parent = parent;\r
         return;\r
     }\r
-    fillIn->rules = rules;\r
-    fillIn->parent = parent;\r
-    fillIn->simpleFormatsToModifiers(simpleFormats, {UFIELD_CATEGORY_NUMBER, UNUM_MEASURE_UNIT_FIELD},\r
-                                     status);\r
 }\r
 \r
-void LongNameHandler::forCompoundUnit(const Locale &loc, const MeasureUnit &unit,\r
-                                      const MeasureUnit &perUnit, const UNumberUnitWidth &width,\r
-                                      const PluralRules *rules, const MicroPropsGenerator *parent,\r
-                                      LongNameHandler *fillIn, UErrorCode &status) {\r
-    if (uprv_strcmp(unit.getType(), "") == 0 || uprv_strcmp(perUnit.getType(), "") == 0) {\r
-        // TODO(ICU-20941): Unsanctioned unit. Not yet fully supported. Set an\r
-        // error code. Once we support not-built-in units here, unitRef may be\r
-        // anything, but if not built-in, perUnit has to be "none".\r
-        status = U_UNSUPPORTED_ERROR;\r
+void LongNameHandler::forArbitraryUnit(const Locale &loc,\r
+                                       const MeasureUnit &unitRef,\r
+                                       const UNumberUnitWidth &width,\r
+                                       const char *unitDisplayCase,\r
+                                       LongNameHandler *fillIn,\r
+                                       UErrorCode &status) {\r
+    if (U_FAILURE(status)) {\r
         return;\r
     }\r
     if (fillIn == nullptr) {\r
         status = U_INTERNAL_PROGRAM_ERROR;\r
         return;\r
     }\r
-    UnicodeString primaryData[ARRAY_LENGTH];\r
-    getMeasureData(loc, unit, width, primaryData, status);\r
-    if (U_FAILURE(status)) {\r
-        return;\r
-    }\r
-    UnicodeString secondaryData[ARRAY_LENGTH];\r
-    getMeasureData(loc, perUnit, width, secondaryData, status);\r
-    if (U_FAILURE(status)) {\r
-        return;\r
+\r
+    // Numbered list items are from the algorithms at\r
+    // https://unicode.org/reports/tr35/tr35-general.html#compound-units:\r
+    //\r
+    // 4. Divide the unitId into numerator (the part before the "-per-") and\r
+    //    denominator (the part after the "-per-). If both are empty, fail\r
+    MeasureUnitImpl unit;\r
+    MeasureUnitImpl perUnit;\r
+    {\r
+        MeasureUnitImpl fullUnit = MeasureUnitImpl::forMeasureUnitMaybeCopy(unitRef, status);\r
+        if (U_FAILURE(status)) {\r
+            return;\r
+        }\r
+        for (int32_t i = 0; i < fullUnit.singleUnits.length(); i++) {\r
+            SingleUnitImpl *subUnit = fullUnit.singleUnits[i];\r
+            if (subUnit->dimensionality > 0) {\r
+                unit.appendSingleUnit(*subUnit, status);\r
+            } else {\r
+                subUnit->dimensionality *= -1;\r
+                perUnit.appendSingleUnit(*subUnit, status);\r
+            }\r
+        }\r
     }\r
 \r
-    UnicodeString perUnitFormat;\r
-    if (!secondaryData[PER_INDEX].isBogus()) {\r
-        perUnitFormat = secondaryData[PER_INDEX];\r
+    // TODO(icu-units#28): check placeholder logic, see if it needs to be\r
+    // present here instead of only in processPatternTimes:\r
+    //\r
+    // 5. Set both globalPlaceholder and globalPlaceholderPosition to be empty\r
+\r
+    DerivedComponents derivedPerCases(loc, "case", "per");\r
+\r
+    // 6. numeratorUnitString\r
+    UnicodeString numeratorUnitData[ARRAY_LENGTH];\r
+    processPatternTimes(std::move(unit), loc, width, derivedPerCases.value0(unitDisplayCase),\r
+                        numeratorUnitData, status);\r
+\r
+    // 7. denominatorUnitString\r
+    UnicodeString denominatorUnitData[ARRAY_LENGTH];\r
+    processPatternTimes(std::move(perUnit), loc, width, derivedPerCases.value1(unitDisplayCase),\r
+                        denominatorUnitData, status);\r
+\r
+    // TODO(icu-units#139):\r
+    // - implement DerivedComponents for "plural/times" and "plural/power":\r
+    //   French has different rules, we'll be producing the wrong results\r
+    //   currently. (Prove via tests!)\r
+    // - implement DerivedComponents for "plural/per", "plural/prefix",\r
+    //   "case/times", "case/power", and "case/prefix" - although they're\r
+    //   currently hardcoded. Languages with different rules are surely on the\r
+    //   way.\r
+    //\r
+    // Currently we only use "case/per", "plural/times", "case/times", and\r
+    // "case/power".\r
+    //\r
+    // This may have impact on multiSimpleFormatsToModifiers(...) below too?\r
+    // These rules are currently (ICU 69) all the same and hard-coded below.\r
+    UnicodeString perUnitPattern;\r
+    if (!denominatorUnitData[PER_INDEX].isBogus()) {\r
+        // If we have no denominator, we obtain the empty string:\r
+        perUnitPattern = denominatorUnitData[PER_INDEX];\r
     } else {\r
-        UnicodeString rawPerUnitFormat = getPerUnitFormat(loc, width, status);\r
+        // 8. Set perPattern to be getValue([per], locale, length)\r
+        UnicodeString rawPerUnitFormat = getCompoundValue("per", loc, width, status);\r
+        // rawPerUnitFormat is something like "{0} per {1}"; we need to substitute in the secondary unit.\r
+        SimpleFormatter perPatternFormatter(rawPerUnitFormat, 2, 2, status);\r
         if (U_FAILURE(status)) {\r
             return;\r
         }\r
-        // rawPerUnitFormat is something like "{0}/{1}"; we need to substitute in the secondary unit.\r
-        SimpleFormatter compiled(rawPerUnitFormat, 2, 2, status);\r
+        // Plural and placeholder handling for 7. denominatorUnitString:\r
+        // TODO(icu-units#139): hardcoded:\r
+        // <deriveComponent feature="plural" structure="per" value0="compound" value1="one"/>\r
+        UnicodeString denominatorFormat =\r
+            getWithPlural(denominatorUnitData, StandardPlural::Form::ONE, status);\r
+        // Some "one" pattern may not contain "{0}". For example in "ar" or "ne" locale.\r
+        SimpleFormatter denominatorFormatter(denominatorFormat, 0, 1, status);\r
         if (U_FAILURE(status)) {\r
             return;\r
         }\r
-        UnicodeString secondaryFormat = getWithPlural(secondaryData, StandardPlural::Form::ONE, status);\r
+        UnicodeString denominatorPattern = denominatorFormatter.getTextWithNoArguments();\r
+        int32_t trimmedLen = denominatorPattern.length();\r
+        const UChar *trimmed = trimSpaceChars(denominatorPattern.getBuffer(), trimmedLen);\r
+        UnicodeString denominatorString(false, trimmed, trimmedLen);\r
+        // 9. If the denominatorString is empty, set result to\r
+        //    [numeratorString], otherwise set result to format(perPattern,\r
+        //    numeratorString, denominatorString)\r
+        //\r
+        // TODO(icu-units#28): Why does UnicodeString need to be explicit in the\r
+        // following line?\r
+        perPatternFormatter.format(UnicodeString(u"{0}"), denominatorString, perUnitPattern, status);\r
         if (U_FAILURE(status)) {\r
             return;\r
         }\r
-        // Some "one" pattern may not contain "{0}". For example in "ar" or "ne" locale.\r
-        SimpleFormatter secondaryCompiled(secondaryFormat, 0, 1, status);\r
-        if (U_FAILURE(status)) {\r
+    }\r
+    if (perUnitPattern.length() == 0) {\r
+        fillIn->simpleFormatsToModifiers(numeratorUnitData,\r
+                                         {UFIELD_CATEGORY_NUMBER, UNUM_MEASURE_UNIT_FIELD}, status);\r
+    } else {\r
+        fillIn->multiSimpleFormatsToModifiers(numeratorUnitData, perUnitPattern,\r
+                                              {UFIELD_CATEGORY_NUMBER, UNUM_MEASURE_UNIT_FIELD}, status);\r
+    }\r
+\r
+    // Gender\r
+    //\r
+    // TODO(icu-units#28): find out what gender to use in the absence of a first\r
+    // value - e.g. what's the gender of "per-second"? Mentioned in CLDR-14253.\r
+    //\r
+    // gender/per deriveCompound rules don't say:\r
+    // <deriveCompound feature="gender" structure="per" value="0"/> <!-- gender(gram-per-meter) ←  gender(gram) -->\r
+    fillIn->gender = getGenderString(\r
+        getDerivedGender(loc, "per", numeratorUnitData, denominatorUnitData, status), status);\r
+}\r
+\r
+void LongNameHandler::processPatternTimes(MeasureUnitImpl &&productUnit,\r
+                                          Locale loc,\r
+                                          const UNumberUnitWidth &width,\r
+                                          const char *caseVariant,\r
+                                          UnicodeString *outArray,\r
+                                          UErrorCode &status) {\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+    if (productUnit.complexity == UMEASURE_UNIT_MIXED) {\r
+        // These are handled by MixedUnitLongNameHandler\r
+        status = U_UNSUPPORTED_ERROR;\r
+        return;\r
+    }\r
+\r
+#if U_DEBUG\r
+    for (int32_t pluralIndex = 0; pluralIndex < ARRAY_LENGTH; pluralIndex++) {\r
+        U_ASSERT(outArray[pluralIndex].length() == 0);\r
+        U_ASSERT(!outArray[pluralIndex].isBogus());\r
+    }\r
+#endif\r
+\r
+    if (productUnit.identifier.isEmpty()) {\r
+        // TODO(icu-units#28): consider when serialize should be called.\r
+        // identifier might also be empty for MeasureUnit().\r
+        productUnit.serialize(status);\r
+    }\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+    if (productUnit.identifier.length() == 0) {\r
+        // MeasureUnit(): no units: return empty strings.\r
+        return;\r
+    }\r
+\r
+    MeasureUnit builtinUnit;\r
+    if (MeasureUnit::findBySubType(productUnit.identifier.toStringPiece(), &builtinUnit)) {\r
+        // TODO(icu-units#145): spec doesn't cover builtin-per-builtin, it\r
+        // breaks them all down. Do we want to drop this?\r
+        // - findBySubType isn't super efficient, if we skip it and go to basic\r
+        //   singles, we don't have to construct MeasureUnit's anymore.\r
+        // - Check all the existing unit tests that fail without this: is it due\r
+        //   to incorrect fallback via getMeasureData?\r
+        // - Do those unit tests cover this code path representatively?\r
+        if (builtinUnit != MeasureUnit()) {\r
+            getMeasureData(loc, builtinUnit, width, caseVariant, outArray, status);\r
+            maybeCalculateGender(loc, builtinUnit, outArray, status);\r
+        }\r
+        return;\r
+    }\r
+\r
+    // 2. Set timesPattern to be getValue(times, locale, length)\r
+    UnicodeString timesPattern = getCompoundValue("times", loc, width, status);\r
+    SimpleFormatter timesPatternFormatter(timesPattern, 2, 2, status);\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+\r
+    PlaceholderPosition globalPlaceholder[ARRAY_LENGTH];\r
+    UChar globalJoinerChar = 0;\r
+    // Numbered list items are from the algorithms at\r
+    // https://unicode.org/reports/tr35/tr35-general.html#compound-units:\r
+    //\r
+    // pattern(...) point 5:\r
+    // - Set both globalPlaceholder and globalPlaceholderPosition to be empty\r
+    //\r
+    // 3. Set result to be empty\r
+    for (int32_t pluralIndex = 0; pluralIndex < ARRAY_LENGTH; pluralIndex++) {\r
+        // Initial state: empty string pattern, via all falling back to OTHER:\r
+        if (pluralIndex == StandardPlural::Form::OTHER) {\r
+            outArray[pluralIndex].remove();\r
+        } else {\r
+            outArray[pluralIndex].setToBogus();\r
+        }\r
+        globalPlaceholder[pluralIndex] = PH_EMPTY;\r
+    }\r
+\r
+    // Empty string represents "compound" (propagate the plural form).\r
+    const char *pluralCategory = "";\r
+    DerivedComponents derivedTimesPlurals(loc, "plural", "times");\r
+    DerivedComponents derivedTimesCases(loc, "case", "times");\r
+    DerivedComponents derivedPowerCases(loc, "case", "power");\r
+\r
+    // 4. For each single_unit in product_unit\r
+    for (int32_t singleUnitIndex = 0; singleUnitIndex < productUnit.singleUnits.length();\r
+         singleUnitIndex++) {\r
+        SingleUnitImpl *singleUnit = productUnit.singleUnits[singleUnitIndex];\r
+        const char *singlePluralCategory;\r
+        const char *singleCaseVariant;\r
+        // TODO(icu-units#28): ensure we have unit tests that change/fail if we\r
+        // assign incorrect case variants here:\r
+        if (singleUnitIndex < productUnit.singleUnits.length() - 1) {\r
+            // 4.1. If hasMultiple\r
+            singlePluralCategory = derivedTimesPlurals.value0(pluralCategory);\r
+            singleCaseVariant = derivedTimesCases.value0(caseVariant);\r
+            pluralCategory = derivedTimesPlurals.value1(pluralCategory);\r
+            caseVariant = derivedTimesCases.value1(caseVariant);\r
+        } else {\r
+            singlePluralCategory = derivedTimesPlurals.value1(pluralCategory);\r
+            singleCaseVariant = derivedTimesCases.value1(caseVariant);\r
+        }\r
+\r
+        // 4.2. Get the gender of that single_unit\r
+        MeasureUnit simpleUnit;\r
+        if (!MeasureUnit::findBySubType(singleUnit->getSimpleUnitID(), &simpleUnit)) {\r
+            // Ideally all simple units should be known, but they're not:\r
+            // 100-kilometer is internally treated as a simple unit, but it is\r
+            // not a built-in unit and does not have formatting data in CLDR 39.\r
+            //\r
+            // TODO(icu-units#28): test (desirable) invariants in unit tests.\r
+            status = U_UNSUPPORTED_ERROR;\r
             return;\r
         }\r
-        UnicodeString secondaryString = secondaryCompiled.getTextWithNoArguments().trim();\r
-        // TODO: Why does UnicodeString need to be explicit in the following line?\r
-        compiled.format(UnicodeString(u"{0}"), secondaryString, perUnitFormat, status);\r
+        const char *gender = getGenderString(getGenderForBuiltin(loc, simpleUnit, status), status);\r
+\r
+        // 4.3. If singleUnit starts with a dimensionality_prefix, such as 'square-'\r
+        U_ASSERT(singleUnit->dimensionality > 0);\r
+        int32_t dimensionality = singleUnit->dimensionality;\r
+        UnicodeString dimensionalityPrefixPatterns[ARRAY_LENGTH];\r
+        if (dimensionality != 1) {\r
+            // 4.3.1. set dimensionalityPrefixPattern to be\r
+            //   getValue(that dimensionality_prefix, locale, length, singlePluralCategory, singleCaseVariant, gender),\r
+            //   such as "{0} kwadratowym"\r
+            CharString dimensionalityKey("compound/power", status);\r
+            dimensionalityKey.appendNumber(dimensionality, status);\r
+            getInflectedMeasureData(dimensionalityKey.toStringPiece(), loc, width, gender,\r
+                                    singleCaseVariant, dimensionalityPrefixPatterns, status);\r
+            if (U_FAILURE(status)) {\r
+                // At the time of writing, only pow2 and pow3 are supported.\r
+                // Attempting to format other powers results in a\r
+                // U_RESOURCE_TYPE_MISMATCH. We convert the error if we\r
+                // understand it:\r
+                if (status == U_RESOURCE_TYPE_MISMATCH && dimensionality > 3) {\r
+                    status = U_UNSUPPORTED_ERROR;\r
+                }\r
+                return;\r
+            }\r
+\r
+            // TODO(icu-units#139):\r
+            // 4.3.2. set singlePluralCategory to be power0(singlePluralCategory)\r
+\r
+            // 4.3.3. set singleCaseVariant to be power0(singleCaseVariant)\r
+            singleCaseVariant = derivedPowerCases.value0(singleCaseVariant);\r
+            // 4.3.4. remove the dimensionality_prefix from singleUnit\r
+            singleUnit->dimensionality = 1;\r
+        }\r
+\r
+        // 4.4. if singleUnit starts with an si_prefix, such as 'centi'\r
+        UMeasurePrefix prefix = singleUnit->unitPrefix;\r
+        UnicodeString prefixPattern;\r
+        if (prefix != UMEASURE_PREFIX_ONE) {\r
+            // 4.4.1. set siPrefixPattern to be getValue(that si_prefix, locale,\r
+            //        length), such as "centy{0}"\r
+            CharString prefixKey;\r
+            // prefixKey looks like "1024p3" or "10p-2":\r
+            prefixKey.appendNumber(umeas_getPrefixBase(prefix), status);\r
+            prefixKey.append('p', status);\r
+            prefixKey.appendNumber(umeas_getPrefixPower(prefix), status);\r
+            // Contains a pattern like "centy{0}".\r
+            prefixPattern = getCompoundValue(prefixKey.toStringPiece(), loc, width, status);\r
+\r
+            // 4.4.2. set singlePluralCategory to be prefix0(singlePluralCategory)\r
+            //\r
+            // TODO(icu-units#139): that refers to these rules:\r
+            // <deriveComponent feature="plural" structure="prefix" value0="one" value1="compound"/>\r
+            // though I'm not sure what other value they might end up having.\r
+            //\r
+            // 4.4.3. set singleCaseVariant to be prefix0(singleCaseVariant)\r
+            //\r
+            // TODO(icu-units#139): that refers to:\r
+            // <deriveComponent feature="case" structure="prefix" value0="nominative"\r
+            // value1="compound"/> but the prefix (value0) doesn't have case, the rest simply\r
+            // propagates.\r
+\r
+            // 4.4.4. remove the si_prefix from singleUnit\r
+            singleUnit->unitPrefix = UMEASURE_PREFIX_ONE;\r
+        }\r
+\r
+        // 4.5. Set corePattern to be the getValue(singleUnit, locale, length,\r
+        //      singlePluralCategory, singleCaseVariant), such as "{0} metrem"\r
+        UnicodeString singleUnitArray[ARRAY_LENGTH];\r
+        // At this point we are left with a Simple Unit:\r
+        U_ASSERT(uprv_strcmp(singleUnit->build(status).getIdentifier(), singleUnit->getSimpleUnitID()) ==\r
+                 0);\r
+        getMeasureData(loc, singleUnit->build(status), width, singleCaseVariant, singleUnitArray,\r
+                       status);\r
         if (U_FAILURE(status)) {\r
+            // Shouldn't happen if we have data for all single units\r
             return;\r
         }\r
+\r
+        // Calculate output gender\r
+        if (!singleUnitArray[GENDER_INDEX].isBogus()) {\r
+            U_ASSERT(!singleUnitArray[GENDER_INDEX].isEmpty());\r
+            UnicodeString uVal;\r
+\r
+            if (prefix != UMEASURE_PREFIX_ONE) {\r
+                singleUnitArray[GENDER_INDEX] =\r
+                    getDerivedGender(loc, "prefix", singleUnitArray, nullptr, status);\r
+            }\r
+\r
+            if (dimensionality != 1) {\r
+                singleUnitArray[GENDER_INDEX] =\r
+                    getDerivedGender(loc, "power", singleUnitArray, nullptr, status);\r
+            }\r
+\r
+            UnicodeString timesGenderRule = getDeriveCompoundRule(loc, "gender", "times", status);\r
+            if (timesGenderRule.length() == 1) {\r
+                switch (timesGenderRule[0]) {\r
+                case u'0':\r
+                    if (singleUnitIndex == 0) {\r
+                        U_ASSERT(outArray[GENDER_INDEX].isBogus());\r
+                        outArray[GENDER_INDEX] = singleUnitArray[GENDER_INDEX];\r
+                    }\r
+                    break;\r
+                case u'1':\r
+                    if (singleUnitIndex == productUnit.singleUnits.length() - 1) {\r
+                        U_ASSERT(outArray[GENDER_INDEX].isBogus());\r
+                        outArray[GENDER_INDEX] = singleUnitArray[GENDER_INDEX];\r
+                    }\r
+                }\r
+            } else {\r
+                if (outArray[GENDER_INDEX].isBogus()) {\r
+                    outArray[GENDER_INDEX] = timesGenderRule;\r
+                }\r
+            }\r
+        }\r
+\r
+        // Calculate resulting patterns for each plural form\r
+        for (int32_t pluralIndex = 0; pluralIndex < StandardPlural::Form::COUNT; pluralIndex++) {\r
+            StandardPlural::Form plural = static_cast<StandardPlural::Form>(pluralIndex);\r
+\r
+            // singleUnitArray[pluralIndex] looks something like "{0} Meter"\r
+            if (outArray[pluralIndex].isBogus()) {\r
+                if (singleUnitArray[pluralIndex].isBogus()) {\r
+                    // Let the usual plural fallback mechanism take care of this\r
+                    // plural form\r
+                    continue;\r
+                } else {\r
+                    // Since our singleUnit can have a plural form that outArray\r
+                    // doesn't yet have (relying on fallback to OTHER), we start\r
+                    // by grabbing it with the normal plural fallback mechanism\r
+                    outArray[pluralIndex] = getWithPlural(outArray, plural, status);\r
+                    if (U_FAILURE(status)) {\r
+                        return;\r
+                    }\r
+                }\r
+            }\r
+\r
+            if (uprv_strcmp(singlePluralCategory, "") != 0) {\r
+                plural = static_cast<StandardPlural::Form>(getIndex(singlePluralCategory, status));\r
+            }\r
+\r
+            // 4.6. Extract(corePattern, coreUnit, placeholder, placeholderPosition) from that pattern.\r
+            UnicodeString coreUnit;\r
+            PlaceholderPosition placeholderPosition;\r
+            UChar joinerChar;\r
+            extractCorePattern(getWithPlural(singleUnitArray, plural, status), coreUnit,\r
+                               placeholderPosition, joinerChar);\r
+\r
+            // 4.7 If the position is middle, then fail\r
+            if (placeholderPosition == PH_MIDDLE) {\r
+                status = U_UNSUPPORTED_ERROR;\r
+                return;\r
+            }\r
+\r
+            // 4.8. If globalPlaceholder is empty\r
+            if (globalPlaceholder[pluralIndex] == PH_EMPTY) {\r
+                globalPlaceholder[pluralIndex] = placeholderPosition;\r
+                globalJoinerChar = joinerChar;\r
+            } else {\r
+                // Expect all units involved to have the same placeholder position\r
+                U_ASSERT(globalPlaceholder[pluralIndex] == placeholderPosition);\r
+                // TODO(icu-units#28): Do we want to add a unit test that checks\r
+                // for consistent joiner chars? Probably not, given how\r
+                // inconsistent they are. File a CLDR ticket with examples?\r
+            }\r
+            // Now coreUnit would be just "Meter"\r
+\r
+            // 4.9. If siPrefixPattern is not empty\r
+            if (prefix != UMEASURE_PREFIX_ONE) {\r
+                SimpleFormatter prefixCompiled(prefixPattern, 1, 1, status);\r
+                if (U_FAILURE(status)) {\r
+                    return;\r
+                }\r
+\r
+                // 4.9.1. Set coreUnit to be the combineLowercasing(locale, length, siPrefixPattern,\r
+                //        coreUnit)\r
+                UnicodeString tmp;\r
+                // combineLowercasing(locale, length, prefixPattern, coreUnit)\r
+                //\r
+                // TODO(icu-units#28): run this only if prefixPattern does not\r
+                // contain space characters - do languages "as", "bn", "hi",\r
+                // "kk", etc have concepts of upper and lower case?:\r
+                if (width == UNUM_UNIT_WIDTH_FULL_NAME) {\r
+                    coreUnit.toLower(loc);\r
+                }\r
+                prefixCompiled.format(coreUnit, tmp, status);\r
+                if (U_FAILURE(status)) {\r
+                    return;\r
+                }\r
+                coreUnit = tmp;\r
+            }\r
+\r
+            // 4.10. If dimensionalityPrefixPattern is not empty\r
+            if (dimensionality != 1) {\r
+                SimpleFormatter dimensionalityCompiled(\r
+                    getWithPlural(dimensionalityPrefixPatterns, plural, status), 1, 1, status);\r
+                if (U_FAILURE(status)) {\r
+                    return;\r
+                }\r
+\r
+                // 4.10.1. Set coreUnit to be the combineLowercasing(locale, length,\r
+                //         dimensionalityPrefixPattern, coreUnit)\r
+                UnicodeString tmp;\r
+                // combineLowercasing(locale, length, prefixPattern, coreUnit)\r
+                //\r
+                // TODO(icu-units#28): run this only if prefixPattern does not\r
+                // contain space characters - do languages "as", "bn", "hi",\r
+                // "kk", etc have concepts of upper and lower case?:\r
+                if (width == UNUM_UNIT_WIDTH_FULL_NAME) {\r
+                    coreUnit.toLower(loc);\r
+                }\r
+                dimensionalityCompiled.format(coreUnit, tmp, status);\r
+                if (U_FAILURE(status)) {\r
+                    return;\r
+                }\r
+                coreUnit = tmp;\r
+            }\r
+\r
+            if (outArray[pluralIndex].length() == 0) {\r
+                // 4.11. If the result is empty, set result to be coreUnit\r
+                outArray[pluralIndex] = coreUnit;\r
+            } else {\r
+                // 4.12. Otherwise set result to be format(timesPattern, result, coreUnit)\r
+                UnicodeString tmp;\r
+                timesPatternFormatter.format(outArray[pluralIndex], coreUnit, tmp, status);\r
+                outArray[pluralIndex] = tmp;\r
+            }\r
+        }\r
+    }\r
+    for (int32_t pluralIndex = 0; pluralIndex < StandardPlural::Form::COUNT; pluralIndex++) {\r
+        if (globalPlaceholder[pluralIndex] == PH_BEGINNING) {\r
+            UnicodeString tmp;\r
+            tmp.append(u"{0}", 3);\r
+            if (globalJoinerChar != 0) {\r
+                tmp.append(globalJoinerChar);\r
+            }\r
+            tmp.append(outArray[pluralIndex]);\r
+            outArray[pluralIndex] = tmp;\r
+        } else if (globalPlaceholder[pluralIndex] == PH_END) {\r
+            if (globalJoinerChar != 0) {\r
+                outArray[pluralIndex].append(globalJoinerChar);\r
+            }\r
+            outArray[pluralIndex].append(u"{0}", 3);\r
+        }\r
     }\r
-    fillIn->rules = rules;\r
-    fillIn->parent = parent;\r
-    fillIn->multiSimpleFormatsToModifiers(primaryData, perUnitFormat,\r
-                                          {UFIELD_CATEGORY_NUMBER, UNUM_MEASURE_UNIT_FIELD}, status);\r
 }\r
 \r
 UnicodeString LongNameHandler::getUnitDisplayName(\r
@@ -329,7 +1455,7 @@ UnicodeString LongNameHandler::getUnitDisplayName(
         return ICU_Utility::makeBogusString();\r
     }\r
     UnicodeString simpleFormats[ARRAY_LENGTH];\r
-    getMeasureData(loc, unit, width, simpleFormats, status);\r
+    getMeasureData(loc, unit, width, "", simpleFormats, status);\r
     return simpleFormats[DNAM_INDEX];\r
 }\r
 \r
@@ -343,7 +1469,7 @@ UnicodeString LongNameHandler::getUnitPattern(
         return ICU_Utility::makeBogusString();\r
     }\r
     UnicodeString simpleFormats[ARRAY_LENGTH];\r
-    getMeasureData(loc, unit, width, simpleFormats, status);\r
+    getMeasureData(loc, unit, width, "", simpleFormats, status);\r
     // The above already handles fallback from other widths to short\r
     if (U_FAILURE(status)) {\r
         return ICU_Utility::makeBogusString();\r
@@ -366,6 +1492,7 @@ LongNameHandler* LongNameHandler::forCurrencyLongNames(const Locale &loc, const
     getCurrencyLongNameData(loc, currency, simpleFormats, status);\r
     if (U_FAILURE(status)) { return nullptr; }\r
     result->simpleFormatsToModifiers(simpleFormats, {UFIELD_CATEGORY_NUMBER, UNUM_CURRENCY_FIELD}, status);\r
+    // TODO(icu-units#28): currency gender?\r
     return result;\r
 }\r
 \r
@@ -390,8 +1517,12 @@ void LongNameHandler::multiSimpleFormatsToModifiers(const UnicodeString *leadFor
         UnicodeString leadFormat = getWithPlural(leadFormats, plural, status);\r
         if (U_FAILURE(status)) { return; }\r
         UnicodeString compoundFormat;\r
-        trailCompiled.format(leadFormat, compoundFormat, status);\r
-        if (U_FAILURE(status)) { return; }\r
+        if (leadFormat.length() == 0) {\r
+            compoundFormat = trailFormat;\r
+        } else {\r
+            trailCompiled.format(leadFormat, compoundFormat, status);\r
+            if (U_FAILURE(status)) { return; }\r
+        }\r
         SimpleFormatter compoundCompiled(compoundFormat, 0, 1, status);\r
         if (U_FAILURE(status)) { return; }\r
         fModifiers[i] = SimpleModifier(compoundCompiled, field, false, {this, SIGNUM_POS_ZERO, plural});\r
@@ -405,29 +1536,53 @@ void LongNameHandler::processQuantity(DecimalQuantity &quantity, MicroProps &mic
     }\r
     StandardPlural::Form pluralForm = utils::getPluralSafe(micros.rounder, rules, quantity, status);\r
     micros.modOuter = &fModifiers[pluralForm];\r
+    micros.gender = gender;\r
 }\r
 \r
 const Modifier* LongNameHandler::getModifier(Signum /*signum*/, StandardPlural::Form plural) const {\r
     return &fModifiers[plural];\r
 }\r
 \r
-void MixedUnitLongNameHandler::forMeasureUnit(const Locale &loc, const MeasureUnit &mixedUnit,\r
-                                              const UNumberUnitWidth &width, const PluralRules *rules,\r
+void MixedUnitLongNameHandler::forMeasureUnit(const Locale &loc,\r
+                                              const MeasureUnit &mixedUnit,\r
+                                              const UNumberUnitWidth &width,\r
+                                              const char *unitDisplayCase,\r
+                                              const PluralRules *rules,\r
                                               const MicroPropsGenerator *parent,\r
-                                              MixedUnitLongNameHandler *fillIn, UErrorCode &status) {\r
+                                              MixedUnitLongNameHandler *fillIn,\r
+                                              UErrorCode &status) {\r
     U_ASSERT(mixedUnit.getComplexity(status) == UMEASURE_UNIT_MIXED);\r
     U_ASSERT(fillIn != nullptr);\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
 \r
     MeasureUnitImpl temp;\r
-    const MeasureUnitImpl& impl = MeasureUnitImpl::forMeasureUnit(mixedUnit, temp, status);\r
-    fillIn->fMixedUnitCount = impl.units.length();\r
+    const MeasureUnitImpl &impl = MeasureUnitImpl::forMeasureUnit(mixedUnit, temp, status);\r
+    // Defensive, for production code:\r
+    if (impl.complexity != UMEASURE_UNIT_MIXED) {\r
+        // Should be using the normal LongNameHandler\r
+        status = U_UNSUPPORTED_ERROR;\r
+        return;\r
+    }\r
+\r
+    fillIn->fMixedUnitCount = impl.singleUnits.length();\r
     fillIn->fMixedUnitData.adoptInstead(new UnicodeString[fillIn->fMixedUnitCount * ARRAY_LENGTH]);\r
     for (int32_t i = 0; i < fillIn->fMixedUnitCount; i++) {\r
         // Grab data for each of the components.\r
         UnicodeString *unitData = &fillIn->fMixedUnitData[i * ARRAY_LENGTH];\r
-        getMeasureData(loc, impl.units[i]->build(status), width, unitData, status);\r
+        // TODO(CLDR-14502): check from the CLDR-14502 ticket whether this\r
+        // propagation of unitDisplayCase is correct:\r
+        getMeasureData(loc, impl.singleUnits[i]->build(status), width, unitDisplayCase, unitData,\r
+                       status);\r
+        // TODO(ICU-21494): if we add support for gender for mixed units, we may\r
+        // need maybeCalculateGender() here.\r
     }\r
 \r
+    // TODO(icu-units#120): Make sure ICU doesn't output zero-valued\r
+    // high-magnitude fields\r
+    // * for mixed units count N, produce N listFormatters, one for each subset\r
+    //   that might be formatted.\r
     UListFormatterWidth listWidth = ULISTFMT_WIDTH_SHORT;\r
     if (width == UNUM_UNIT_WIDTH_NARROW) {\r
         listWidth = ULISTFMT_WIDTH_NARROW;\r
@@ -437,12 +1592,14 @@ void MixedUnitLongNameHandler::forMeasureUnit(const Locale &loc, const MeasureUn
     }\r
     fillIn->fListFormatter.adoptInsteadAndCheckErrorCode(\r
         ListFormatter::createInstance(loc, ULISTFMT_TYPE_UNITS, listWidth, status), status);\r
+    // TODO(ICU-21494): grab gender of each unit, calculate the gender\r
+    // associated with this list formatter, save it for later.\r
     fillIn->rules = rules;\r
     fillIn->parent = parent;\r
 \r
-    // We need a localised NumberFormatter for the integers of the bigger units\r
+    // We need a localised NumberFormatter for the numbers of the bigger units\r
     // (providing Arabic numerals, for example).\r
-    fillIn->fIntegerFormatter = NumberFormatter::withLocale(loc);\r
+    fillIn->fNumberFormatter = NumberFormatter::withLocale(loc);\r
 }\r
 \r
 void MixedUnitLongNameHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micros,\r
@@ -462,12 +1619,6 @@ const Modifier *MixedUnitLongNameHandler::getMixedUnitModifier(DecimalQuantity &
         status = U_UNSUPPORTED_ERROR;\r
         return &micros.helpers.emptyWeakModifier;\r
     }\r
-    // If we don't have at least one mixedMeasure, the LongNameHandler would be\r
-    // sufficient and we shouldn't be running MixedUnitLongNameHandler code:\r
-    U_ASSERT(micros.mixedMeasuresCount > 0);\r
-    // mixedMeasures does not contain the last value:\r
-    U_ASSERT(fMixedUnitCount == micros.mixedMeasuresCount + 1);\r
-    U_ASSERT(fListFormatter.isValid());\r
 \r
     // Algorithm:\r
     //\r
@@ -492,39 +1643,45 @@ const Modifier *MixedUnitLongNameHandler::getMixedUnitModifier(DecimalQuantity &
         return &micros.helpers.emptyWeakModifier;\r
     }\r
 \r
+    StandardPlural::Form quantityPlural = StandardPlural::Form::OTHER;\r
     for (int32_t i = 0; i < micros.mixedMeasuresCount; i++) {\r
         DecimalQuantity fdec;\r
-        fdec.setToLong(micros.mixedMeasures[i]);\r
-        if (i > 0 && fdec.isNegative()) {\r
-            // If numbers are negative, only the first number needs to have its\r
-            // negative sign formatted.\r
-            fdec.negate();\r
-        }\r
-        StandardPlural::Form pluralForm = utils::getStandardPlural(rules, fdec);\r
 \r
-        UnicodeString simpleFormat =\r
-            getWithPlural(&fMixedUnitData[i * ARRAY_LENGTH], pluralForm, status);\r
-        SimpleFormatter compiledFormatter(simpleFormat, 0, 1, status);\r
+        // If numbers are negative, only the first number needs to have its\r
+        // negative sign formatted.\r
+        int64_t number = i > 0 ? std::abs(micros.mixedMeasures[i]) : micros.mixedMeasures[i];\r
 \r
-        UnicodeString num;\r
-        auto appendable = UnicodeStringAppendable(num);\r
-        fIntegerFormatter.formatDecimalQuantity(fdec, status).appendTo(appendable, status);\r
-        compiledFormatter.format(num, outputMeasuresList[i], status);\r
-        // TODO(icu-units#67): fix field positions\r
-    }\r
+        if (micros.indexOfQuantity == i) { // Insert placeholder for `quantity`\r
+            // If quantity is not the first value and quantity is negative\r
+            if (micros.indexOfQuantity > 0 && quantity.isNegative()) {\r
+                quantity.negate();\r
+            }\r
 \r
-    // Reiterated: we have at least one mixedMeasure:\r
-    U_ASSERT(micros.mixedMeasuresCount > 0);\r
-    // Thus if negative, a negative has already been formatted:\r
-    if (quantity.isNegative()) {\r
-        quantity.negate();\r
+            StandardPlural::Form quantityPlural =\r
+                utils::getPluralSafe(micros.rounder, rules, quantity, status);\r
+            UnicodeString quantityFormatWithPlural =\r
+                getWithPlural(&fMixedUnitData[i * ARRAY_LENGTH], quantityPlural, status);\r
+            SimpleFormatter quantityFormatter(quantityFormatWithPlural, 0, 1, status);\r
+            quantityFormatter.format(UnicodeString(u"{0}"), outputMeasuresList[i], status);\r
+        } else {\r
+            fdec.setToLong(number);\r
+            StandardPlural::Form pluralForm = utils::getStandardPlural(rules, fdec);\r
+            UnicodeString simpleFormat =\r
+                getWithPlural(&fMixedUnitData[i * ARRAY_LENGTH], pluralForm, status);\r
+            SimpleFormatter compiledFormatter(simpleFormat, 0, 1, status);\r
+            UnicodeString num;\r
+            auto appendable = UnicodeStringAppendable(num);\r
+\r
+            fNumberFormatter.formatDecimalQuantity(fdec, status).appendTo(appendable, status);\r
+            compiledFormatter.format(num, outputMeasuresList[i], status);\r
+        }\r
     }\r
 \r
-    UnicodeString *finalSimpleFormats = &fMixedUnitData[(fMixedUnitCount - 1) * ARRAY_LENGTH];\r
-    StandardPlural::Form finalPlural = utils::getPluralSafe(micros.rounder, rules, quantity, status);\r
-    UnicodeString finalSimpleFormat = getWithPlural(finalSimpleFormats, finalPlural, status);\r
-    SimpleFormatter finalFormatter(finalSimpleFormat, 0, 1, status);\r
-    finalFormatter.format(UnicodeString(u"{0}"), outputMeasuresList[fMixedUnitCount - 1], status);\r
+    // TODO(ICU-21494): implement gender for lists of mixed units. Presumably we\r
+    // can set micros.gender to the gender associated with the list formatter in\r
+    // use below (once we have correct support for that). And then document this\r
+    // appropriately? "getMixedUnitModifier" doesn't sound like it would do\r
+    // something like this.\r
 \r
     // Combine list into a "premixed" pattern\r
     UnicodeString premixedFormatPattern;\r
@@ -535,26 +1692,27 @@ const Modifier *MixedUnitLongNameHandler::getMixedUnitModifier(DecimalQuantity &
         return &micros.helpers.emptyWeakModifier;\r
     }\r
 \r
-    // TODO(icu-units#67): fix field positions\r
-    // Return a SimpleModifier for the "premixed" pattern\r
     micros.helpers.mixedUnitModifier =\r
-        SimpleModifier(premixedCompiled, kUndefinedField, false, {this, SIGNUM_POS_ZERO, finalPlural});\r
+        SimpleModifier(premixedCompiled, kUndefinedField, false, {this, SIGNUM_POS_ZERO, quantityPlural});\r
     return &micros.helpers.mixedUnitModifier;\r
 }\r
 \r
 const Modifier *MixedUnitLongNameHandler::getModifier(Signum /*signum*/,\r
                                                       StandardPlural::Form /*plural*/) const {\r
-    // TODO(units): investigate this method when investigating where\r
-    // LongNameHandler::getModifier() gets used. To be sure it remains\r
+    // TODO(icu-units#28): investigate this method when investigating where\r
+    // ModifierStore::getModifier() gets used. To be sure it remains\r
     // unreachable:\r
     UPRV_UNREACHABLE;\r
     return nullptr;\r
 }\r
 \r
-LongNameMultiplexer *\r
-LongNameMultiplexer::forMeasureUnits(const Locale &loc, const MaybeStackVector<MeasureUnit> &units,\r
-                                     const UNumberUnitWidth &width, const PluralRules *rules,\r
-                                     const MicroPropsGenerator *parent, UErrorCode &status) {\r
+LongNameMultiplexer *LongNameMultiplexer::forMeasureUnits(const Locale &loc,\r
+                                                          const MaybeStackVector<MeasureUnit> &units,\r
+                                                          const UNumberUnitWidth &width,\r
+                                                          const char *unitDisplayCase,\r
+                                                          const PluralRules *rules,\r
+                                                          const MicroPropsGenerator *parent,\r
+                                                          UErrorCode &status) {\r
     LocalPointer<LongNameMultiplexer> result(new LongNameMultiplexer(parent), status);\r
     if (U_FAILURE(status)) {\r
         return nullptr;\r
@@ -566,15 +1724,16 @@ LongNameMultiplexer::forMeasureUnits(const Locale &loc, const MaybeStackVector<M
     }\r
     result->fMeasureUnits.adoptInstead(new MeasureUnit[units.length()]);\r
     for (int32_t i = 0, length = units.length(); i < length; i++) {\r
-        const MeasureUnitunit = *units[i];\r
+        const MeasureUnit &unit = *units[i];\r
         result->fMeasureUnits[i] = unit;\r
         if (unit.getComplexity(status) == UMEASURE_UNIT_MIXED) {\r
             MixedUnitLongNameHandler *mlnh = result->fMixedUnitHandlers.createAndCheckErrorCode(status);\r
-            MixedUnitLongNameHandler::forMeasureUnit(loc, unit, width, rules, NULL, mlnh, status);\r
+            MixedUnitLongNameHandler::forMeasureUnit(loc, unit, width, unitDisplayCase, rules, NULL,\r
+                                                     mlnh, status);\r
             result->fHandlers[i] = mlnh;\r
         } else {\r
             LongNameHandler *lnh = result->fLongNameHandlers.createAndCheckErrorCode(status);\r
-            LongNameHandler::forMeasureUnit(loc, unit, MeasureUnit(), width, rules, NULL, lnh, status);\r
+            LongNameHandler::forMeasureUnit(loc, unit, width, unitDisplayCase, rules, NULL, lnh, status);\r
             result->fHandlers[i] = lnh;\r
         }\r
         if (U_FAILURE(status)) {\r
index 44048e9..bc3a628 100644 (file)
@@ -16,6 +16,8 @@
 U_NAMESPACE_BEGIN namespace number {\r
 namespace impl {\r
 \r
+// LongNameHandler takes care of formatting currency and measurement unit names,\r
+// as well as populating the gender of measure units.\r
 class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public UMemory {\r
   public:\r
     static UnicodeString getUnitDisplayName(\r
@@ -24,6 +26,8 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public
         UNumberUnitWidth width,\r
         UErrorCode& status);\r
 \r
+    // This function does not support inflections or other newer NumberFormatter\r
+    // features: it exists to support the older not-recommended MeasureFormat.\r
     static UnicodeString getUnitPattern(\r
         const Locale& loc,\r
         const MeasureUnit& unit,\r
@@ -38,9 +42,6 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public
     /**\r
      * Construct a localized LongNameHandler for the specified MeasureUnit.\r
      *\r
-     * Compound units can be constructed via `unit` and `perUnit`. Both of these\r
-     * must then be built-in units.\r
-     *\r
      * Mixed units are not supported, use MixedUnitLongNameHandler::forMeasureUnit.\r
      *\r
      * This function uses a fillIn intead of returning a pointer, because we\r
@@ -48,17 +49,21 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public
      * didn't create itself).\r
      *\r
      * @param loc The desired locale.\r
-     * @param unit The measure unit to construct a LongNameHandler for. If\r
-     *     `perUnit` is also defined, `unit` must not be a mixed unit.\r
-     * @param perUnit If `unit` is a mixed unit, `perUnit` must be "none".\r
+     * @param unitRef The measure unit to construct a LongNameHandler for.\r
      * @param width Specifies the desired unit rendering.\r
+     * @param unitDisplayCase Specifies the desired grammatical case. If the\r
+     *     specified case is not found, we fall back to nominative or no-case.\r
      * @param rules Does not take ownership.\r
      * @param parent Does not take ownership.\r
      * @param fillIn Required.\r
      */\r
-    static void forMeasureUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,\r
-                               const UNumberUnitWidth &width, const PluralRules *rules,\r
-                               const MicroPropsGenerator *parent, LongNameHandler *fillIn,\r
+    static void forMeasureUnit(const Locale &loc,\r
+                               const MeasureUnit &unitRef,\r
+                               const UNumberUnitWidth &width,\r
+                               const char *unitDisplayCase,\r
+                               const PluralRules *rules,\r
+                               const MicroPropsGenerator *parent,\r
+                               LongNameHandler *fillIn,\r
                                UErrorCode &status);\r
 \r
     /**\r
@@ -68,10 +73,6 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public
     void\r
     processQuantity(DecimalQuantity &quantity, MicroProps &micros, UErrorCode &status) const U_OVERRIDE;\r
 \r
-    // TODO(units): investigate whether we might run into Mixed Unit trouble\r
-    // with this. This override for ModifierStore::getModifier does not support\r
-    // mixed units: investigate under which circumstances it gets called (check\r
-    // both ImmutablePatternModifier and in NumberRangeFormatterImpl).\r
     const Modifier* getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE;\r
 \r
   private:\r
@@ -81,6 +82,9 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public
     const PluralRules *rules;\r
     // Not owned\r
     const MicroPropsGenerator *parent;\r
+    // Grammatical gender of the formatted result. Not owned: must point at\r
+    // static or global strings.\r
+    const char *gender = "";\r
 \r
     LongNameHandler(const PluralRules *rules, const MicroPropsGenerator *parent)\r
         : rules(rules), parent(parent) {\r
@@ -96,13 +100,25 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public
     // Allow macrosToMicroGenerator to call the private default constructor.\r
     friend class NumberFormatterImpl;\r
 \r
-    // Fills in LongNameHandler fields for formatting compound units identified\r
-    // via `unit` and `perUnit`. Both `unit` and `perUnit` need to be built-in\r
-    // units (for which data exists).\r
-    static void forCompoundUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,\r
-                                const UNumberUnitWidth &width, const PluralRules *rules,\r
-                                const MicroPropsGenerator *parent, LongNameHandler *fillIn,\r
-                                UErrorCode &status);\r
+    // Fills in LongNameHandler fields for formatting units identified `unit`.\r
+    static void forArbitraryUnit(const Locale &loc,\r
+                                 const MeasureUnit &unit,\r
+                                 const UNumberUnitWidth &width,\r
+                                 const char *unitDisplayCase,\r
+                                 LongNameHandler *fillIn,\r
+                                 UErrorCode &status);\r
+\r
+    // Roughly corresponds to patternTimes(...) in the spec:\r
+    // https://unicode.org/reports/tr35/tr35-general.html#compound-units\r
+    //\r
+    // productUnit is an rvalue reference to indicate this function consumes it,\r
+    // leaving it in a not-useful / undefined state.\r
+    static void processPatternTimes(MeasureUnitImpl &&productUnit,\r
+                                    Locale loc,\r
+                                    const UNumberUnitWidth &width,\r
+                                    const char *caseVariant,\r
+                                    UnicodeString *outArray,\r
+                                    UErrorCode &status);\r
 \r
     // Sets fModifiers to use the patterns from `simpleFormats`.\r
     void simpleFormatsToModifiers(const UnicodeString *simpleFormats, Field field, UErrorCode &status);\r
@@ -111,7 +127,7 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public
     // and `trailFormat` appended to each.\r
     //\r
     // With a leadFormat of "{0}m" and a trailFormat of "{0}/s", it produces a\r
-    // pattern of "{0}m/s" by inserting the leadFormat pattern into trailFormat.\r
+    // pattern of "{0}m/s" by inserting each leadFormat pattern into trailFormat.\r
     void multiSimpleFormatsToModifiers(const UnicodeString *leadFormats, UnicodeString trailFormat,\r
                                        Field field, UErrorCode &status);\r
 };\r
@@ -131,13 +147,19 @@ class MixedUnitLongNameHandler : public MicroPropsGenerator, public ModifierStor
      * @param mixedUnit The mixed measure unit to construct a\r
      *     MixedUnitLongNameHandler for.\r
      * @param width Specifies the desired unit rendering.\r
+     * @param unitDisplayCase Specifies the desired grammatical case. If the\r
+     *     specified case is not found, we fall back to nominative or no-case.\r
      * @param rules Does not take ownership.\r
      * @param parent Does not take ownership.\r
      * @param fillIn Required.\r
      */\r
-    static void forMeasureUnit(const Locale &loc, const MeasureUnit &mixedUnit,\r
-                               const UNumberUnitWidth &width, const PluralRules *rules,\r
-                               const MicroPropsGenerator *parent, MixedUnitLongNameHandler *fillIn,\r
+    static void forMeasureUnit(const Locale &loc,\r
+                               const MeasureUnit &mixedUnit,\r
+                               const UNumberUnitWidth &width,\r
+                               const char *unitDisplayCase,\r
+                               const PluralRules *rules,\r
+                               const MicroPropsGenerator *parent,\r
+                               MixedUnitLongNameHandler *fillIn,\r
                                UErrorCode &status);\r
 \r
     /**\r
@@ -156,21 +178,24 @@ class MixedUnitLongNameHandler : public MicroPropsGenerator, public ModifierStor
   private:\r
     // Not owned\r
     const PluralRules *rules;\r
+\r
     // Not owned\r
     const MicroPropsGenerator *parent;\r
 \r
     // Total number of units in the MeasureUnit this handler was configured for:\r
     // for "foot-and-inch", this will be 2.\r
     int32_t fMixedUnitCount = 1;\r
+\r
     // Stores unit data for each of the individual units. For each unit, it\r
     // stores ARRAY_LENGTH strings, as returned by getMeasureData. (Each unit\r
     // with index `i` has ARRAY_LENGTH strings starting at index\r
     // `i*ARRAY_LENGTH` in this array.)\r
     LocalArray<UnicodeString> fMixedUnitData;\r
-    // A localized NumberFormatter used to format the integer-valued bigger\r
-    // units of Mixed Unit measurements.\r
-    LocalizedNumberFormatter fIntegerFormatter;\r
-    // A localised list formatter for joining mixed units together.\r
+\r
+    // Formats the larger units of Mixed Unit measurements.\r
+    LocalizedNumberFormatter fNumberFormatter;\r
+\r
+    // Joins mixed units together.\r
     LocalPointer<ListFormatter> fListFormatter;\r
 \r
     MixedUnitLongNameHandler(const PluralRules *rules, const MicroPropsGenerator *parent)\r
@@ -207,8 +232,11 @@ class LongNameMultiplexer : public MicroPropsGenerator, public UMemory {
     // `units`. An individual unit might be a mixed unit.\r
     static LongNameMultiplexer *forMeasureUnits(const Locale &loc,\r
                                                 const MaybeStackVector<MeasureUnit> &units,\r
-                                                const UNumberUnitWidth &width, const PluralRules *rules,\r
-                                                const MicroPropsGenerator *parent, UErrorCode &status);\r
+                                                const UNumberUnitWidth &width,\r
+                                                const char *unitDisplayCase,\r
+                                                const PluralRules *rules,\r
+                                                const MicroPropsGenerator *parent,\r
+                                                UErrorCode &status);\r
 \r
     // The output unit must be provided via `micros.outputUnit`, it must match\r
     // one of the units provided to the factory function.\r
index 4239402..ae4b599 100644 (file)
@@ -36,8 +36,7 @@ class IntMeasures : public MaybeStackArray<int64_t, 2> {
      * Stack Capacity: most mixed units are expected to consist of two or three\r
      * subunits, so one or two integer measures should be enough.\r
      */\r
-    IntMeasures() : MaybeStackArray<int64_t, 2>() {\r
-    }\r
+    IntMeasures() : MaybeStackArray<int64_t, 2>() {}\r
 \r
     /**\r
      * Copy constructor.\r
@@ -84,6 +83,11 @@ struct MicroProps : public MicroPropsGenerator {
     bool useCurrency;\r
     char nsName[9];\r
 \r
+    // No ownership: must point at a string which will outlive MicroProps\r
+    // instances, e.g. a string with static storage duration, or just a string\r
+    // that will never be deallocated or modified.\r
+    const char *gender;\r
+\r
     // Note: This struct has no direct ownership of the following pointers.\r
     const DecimalFormatSymbols* symbols;\r
 \r
@@ -122,9 +126,14 @@ struct MicroProps : public MicroPropsGenerator {
     // play.\r
     MeasureUnit outputUnit;\r
 \r
-    // In the case of mixed units, this is the set of integer-only units\r
-    // *preceding* the final unit.\r
+    // Contains all the values of each unit in mixed units. For quantity (which is the floating value of\r
+    // the smallest unit in the mixed unit), the value stores in `quantity`.\r
+    // NOTE: the value of quantity in `mixedMeasures` will be left unset.\r
     IntMeasures mixedMeasures;\r
+\r
+    // Points to quantity position, -1 if the position is not set yet.\r
+    int32_t indexOfQuantity = -1;\r
+\r
     // Number of mixedMeasures that have been populated\r
     int32_t mixedMeasuresCount = 0;\r
 \r
index 329ff6d..c198eed 100644 (file)
@@ -46,6 +46,7 @@ Scale::Scale(const Scale& other)
 }\r
 \r
 Scale& Scale::operator=(const Scale& other) {\r
+    if (this == &other) { return *this; }  // self-assignment: no-op\r
     fMagnitude = other.fMagnitude;\r
     if (other.fArbitrary != nullptr) {\r
         UErrorCode localStatus = U_ZERO_ERROR;\r
index 87296e8..483cfbe 100644 (file)
@@ -39,6 +39,11 @@ MeasureUnit FormattedNumber::getOutputUnit(UErrorCode& status) const {
     return fData->outputUnit;\r
 }\r
 \r
+const char *FormattedNumber::getGender(UErrorCode &status) const {\r
+    UPRV_FORMATTED_VALUE_METHOD_GUARD("")\r
+    return fData->gender;\r
+}\r
+\r
 void FormattedNumber::getDecimalQuantity(impl::DecimalQuantity& output, UErrorCode& status) const {\r
     UPRV_FORMATTED_VALUE_METHOD_GUARD(UPRV_NOARG)\r
     output = fData->quantity;\r
@@ -52,16 +57,6 @@ UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(FormattedNumberRange)
 \r
 #define UPRV_NOARG\r
 \r
-UnicodeString FormattedNumberRange::getFirstDecimal(UErrorCode& status) const {\r
-    UPRV_FORMATTED_VALUE_METHOD_GUARD(ICU_Utility::makeBogusString())\r
-    return fData->quantity1.toScientificString();\r
-}\r
-\r
-UnicodeString FormattedNumberRange::getSecondDecimal(UErrorCode& status) const {\r
-    UPRV_FORMATTED_VALUE_METHOD_GUARD(ICU_Utility::makeBogusString())\r
-    return fData->quantity2.toScientificString();\r
-}\r
-\r
 void FormattedNumberRange::getDecimalNumbers(ByteSink& sink1, ByteSink& sink2, UErrorCode& status) const {\r
     UPRV_FORMATTED_VALUE_METHOD_GUARD(UPRV_NOARG)\r
     impl::DecNum decnum1;\r
index 07c59f4..1874abe 100644 (file)
@@ -1106,6 +1106,20 @@ PatternSignType PatternStringUtils::resolveSignDisplay(UNumberSignDisplay signDi
             }\r
             break;\r
 \r
+        case UNUM_SIGN_NEGATIVE:\r
+        case UNUM_SIGN_ACCOUNTING_NEGATIVE:\r
+            switch (signum) {\r
+                case SIGNUM_NEG:\r
+                    return PATTERN_SIGN_TYPE_NEG;\r
+                case SIGNUM_NEG_ZERO:\r
+                case SIGNUM_POS_ZERO:\r
+                case SIGNUM_POS:\r
+                    return PATTERN_SIGN_TYPE_POS;\r
+                default:\r
+                    break;\r
+            }\r
+            break;\r
+\r
         case UNUM_SIGN_NEVER:\r
             return PATTERN_SIGN_TYPE_POS;\r
 \r
index 3cc2687..633bc50 100644 (file)
@@ -193,6 +193,12 @@ Precision Precision::minMaxSignificantDigits(int32_t minSignificantDigits, int32
     }\r
 }\r
 \r
+Precision Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay trailingZeroDisplay) const {\r
+    Precision result(*this); // copy constructor\r
+    result.fTrailingZeroDisplay = trailingZeroDisplay;\r
+    return result;\r
+}\r
+\r
 IncrementPrecision Precision::increment(double roundingIncrement) {\r
     if (roundingIncrement > 0.0) {\r
         return constructIncrement(roundingIncrement, 0);\r
@@ -205,10 +211,32 @@ CurrencyPrecision Precision::currency(UCurrencyUsage currencyUsage) {
     return constructCurrency(currencyUsage);\r
 }\r
 \r
+Precision FractionPrecision::withSignificantDigits(\r
+        int32_t minSignificantDigits,\r
+        int32_t maxSignificantDigits,\r
+        UNumberRoundingPriority priority) const {\r
+    if (fType == RND_ERROR) { return *this; } // no-op in error state\r
+    if (minSignificantDigits >= 1 &&\r
+            maxSignificantDigits >= minSignificantDigits &&\r
+            maxSignificantDigits <= kMaxIntFracSig) {\r
+        return constructFractionSignificant(\r
+            *this,\r
+            minSignificantDigits,\r
+            maxSignificantDigits,\r
+            priority);\r
+    } else {\r
+        return {U_NUMBER_ARG_OUTOFBOUNDS_ERROR};\r
+    }\r
+}\r
+\r
 Precision FractionPrecision::withMinDigits(int32_t minSignificantDigits) const {\r
     if (fType == RND_ERROR) { return *this; } // no-op in error state\r
     if (minSignificantDigits >= 1 && minSignificantDigits <= kMaxIntFracSig) {\r
-        return constructFractionSignificant(*this, minSignificantDigits, -1);\r
+        return constructFractionSignificant(\r
+            *this,\r
+            1,\r
+            minSignificantDigits,\r
+            UNUM_ROUNDING_PRIORITY_RELAXED);\r
     } else {\r
         return {U_NUMBER_ARG_OUTOFBOUNDS_ERROR};\r
     }\r
@@ -217,7 +245,10 @@ Precision FractionPrecision::withMinDigits(int32_t minSignificantDigits) const {
 Precision FractionPrecision::withMaxDigits(int32_t maxSignificantDigits) const {\r
     if (fType == RND_ERROR) { return *this; } // no-op in error state\r
     if (maxSignificantDigits >= 1 && maxSignificantDigits <= kMaxIntFracSig) {\r
-        return constructFractionSignificant(*this, -1, maxSignificantDigits);\r
+        return constructFractionSignificant(*this,\r
+            1,\r
+            maxSignificantDigits,\r
+            UNUM_ROUNDING_PRIORITY_STRICT);\r
     } else {\r
         return {U_NUMBER_ARG_OUTOFBOUNDS_ERROR};\r
     }\r
@@ -231,11 +262,11 @@ Precision Precision::withCurrency(const CurrencyUnit &currency, UErrorCode &stat
     double increment = ucurr_getRoundingIncrementForUsage(isoCode, fUnion.currencyUsage, &status);\r
     int32_t minMaxFrac = ucurr_getDefaultFractionDigitsForUsage(\r
             isoCode, fUnion.currencyUsage, &status);\r
-    if (increment != 0.0) {\r
-        return constructIncrement(increment, minMaxFrac);\r
-    } else {\r
-        return constructFraction(minMaxFrac, minMaxFrac);\r
-    }\r
+    Precision retval = (increment != 0.0)\r
+        ? static_cast<Precision>(constructIncrement(increment, minMaxFrac))\r
+        : static_cast<Precision>(constructFraction(minMaxFrac, minMaxFrac));\r
+    retval.fTrailingZeroDisplay = fTrailingZeroDisplay;\r
+    return retval;\r
 }\r
 \r
 // Public method on CurrencyPrecision subclass\r
@@ -280,10 +311,15 @@ Precision Precision::constructSignificant(int32_t minSig, int32_t maxSig) {
 }\r
 \r
 Precision\r
-Precision::constructFractionSignificant(const FractionPrecision &base, int32_t minSig, int32_t maxSig) {\r
+Precision::constructFractionSignificant(\r
+        const FractionPrecision &base,\r
+        int32_t minSig,\r
+        int32_t maxSig,\r
+        UNumberRoundingPriority priority) {\r
     FractionSignificantSettings settings = base.fUnion.fracSig;\r
     settings.fMinSig = static_cast<digits_t>(minSig);\r
     settings.fMaxSig = static_cast<digits_t>(maxSig);\r
+    settings.fPriority = priority;\r
     PrecisionUnion union_;\r
     union_.fracSig = settings;\r
     return {RND_FRACTION_SIGNIFICANT, union_};\r
@@ -383,6 +419,7 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const
     if (fPassThrough) {\r
         return;\r
     }\r
+    int32_t resolvedMinFraction = 0;\r
     switch (fPrecision.fType) {\r
         case Precision::RND_BOGUS:\r
         case Precision::RND_ERROR:\r
@@ -399,8 +436,8 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const
                     getRoundingMagnitudeFraction(fPrecision.fUnion.fracSig.fMaxFrac),\r
                     fRoundingMode,\r
                     status);\r
-            value.setMinFraction(\r
-                    uprv_max(0, -getDisplayMagnitudeFraction(fPrecision.fUnion.fracSig.fMinFrac)));\r
+            resolvedMinFraction =\r
+                    uprv_max(0, -getDisplayMagnitudeFraction(fPrecision.fUnion.fracSig.fMinFrac));\r
             break;\r
 \r
         case Precision::RND_SIGNIFICANT:\r
@@ -408,8 +445,8 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const
                     getRoundingMagnitudeSignificant(value, fPrecision.fUnion.fracSig.fMaxSig),\r
                     fRoundingMode,\r
                     status);\r
-            value.setMinFraction(\r
-                    uprv_max(0, -getDisplayMagnitudeSignificant(value, fPrecision.fUnion.fracSig.fMinSig)));\r
+            resolvedMinFraction =\r
+                    uprv_max(0, -getDisplayMagnitudeSignificant(value, fPrecision.fUnion.fracSig.fMinSig));\r
             // Make sure that digits are displayed on zero.\r
             if (value.isZeroish() && fPrecision.fUnion.fracSig.fMinSig > 0) {\r
                 value.setMinInteger(1);\r
@@ -417,23 +454,21 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const
             break;\r
 \r
         case Precision::RND_FRACTION_SIGNIFICANT: {\r
-            int32_t displayMag = getDisplayMagnitudeFraction(fPrecision.fUnion.fracSig.fMinFrac);\r
-            int32_t roundingMag = getRoundingMagnitudeFraction(fPrecision.fUnion.fracSig.fMaxFrac);\r
-            if (fPrecision.fUnion.fracSig.fMinSig == -1) {\r
-                // Max Sig override\r
-                int32_t candidate = getRoundingMagnitudeSignificant(\r
-                        value,\r
-                        fPrecision.fUnion.fracSig.fMaxSig);\r
-                roundingMag = uprv_max(roundingMag, candidate);\r
+            int32_t roundingMag1 = getRoundingMagnitudeFraction(fPrecision.fUnion.fracSig.fMaxFrac);\r
+            int32_t roundingMag2 = getRoundingMagnitudeSignificant(value, fPrecision.fUnion.fracSig.fMaxSig);\r
+            int32_t roundingMag;\r
+            if (fPrecision.fUnion.fracSig.fPriority == UNUM_ROUNDING_PRIORITY_RELAXED) {\r
+                roundingMag = uprv_min(roundingMag1, roundingMag2);\r
             } else {\r
-                // Min Sig override\r
-                int32_t candidate = getDisplayMagnitudeSignificant(\r
-                        value,\r
-                        fPrecision.fUnion.fracSig.fMinSig);\r
-                roundingMag = uprv_min(roundingMag, candidate);\r
+                roundingMag = uprv_max(roundingMag1, roundingMag2);\r
             }\r
             value.roundToMagnitude(roundingMag, fRoundingMode, status);\r
-            value.setMinFraction(uprv_max(0, -displayMag));\r
+\r
+            int32_t displayMag1 = getDisplayMagnitudeFraction(fPrecision.fUnion.fracSig.fMinFrac);\r
+            int32_t displayMag2 = getDisplayMagnitudeSignificant(value, fPrecision.fUnion.fracSig.fMinSig);\r
+            int32_t displayMag = uprv_min(displayMag1, displayMag2);\r
+            resolvedMinFraction = uprv_max(0, -displayMag);\r
+\r
             break;\r
         }\r
 \r
@@ -442,7 +477,7 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const
                     fPrecision.fUnion.increment.fIncrement,\r
                     fRoundingMode,\r
                     status);\r
-            value.setMinFraction(fPrecision.fUnion.increment.fMinFrac);\r
+            resolvedMinFraction = fPrecision.fUnion.increment.fMinFrac;\r
             break;\r
 \r
         case Precision::RND_INCREMENT_ONE:\r
@@ -450,7 +485,7 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const
                     -fPrecision.fUnion.increment.fMaxFrac,\r
                     fRoundingMode,\r
                     status);\r
-            value.setMinFraction(fPrecision.fUnion.increment.fMinFrac);\r
+            resolvedMinFraction = fPrecision.fUnion.increment.fMinFrac;\r
             break;\r
 \r
         case Precision::RND_INCREMENT_FIVE:\r
@@ -458,7 +493,7 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const
                     -fPrecision.fUnion.increment.fMaxFrac,\r
                     fRoundingMode,\r
                     status);\r
-            value.setMinFraction(fPrecision.fUnion.increment.fMinFrac);\r
+            resolvedMinFraction = fPrecision.fUnion.increment.fMinFrac;\r
             break;\r
 \r
         case Precision::RND_CURRENCY:\r
@@ -468,10 +503,17 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const
         default:\r
             UPRV_UNREACHABLE;\r
     }\r
+\r
+    if (fPrecision.fTrailingZeroDisplay == UNUM_TRAILING_ZERO_AUTO ||\r
+            // PLURAL_OPERAND_T returns fraction digits as an integer\r
+            value.getPluralOperand(PLURAL_OPERAND_T) != 0) {\r
+        value.setMinFraction(resolvedMinFraction);\r
+    }\r
 }\r
 \r
 void RoundingImpl::apply(impl::DecimalQuantity &value, int32_t minInt, UErrorCode /*status*/) {\r
     // This method is intended for the one specific purpose of helping print "00.000E0".\r
+    // Question: Is it useful to look at trailingZeroDisplay here?\r
     U_ASSERT(isSignificantDigits());\r
     U_ASSERT(value.isZeroish());\r
     value.setMinFraction(fPrecision.fUnion.fracSig.fMinSig - minInt);\r
index 69e15b3..4a7aa0d 100644 (file)
@@ -104,6 +104,45 @@ getRoundingDirection(bool isEven, bool isNegative, Section section, RoundingMode
             }\r
             break;\r
 \r
+        case RoundingMode::UNUM_ROUND_HALF_ODD:\r
+            switch (section) {\r
+                case SECTION_MIDPOINT:\r
+                    return !isEven;\r
+                case SECTION_LOWER:\r
+                    return true;\r
+                case SECTION_UPPER:\r
+                    return false;\r
+                default:\r
+                    break;\r
+            }\r
+            break;\r
+\r
+        case RoundingMode::UNUM_ROUND_HALF_CEILING:\r
+            switch (section) {\r
+                case SECTION_MIDPOINT:\r
+                    return isNegative;\r
+                case SECTION_LOWER:\r
+                    return true;\r
+                case SECTION_UPPER:\r
+                    return false;\r
+                default:\r
+                    break;\r
+            }\r
+            break;\r
+\r
+        case RoundingMode::UNUM_ROUND_HALF_FLOOR:\r
+            switch (section) {\r
+                case SECTION_MIDPOINT:\r
+                    return !isNegative;\r
+                case SECTION_LOWER:\r
+                    return true;\r
+                case SECTION_UPPER:\r
+                    return false;\r
+                default:\r
+                    break;\r
+            }\r
+            break;\r
+\r
         default:\r
             break;\r
     }\r
@@ -204,7 +243,7 @@ class RoundingImpl {
  * - see blueprint_helpers::parseIncrementOption().\r
  *\r
  * Referencing MacroProps means needing to pull in the .o files that have the\r
- * destructors for the SymbolsWrapper, Usage, and Scale classes.\r
+ * destructors for the SymbolsWrapper, StringProp, and Scale classes.\r
  */\r
 void parseIncrementOption(const StringSegment &segment, Precision &outPrecision, UErrorCode &status);\r
 \r
index 464ab6a..0d3cb40 100644 (file)
@@ -68,6 +68,9 @@ void U_CALLCONV initNumberSkeletons(UErrorCode& status) {
     b.add(u"rounding-mode-down", STEM_ROUNDING_MODE_DOWN, status);\r
     b.add(u"rounding-mode-up", STEM_ROUNDING_MODE_UP, status);\r
     b.add(u"rounding-mode-half-even", STEM_ROUNDING_MODE_HALF_EVEN, status);\r
+    b.add(u"rounding-mode-half-odd", STEM_ROUNDING_MODE_HALF_ODD, status);\r
+    b.add(u"rounding-mode-half-ceiling", STEM_ROUNDING_MODE_HALF_CEILING, status);\r
+    b.add(u"rounding-mode-half-floor", STEM_ROUNDING_MODE_HALF_FLOOR, status);\r
     b.add(u"rounding-mode-half-down", STEM_ROUNDING_MODE_HALF_DOWN, status);\r
     b.add(u"rounding-mode-half-up", STEM_ROUNDING_MODE_HALF_UP, status);\r
     b.add(u"rounding-mode-unnecessary", STEM_ROUNDING_MODE_UNNECESSARY, status);\r
@@ -91,6 +94,8 @@ void U_CALLCONV initNumberSkeletons(UErrorCode& status) {
     b.add(u"sign-accounting-always", STEM_SIGN_ACCOUNTING_ALWAYS, status);\r
     b.add(u"sign-except-zero", STEM_SIGN_EXCEPT_ZERO, status);\r
     b.add(u"sign-accounting-except-zero", STEM_SIGN_ACCOUNTING_EXCEPT_ZERO, status);\r
+    b.add(u"sign-negative", STEM_SIGN_NEGATIVE, status);\r
+    b.add(u"sign-accounting-negative", STEM_SIGN_ACCOUNTING_NEGATIVE, status);\r
     b.add(u"decimal-auto", STEM_DECIMAL_AUTO, status);\r
     b.add(u"decimal-always", STEM_DECIMAL_ALWAYS, status);\r
     if (U_FAILURE(status)) { return; }\r
@@ -121,6 +126,8 @@ void U_CALLCONV initNumberSkeletons(UErrorCode& status) {
     b.add(u"()!", STEM_SIGN_ACCOUNTING_ALWAYS, status);\r
     b.add(u"+?", STEM_SIGN_EXCEPT_ZERO, status);\r
     b.add(u"()?", STEM_SIGN_ACCOUNTING_EXCEPT_ZERO, status);\r
+    b.add(u"+-", STEM_SIGN_NEGATIVE, status);\r
+    b.add(u"()-", STEM_SIGN_ACCOUNTING_NEGATIVE, status);\r
     if (U_FAILURE(status)) { return; }\r
 \r
     // Build the CharsTrie\r
@@ -213,6 +220,12 @@ UNumberFormatRoundingMode stem_to_object::roundingMode(skeleton::StemEnum stem)
             return UNUM_ROUND_UP;\r
         case STEM_ROUNDING_MODE_HALF_EVEN:\r
             return UNUM_ROUND_HALFEVEN;\r
+        case STEM_ROUNDING_MODE_HALF_ODD:\r
+            return UNUM_ROUND_HALF_ODD;\r
+        case STEM_ROUNDING_MODE_HALF_CEILING:\r
+            return UNUM_ROUND_HALF_CEILING;\r
+        case STEM_ROUNDING_MODE_HALF_FLOOR:\r
+            return UNUM_ROUND_HALF_FLOOR;\r
         case STEM_ROUNDING_MODE_HALF_DOWN:\r
             return UNUM_ROUND_HALFDOWN;\r
         case STEM_ROUNDING_MODE_HALF_UP:\r
@@ -278,6 +291,10 @@ UNumberSignDisplay stem_to_object::signDisplay(skeleton::StemEnum stem) {
             return UNUM_SIGN_EXCEPT_ZERO;\r
         case STEM_SIGN_ACCOUNTING_EXCEPT_ZERO:\r
             return UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO;\r
+        case STEM_SIGN_NEGATIVE:\r
+            return UNUM_SIGN_NEGATIVE;\r
+        case STEM_SIGN_ACCOUNTING_NEGATIVE:\r
+            return UNUM_SIGN_ACCOUNTING_NEGATIVE;\r
         default:\r
             return UNUM_SIGN_COUNT; // for objects, throw; for enums, return COUNT\r
     }\r
@@ -312,6 +329,15 @@ void enum_to_stem_string::roundingMode(UNumberFormatRoundingMode value, UnicodeS
         case UNUM_ROUND_HALFEVEN:\r
             sb.append(u"rounding-mode-half-even", -1);\r
             break;\r
+        case UNUM_ROUND_HALF_ODD:\r
+            sb.append(u"rounding-mode-half-odd", -1);\r
+            break;\r
+        case UNUM_ROUND_HALF_CEILING:\r
+            sb.append(u"rounding-mode-half-ceiling", -1);\r
+            break;\r
+        case UNUM_ROUND_HALF_FLOOR:\r
+            sb.append(u"rounding-mode-half-floor", -1);\r
+            break;\r
         case UNUM_ROUND_HALFDOWN:\r
             sb.append(u"rounding-mode-half-down", -1);\r
             break;\r
@@ -399,6 +425,12 @@ void enum_to_stem_string::signDisplay(UNumberSignDisplay value, UnicodeString& s
         case UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO:\r
             sb.append(u"sign-accounting-except-zero", -1);\r
             break;\r
+        case UNUM_SIGN_NEGATIVE:\r
+            sb.append(u"sign-negative", -1);\r
+            break;\r
+        case UNUM_SIGN_ACCOUNTING_NEGATIVE:\r
+            sb.append(u"sign-accounting-negative", -1);\r
+            break;\r
         default:\r
             UPRV_UNREACHABLE;\r
     }\r
@@ -584,7 +616,7 @@ skeleton::parseStem(const StringSegment& segment, const UCharsTrie& stemTrie, Se
         case u'@':\r
             CHECK_NULL(seen, precision, status);\r
             blueprint_helpers::parseDigitsStem(segment, macros, status);\r
-            return STATE_NULL;\r
+            return STATE_PRECISION;\r
         case u'E':\r
             CHECK_NULL(seen, notation, status);\r
             blueprint_helpers::parseScientificStem(segment, macros, status);\r
@@ -650,7 +682,7 @@ skeleton::parseStem(const StringSegment& segment, const UCharsTrie& stemTrie, Se
                 case STEM_PRECISION_INTEGER:\r
                     return STATE_FRACTION_PRECISION; // allows for "precision-integer/@##"\r
                 default:\r
-                    return STATE_NULL;\r
+                    return STATE_PRECISION;\r
             }\r
 \r
         case STEM_ROUNDING_MODE_CEILING:\r
@@ -658,6 +690,9 @@ skeleton::parseStem(const StringSegment& segment, const UCharsTrie& stemTrie, Se
         case STEM_ROUNDING_MODE_DOWN:\r
         case STEM_ROUNDING_MODE_UP:\r
         case STEM_ROUNDING_MODE_HALF_EVEN:\r
+        case STEM_ROUNDING_MODE_HALF_ODD:\r
+        case STEM_ROUNDING_MODE_HALF_CEILING:\r
+        case STEM_ROUNDING_MODE_HALF_FLOOR:\r
         case STEM_ROUNDING_MODE_HALF_DOWN:\r
         case STEM_ROUNDING_MODE_HALF_UP:\r
         case STEM_ROUNDING_MODE_UNNECESSARY:\r
@@ -697,6 +732,8 @@ skeleton::parseStem(const StringSegment& segment, const UCharsTrie& stemTrie, Se
         case STEM_SIGN_ACCOUNTING_ALWAYS:\r
         case STEM_SIGN_EXCEPT_ZERO:\r
         case STEM_SIGN_ACCOUNTING_EXCEPT_ZERO:\r
+        case STEM_SIGN_NEGATIVE:\r
+        case STEM_SIGN_ACCOUNTING_NEGATIVE:\r
             CHECK_NULL(seen, sign, status);\r
             macros.sign = stem_to_object::signDisplay(stem);\r
             return STATE_NULL;\r
@@ -776,7 +813,7 @@ ParseState skeleton::parseOption(ParseState stem, const StringSegment& segment,
             return STATE_NULL;\r
         case STATE_INCREMENT_PRECISION:\r
             blueprint_helpers::parseIncrementOption(segment, macros, status);\r
-            return STATE_NULL;\r
+            return STATE_PRECISION;\r
         case STATE_INTEGER_WIDTH:\r
             blueprint_helpers::parseIntegerWidthOption(segment, macros, status);\r
             return STATE_NULL;\r
@@ -816,6 +853,22 @@ ParseState skeleton::parseOption(ParseState stem, const StringSegment& segment,
     switch (stem) {\r
         case STATE_FRACTION_PRECISION:\r
             if (blueprint_helpers::parseFracSigOption(segment, macros, status)) {\r
+                return STATE_PRECISION;\r
+            }\r
+            if (U_FAILURE(status)) {\r
+                return {};\r
+            }\r
+            // If the fracSig option was not found, try normal precision options.\r
+            stem = STATE_PRECISION;\r
+            break;\r
+        default:\r
+            break;\r
+    }\r
+\r
+    // Trailing zeros option\r
+    switch (stem) {\r
+        case STATE_PRECISION:\r
+            if (blueprint_helpers::parseTrailingZeroOption(segment, macros, status)) {\r
                 return STATE_NULL;\r
             }\r
             if (U_FAILURE(status)) {\r
@@ -890,6 +943,10 @@ void GeneratorHelpers::generateSkeleton(const MacroProps& macros, UnicodeString&
         status = U_UNSUPPORTED_ERROR;\r
         return;\r
     }\r
+    if (macros.unitDisplayCase.isSet()) {\r
+        status = U_UNSUPPORTED_ERROR;\r
+        return;\r
+    }\r
     if (macros.affixProvider != nullptr) {\r
         status = U_UNSUPPORTED_ERROR;\r
         return;\r
@@ -1041,37 +1098,12 @@ void blueprint_helpers::parseIdentifierUnitOption(const StringSegment& segment,
     SKELETON_UCHAR_TO_CHAR(buffer, segment.toTempUnicodeString(), 0, segment.length(), status);\r
 \r
     ErrorCode internalStatus;\r
-    auto fullUnit = MeasureUnitImpl::forIdentifier(buffer.toStringPiece(), internalStatus);\r
+    macros.unit = MeasureUnit::forIdentifier(buffer.toStringPiece(), internalStatus);\r
     if (internalStatus.isFailure()) {\r
         // throw new SkeletonSyntaxException("Invalid core unit identifier", segment, e);\r
         status = U_NUMBER_SKELETON_SYNTAX_ERROR;\r
         return;\r
     }\r
-\r
-    // Mixed units can only be represented by full MeasureUnit instances, so we\r
-    // don't split the denominator into macros.perUnit.\r
-    if (fullUnit.complexity == UMEASURE_UNIT_MIXED) {\r
-        macros.unit = std::move(fullUnit).build(status);\r
-        return;\r
-    }\r
-\r
-    // When we have a built-in unit (e.g. meter-per-second), we don't split it up\r
-    MeasureUnit testBuiltin = fullUnit.copy(status).build(status);\r
-    if (uprv_strcmp(testBuiltin.getType(), "") != 0) {\r
-        macros.unit = std::move(testBuiltin);\r
-        return;\r
-    }\r
-\r
-    // TODO(ICU-20941): Clean this up.\r
-    for (int32_t i = 0; i < fullUnit.units.length(); i++) {\r
-        SingleUnitImpl* subUnit = fullUnit.units[i];\r
-        if (subUnit->dimensionality > 0) {\r
-            macros.unit = macros.unit.product(subUnit->build(status), status);\r
-        } else {\r
-            subUnit->dimensionality *= -1;\r
-            macros.perUnit = macros.perUnit.product(subUnit->build(status), status);\r
-        }\r
-    }\r
 }\r
 \r
 void blueprint_helpers::parseUnitUsageOption(const StringSegment &segment, MacroProps &macros,\r
@@ -1226,6 +1258,7 @@ void blueprint_helpers::parseScientificStem(const StringSegment& segment, MacroP
             } else if (segment.charAt(offset) == u'?') {\r
                 signDisplay = UNUM_SIGN_EXCEPT_ZERO;\r
             } else {\r
+                // NOTE: Other sign displays are not included because they aren't useful in this context\r
                 goto fail;\r
             }\r
             offset++;\r
@@ -1284,21 +1317,14 @@ bool blueprint_helpers::parseFracSigOption(const StringSegment& segment, MacroPr
             break;\r
         }\r
     }\r
-    // For the frac-sig option, there must be minSig or maxSig but not both.\r
-    // Valid: @+, @@+, @@@+\r
-    // Valid: @#, @##, @###\r
-    // Invalid: @, @@, @@@\r
-    // Invalid: @@#, @@##, @@@#\r
     if (offset < segment.length()) {\r
         if (isWildcardChar(segment.charAt(offset))) {\r
+            // @+, @@+, @@@+\r
             maxSig = -1;\r
             offset++;\r
-        } else if (minSig > 1) {\r
-            // @@#, @@##, @@@#\r
-            // throw new SkeletonSyntaxException("Invalid digits option for fraction rounder", segment);\r
-            status = U_NUMBER_SKELETON_SYNTAX_ERROR;\r
-            return false;\r
         } else {\r
+            // @#, @##, @###\r
+            // @@#, @@##, @@@#\r
             maxSig = minSig;\r
             for (; offset < segment.length(); offset++) {\r
                 if (segment.charAt(offset) == u'#') {\r
@@ -1310,25 +1336,56 @@ bool blueprint_helpers::parseFracSigOption(const StringSegment& segment, MacroPr
         }\r
     } else {\r
         // @, @@, @@@\r
-        // throw new SkeletonSyntaxException("Invalid digits option for fraction rounder", segment);\r
-        status = U_NUMBER_SKELETON_SYNTAX_ERROR;\r
-        return false;\r
+        maxSig = minSig;\r
     }\r
+    UNumberRoundingPriority priority;\r
     if (offset < segment.length()) {\r
-        // throw new SkeletonSyntaxException("Invalid digits option for fraction rounder", segment);\r
+        if (maxSig == -1) {\r
+            // The wildcard character is not allowed with the priority annotation\r
+            status = U_NUMBER_SKELETON_SYNTAX_ERROR;\r
+            return false;\r
+        }\r
+        if (segment.codePointAt(offset) == u'r') {\r
+            priority = UNUM_ROUNDING_PRIORITY_RELAXED;\r
+            offset++;\r
+        } else if (segment.codePointAt(offset) == u's') {\r
+            priority = UNUM_ROUNDING_PRIORITY_STRICT;\r
+            offset++;\r
+        } else {\r
+            U_ASSERT(offset < segment.length());\r
+        }\r
+        if (offset < segment.length()) {\r
+            // Invalid digits option for fraction rounder\r
+            status = U_NUMBER_SKELETON_SYNTAX_ERROR;\r
+            return false;\r
+        }\r
+    } else if (maxSig == -1) {\r
+        // withMinDigits\r
+        maxSig = minSig;\r
+        minSig = 1;\r
+        priority = UNUM_ROUNDING_PRIORITY_RELAXED;\r
+    } else if (minSig == 1) {\r
+        // withMaxDigits\r
+        priority = UNUM_ROUNDING_PRIORITY_STRICT;\r
+    } else {\r
+        // Digits options with both min and max sig require the priority option\r
         status = U_NUMBER_SKELETON_SYNTAX_ERROR;\r
         return false;\r
     }\r
 \r
     auto& oldPrecision = static_cast<const FractionPrecision&>(macros.precision);\r
-    if (maxSig == -1) {\r
-        macros.precision = oldPrecision.withMinDigits(minSig);\r
-    } else {\r
-        macros.precision = oldPrecision.withMaxDigits(maxSig);\r
-    }\r
+    macros.precision = oldPrecision.withSignificantDigits(minSig, maxSig, priority);\r
     return true;\r
 }\r
 \r
+bool blueprint_helpers::parseTrailingZeroOption(const StringSegment& segment, MacroProps& macros, UErrorCode&) {\r
+    if (segment == u"w") {\r
+        macros.precision = macros.precision.trailingZeroDisplay(UNUM_TRAILING_ZERO_HIDE_IF_WHOLE);\r
+        return true;\r
+    }\r
+    return false;\r
+}\r
+\r
 void blueprint_helpers::parseIncrementOption(const StringSegment &segment, MacroProps &macros,\r
                                              UErrorCode &status) {\r
     number::impl::parseIncrementOption(segment, macros.precision, status);\r
@@ -1537,7 +1594,7 @@ bool GeneratorHelpers::unit(const MacroProps& macros, UnicodeString& sb, UErrorC
 bool GeneratorHelpers::usage(const MacroProps& macros, UnicodeString& sb, UErrorCode& /* status */) {\r
     if (macros.usage.isSet()) {\r
         sb.append(u"usage/", -1);\r
-        sb.append(UnicodeString(macros.usage.fUsage, -1, US_INV));\r
+        sb.append(UnicodeString(macros.usage.fValue, -1, US_INV));\r
         return true;\r
     }\r
     return false;\r
@@ -1556,10 +1613,11 @@ bool GeneratorHelpers::precision(const MacroProps& macros, UnicodeString& sb, UE
         const Precision::FractionSignificantSettings& impl = macros.precision.fUnion.fracSig;\r
         blueprint_helpers::generateFractionStem(impl.fMinFrac, impl.fMaxFrac, sb, status);\r
         sb.append(u'/');\r
-        if (impl.fMinSig == -1) {\r
-            blueprint_helpers::generateDigitsStem(1, impl.fMaxSig, sb, status);\r
+        blueprint_helpers::generateDigitsStem(impl.fMinSig, impl.fMaxSig, sb, status);\r
+        if (impl.fPriority == UNUM_ROUNDING_PRIORITY_RELAXED) {\r
+            sb.append(u'r');\r
         } else {\r
-            blueprint_helpers::generateDigitsStem(impl.fMinSig, -1, sb, status);\r
+            sb.append(u's');\r
         }\r
     } else if (macros.precision.fType == Precision::RND_INCREMENT\r
             || macros.precision.fType == Precision::RND_INCREMENT_ONE\r
@@ -1583,6 +1641,10 @@ bool GeneratorHelpers::precision(const MacroProps& macros, UnicodeString& sb, UE
         return false;\r
     }\r
 \r
+    if (macros.precision.fTrailingZeroDisplay == UNUM_TRAILING_ZERO_HIDE_IF_WHOLE) {\r
+        sb.append(u"/w", -1);\r
+    }\r
+\r
     // NOTE: Always return true for rounding because the default value depends on other options.\r
     return true;\r
 }\r
index cd3acbc..396d865 100644 (file)
@@ -42,6 +42,7 @@ enum ParseState {
 \r
     STATE_SCIENTIFIC,\r
     STATE_FRACTION_PRECISION,\r
+    STATE_PRECISION,\r
 \r
     // Section 2: An option is required:\r
 \r
@@ -85,6 +86,9 @@ enum StemEnum {
     STEM_ROUNDING_MODE_DOWN,\r
     STEM_ROUNDING_MODE_UP,\r
     STEM_ROUNDING_MODE_HALF_EVEN,\r
+    STEM_ROUNDING_MODE_HALF_ODD,\r
+    STEM_ROUNDING_MODE_HALF_CEILING,\r
+    STEM_ROUNDING_MODE_HALF_FLOOR,\r
     STEM_ROUNDING_MODE_HALF_DOWN,\r
     STEM_ROUNDING_MODE_HALF_UP,\r
     STEM_ROUNDING_MODE_UNNECESSARY,\r
@@ -108,6 +112,8 @@ enum StemEnum {
     STEM_SIGN_ACCOUNTING_ALWAYS,\r
     STEM_SIGN_EXCEPT_ZERO,\r
     STEM_SIGN_ACCOUNTING_EXCEPT_ZERO,\r
+    STEM_SIGN_NEGATIVE,\r
+    STEM_SIGN_ACCOUNTING_NEGATIVE,\r
     STEM_DECIMAL_AUTO,\r
     STEM_DECIMAL_ALWAYS,\r
 \r
@@ -273,6 +279,9 @@ void parseIntegerStem(const StringSegment& segment, MacroProps& macros, UErrorCo
 /** @return Whether we successfully found and parsed a frac-sig option. */\r
 bool parseFracSigOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);\r
 \r
+/** @return Whether we successfully found and parsed a trailing zero option. */\r
+bool parseTrailingZeroOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);\r
+\r
 void parseIncrementOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);\r
 \r
 void\r
index 8a82d10..db3e63b 100644 (file)
@@ -28,116 +28,124 @@ using icu::StringSegment;
 using icu::units::ConversionRates;\r
 \r
 // Copy constructor\r
-Usage::Usage(const Usage &other) : Usage() {\r
+StringProp::StringProp(const StringProp &other) : StringProp() {\r
     this->operator=(other);\r
 }\r
 \r
 // Copy assignment operator\r
-Usage &Usage::operator=(const Usage &other) {\r
+StringProp &StringProp::operator=(const StringProp &other) {\r
+    if (this == &other) { return *this; }  // self-assignment: no-op\r
     fLength = 0;\r
     fError = other.fError;\r
-    if (fUsage != nullptr) {\r
-        uprv_free(fUsage);\r
-        fUsage = nullptr;\r
+    if (fValue != nullptr) {\r
+        uprv_free(fValue);\r
+        fValue = nullptr;\r
     }\r
-    if (other.fUsage == nullptr) {\r
+    if (other.fValue == nullptr) {\r
         return *this;\r
     }\r
     if (U_FAILURE(other.fError)) {\r
         // We don't bother trying to allocating memory if we're in any case busy\r
-        // copying an errored Usage.\r
+        // copying an errored StringProp.\r
         return *this;\r
     }\r
-    fUsage = (char *)uprv_malloc(other.fLength + 1);\r
-    if (fUsage == nullptr) {\r
+    fValue = (char *)uprv_malloc(other.fLength + 1);\r
+    if (fValue == nullptr) {\r
         fError = U_MEMORY_ALLOCATION_ERROR;\r
         return *this;\r
     }\r
     fLength = other.fLength;\r
-    uprv_strncpy(fUsage, other.fUsage, fLength + 1);\r
+    uprv_strncpy(fValue, other.fValue, fLength + 1);\r
     return *this;\r
 }\r
 \r
 // Move constructor\r
-Usage::Usage(Usage &&src) U_NOEXCEPT : fUsage(src.fUsage), fLength(src.fLength), fError(src.fError) {\r
+StringProp::StringProp(StringProp &&src) U_NOEXCEPT : fValue(src.fValue),\r
+                                                      fLength(src.fLength),\r
+                                                      fError(src.fError) {\r
     // Take ownership away from src if necessary\r
-    src.fUsage = nullptr;\r
+    src.fValue = nullptr;\r
 }\r
 \r
 // Move assignment operator\r
-Usage &Usage::operator=(Usage &&src) U_NOEXCEPT {\r
+StringProp &StringProp::operator=(StringProp &&src) U_NOEXCEPT {\r
     if (this == &src) {\r
         return *this;\r
     }\r
-    if (fUsage != nullptr) {\r
-        uprv_free(fUsage);\r
+    if (fValue != nullptr) {\r
+        uprv_free(fValue);\r
     }\r
-    fUsage = src.fUsage;\r
+    fValue = src.fValue;\r
     fLength = src.fLength;\r
     fError = src.fError;\r
     // Take ownership away from src if necessary\r
-    src.fUsage = nullptr;\r
+    src.fValue = nullptr;\r
     return *this;\r
 }\r
 \r
-Usage::~Usage() {\r
-    if (fUsage != nullptr) {\r
-        uprv_free(fUsage);\r
-        fUsage = nullptr;\r
+StringProp::~StringProp() {\r
+    if (fValue != nullptr) {\r
+        uprv_free(fValue);\r
+        fValue = nullptr;\r
     }\r
 }\r
 \r
-void Usage::set(StringPiece value) {\r
-    if (fUsage != nullptr) {\r
-        uprv_free(fUsage);\r
-        fUsage = nullptr;\r
+void StringProp::set(StringPiece value) {\r
+    if (fValue != nullptr) {\r
+        uprv_free(fValue);\r
+        fValue = nullptr;\r
     }\r
     fLength = value.length();\r
-    fUsage = (char *)uprv_malloc(fLength + 1);\r
-    if (fUsage == nullptr) {\r
+    fValue = (char *)uprv_malloc(fLength + 1);\r
+    if (fValue == nullptr) {\r
         fLength = 0;\r
         fError = U_MEMORY_ALLOCATION_ERROR;\r
         return;\r
     }\r
-    uprv_strncpy(fUsage, value.data(), fLength);\r
-    fUsage[fLength] = 0;\r
+    uprv_strncpy(fValue, value.data(), fLength);\r
+    fValue[fLength] = 0;\r
 }\r
 \r
 // Populates micros.mixedMeasures and modifies quantity, based on the values in\r
 // measures.\r
 void mixedMeasuresToMicros(const MaybeStackVector<Measure> &measures, DecimalQuantity *quantity,\r
                            MicroProps *micros, UErrorCode status) {\r
-    micros->mixedMeasuresCount = measures.length() - 1;\r
-    if (micros->mixedMeasuresCount > 0) {\r
-#ifdef U_DEBUG\r
-        U_ASSERT(micros->outputUnit.getComplexity(status) == UMEASURE_UNIT_MIXED);\r
-        U_ASSERT(U_SUCCESS(status));\r
-        // Check that we received measurements with the expected MeasureUnits:\r
-        MeasureUnitImpl temp;\r
-        const MeasureUnitImpl& impl = MeasureUnitImpl::forMeasureUnit(micros->outputUnit, temp, status);\r
-        U_ASSERT(U_SUCCESS(status));\r
-        U_ASSERT(measures.length() == impl.units.length());\r
-        for (int32_t i = 0; i < measures.length(); i++) {\r
-            U_ASSERT(measures[i]->getUnit() == impl.units[i]->build(status));\r
-        }\r
-        (void)impl;\r
-#endif\r
-        // Mixed units: except for the last value, we pass all values to the\r
-        // LongNameHandler via micros->mixedMeasures.\r
-        if (micros->mixedMeasures.getCapacity() < micros->mixedMeasuresCount) {\r
-            if (micros->mixedMeasures.resize(micros->mixedMeasuresCount) == nullptr) {\r
-                status = U_MEMORY_ALLOCATION_ERROR;\r
-                return;\r
-            }\r
+    micros->mixedMeasuresCount = measures.length();\r
+\r
+    if (micros->mixedMeasures.getCapacity() < micros->mixedMeasuresCount) {\r
+        if (micros->mixedMeasures.resize(micros->mixedMeasuresCount) == nullptr) {\r
+            status = U_MEMORY_ALLOCATION_ERROR;\r
+            return;\r
         }\r
-        for (int32_t i = 0; i < micros->mixedMeasuresCount; i++) {\r
+    }\r
+\r
+    for (int32_t i = 0; i < micros->mixedMeasuresCount; i++) {\r
+        switch (measures[i]->getNumber().getType()) {\r
+        case Formattable::kInt64:\r
             micros->mixedMeasures[i] = measures[i]->getNumber().getInt64();\r
+            break;\r
+\r
+        case Formattable::kDouble:\r
+            U_ASSERT(micros->indexOfQuantity < 0);\r
+            quantity->setToDouble(measures[i]->getNumber().getDouble());\r
+            micros->indexOfQuantity = i;\r
+            break;\r
+\r
+        default:\r
+            U_ASSERT(0 == "Found a Measure Number which is neither a double nor an int");\r
+            UPRV_UNREACHABLE;\r
+            break;\r
         }\r
-    } else {\r
-        micros->mixedMeasuresCount = 0;\r
+\r
+        if (U_FAILURE(status)) {\r
+            return;\r
+        }\r
+    }\r
+\r
+    if (micros->indexOfQuantity < 0) {\r
+        // There is no quantity.\r
+        status = U_INTERNAL_PROGRAM_ERROR;\r
     }\r
-    // The last value (potentially the only value) gets passed on via quantity.\r
-    quantity->setToDouble(measures[measures.length() - 1]->getNumber().getDouble());\r
 }\r
 \r
 UsagePrefsHandler::UsagePrefsHandler(const Locale &locale,\r
@@ -170,22 +178,20 @@ void UsagePrefsHandler::processQuantity(DecimalQuantity &quantity, MicroProps &m
     mixedMeasuresToMicros(routedMeasures, &quantity, &micros, status);\r
 }\r
 \r
-UnitConversionHandler::UnitConversionHandler(const MeasureUnit &inputUnit, const MeasureUnit &outputUnit,\r
+UnitConversionHandler::UnitConversionHandler(const MeasureUnit &targetUnit,\r
                                              const MicroPropsGenerator *parent, UErrorCode &status)\r
-    : fOutputUnit(outputUnit), fParent(parent) {\r
+    : fOutputUnit(targetUnit), fParent(parent) {\r
     MeasureUnitImpl tempInput, tempOutput;\r
-    const MeasureUnitImpl &inputUnitImpl = MeasureUnitImpl::forMeasureUnit(inputUnit, tempInput, status);\r
-    const MeasureUnitImpl &outputUnitImpl =\r
-        MeasureUnitImpl::forMeasureUnit(outputUnit, tempOutput, status);\r
 \r
-    // TODO: this should become an initOnce thing? Review with other\r
-    // ConversionRates usages.\r
     ConversionRates conversionRates(status);\r
     if (U_FAILURE(status)) {\r
         return;\r
     }\r
+\r
+    const MeasureUnitImpl &targetUnitImpl =\r
+        MeasureUnitImpl::forMeasureUnit(targetUnit, tempOutput, status);\r
     fUnitConverter.adoptInsteadAndCheckErrorCode(\r
-        new ComplexUnitsConverter(inputUnitImpl, outputUnitImpl, conversionRates, status), status);\r
+        new ComplexUnitsConverter(targetUnitImpl, conversionRates, status), status);\r
 }\r
 \r
 void UnitConversionHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micros,\r
index b8a6695..72fdc28 100644 (file)
@@ -97,14 +97,15 @@ class U_I18N_API UnitConversionHandler : public MicroPropsGenerator, public UMem
     /**\r
      * Constructor.\r
      *\r
-     * @param inputUnit Specifies the input MeasureUnit. Mixed units are not\r
-     *     supported as input (because input is just a single decimal quantity).\r
-     * @param outputUnit Specifies the output MeasureUnit.\r
+     * @param targetUnit Specifies the output MeasureUnit. The input MeasureUnit\r
+     *     is derived from it: in case of a mixed unit, the biggest unit is\r
+     *     taken as the input unit. If not a mixed unit, the input unit will be\r
+     *     the same as the output unit and no unit conversion takes place.\r
      * @param parent The parent MicroPropsGenerator.\r
      * @param status Receives status.\r
      */\r
-    UnitConversionHandler(const MeasureUnit &inputUnit, const MeasureUnit &outputUnit,\r
-                          const MicroPropsGenerator *parent, UErrorCode &status);\r
+    UnitConversionHandler(const MeasureUnit &targetUnit, const MicroPropsGenerator *parent,\r
+                          UErrorCode &status);\r
 \r
     /**\r
      * Obtains the appropriate output values from the Unit Converter.\r
index 0bfb9dc..8a8551c 100644 (file)
@@ -42,6 +42,9 @@ public:
     // TODO(units,hugovdm): populate this correctly for the general case - it's\r
     // currently only implemented for the .usage() use case.\r
     MeasureUnit outputUnit;\r
+\r
+    // The gender of the formatted output.\r
+    const char *gender = "";\r
 };\r
 \r
 \r
index 4c5072f..a6e5aee 100644 (file)
@@ -13,7 +13,7 @@
 *   Date        Name        Description\r
 *   02/19/97    aliu        Converted from java.\r
 *   03/18/97    clhuang     Implemented with C++ APIs.\r
-*   04/17/97    aliu        Enlarged MAX_INTEGER_DIGITS to fully accomodate the\r
+*   04/17/97    aliu        Enlarged MAX_INTEGER_DIGITS to fully accommodate the\r
 *                           largest double, by default.\r
 *                           Changed DigitCount to int per code review.\r
 *    07/20/98    stephen        Changed operator== to check for grouping\r
index 0ca7612..c6a5c00 100644 (file)
@@ -245,6 +245,7 @@ LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(NFS<LNF>&& src) U_N
 }\r
 \r
 LocalizedNumberRangeFormatter& LocalizedNumberRangeFormatter::operator=(const LNF& other) {\r
+    if (this == &other) { return *this; }  // self-assignment: no-op\r
     NFS<LNF>::operator=(static_cast<const NFS<LNF>&>(other));\r
     // Do not steal; just clear\r
     delete fAtomicFormatter.exchange(nullptr);\r
index 6c6771f..abab7d4 100644 (file)
@@ -305,7 +305,7 @@ void NumberRangeFormatterImpl::formatRange(UFormattedNumberRangeData& data,
             // INNER MODIFIER\r
             collapseInner = micros1.modInner->semanticallyEquivalent(*micros2.modInner);\r
 \r
-            // All done checking for collapsability.\r
+            // All done checking for collapsibility.\r
             break;\r
         }\r
 \r
@@ -328,6 +328,7 @@ void NumberRangeFormatterImpl::formatRange(UFormattedNumberRangeData& data,
     #define UPRV_INDEX_1 (lengthPrefix + length1)\r
     #define UPRV_INDEX_2 (lengthPrefix + length1 + lengthInfix)\r
     #define UPRV_INDEX_3 (lengthPrefix + length1 + lengthInfix + length2)\r
+    #define UPRV_INDEX_4 (lengthPrefix + length1 + lengthInfix + length2 + lengthSuffix)\r
 \r
     int32_t lengthRange = SimpleModifier::formatTwoArgPattern(\r
         fRangeFormatter,\r
@@ -367,31 +368,38 @@ void NumberRangeFormatterImpl::formatRange(UFormattedNumberRangeData& data,
     // TODO: Support padding?\r
 \r
     if (collapseInner) {\r
-        // Note: this is actually a mix of prefix and suffix, but adding to infix length works\r
         const Modifier& mod = resolveModifierPlurals(*micros1.modInner, *micros2.modInner);\r
-        lengthInfix += mod.apply(string, UPRV_INDEX_0, UPRV_INDEX_3, status);\r
+        lengthSuffix += mod.apply(string, UPRV_INDEX_0, UPRV_INDEX_4, status);\r
+        lengthPrefix += mod.getPrefixLength();\r
+        lengthSuffix -= mod.getPrefixLength();\r
     } else {\r
         length1 += micros1.modInner->apply(string, UPRV_INDEX_0, UPRV_INDEX_1, status);\r
-        length2 += micros2.modInner->apply(string, UPRV_INDEX_2, UPRV_INDEX_3, status);\r
+        length2 += micros2.modInner->apply(string, UPRV_INDEX_2, UPRV_INDEX_4, status);\r
     }\r
 \r
     if (collapseMiddle) {\r
-        // Note: this is actually a mix of prefix and suffix, but adding to infix length works\r
         const Modifier& mod = resolveModifierPlurals(*micros1.modMiddle, *micros2.modMiddle);\r
-        lengthInfix += mod.apply(string, UPRV_INDEX_0, UPRV_INDEX_3, status);\r
+        lengthSuffix += mod.apply(string, UPRV_INDEX_0, UPRV_INDEX_4, status);\r
+        lengthPrefix += mod.getPrefixLength();\r
+        lengthSuffix -= mod.getPrefixLength();\r
     } else {\r
         length1 += micros1.modMiddle->apply(string, UPRV_INDEX_0, UPRV_INDEX_1, status);\r
-        length2 += micros2.modMiddle->apply(string, UPRV_INDEX_2, UPRV_INDEX_3, status);\r
+        length2 += micros2.modMiddle->apply(string, UPRV_INDEX_2, UPRV_INDEX_4, status);\r
     }\r
 \r
     if (collapseOuter) {\r
-        // Note: this is actually a mix of prefix and suffix, but adding to infix length works\r
         const Modifier& mod = resolveModifierPlurals(*micros1.modOuter, *micros2.modOuter);\r
-        lengthInfix += mod.apply(string, UPRV_INDEX_0, UPRV_INDEX_3, status);\r
+        lengthSuffix += mod.apply(string, UPRV_INDEX_0, UPRV_INDEX_4, status);\r
+        lengthPrefix += mod.getPrefixLength();\r
+        lengthSuffix -= mod.getPrefixLength();\r
     } else {\r
         length1 += micros1.modOuter->apply(string, UPRV_INDEX_0, UPRV_INDEX_1, status);\r
-        length2 += micros2.modOuter->apply(string, UPRV_INDEX_2, UPRV_INDEX_3, status);\r
+        length2 += micros2.modOuter->apply(string, UPRV_INDEX_2, UPRV_INDEX_4, status);\r
     }\r
+\r
+    // Now that all pieces are added, save the span info.\r
+    data.appendSpanInfo(UFIELD_CATEGORY_NUMBER_RANGE_SPAN, 0, UPRV_INDEX_0, length1, status);\r
+    data.appendSpanInfo(UFIELD_CATEGORY_NUMBER_RANGE_SPAN, 1, UPRV_INDEX_2, length2, status);\r
 }\r
 \r
 \r
index 03781aa..0687657 100644 (file)
@@ -274,6 +274,7 @@ OlsonTimeZone::OlsonTimeZone(const OlsonTimeZone& other) :
  * Assignment operator\r
  */\r
 OlsonTimeZone& OlsonTimeZone::operator=(const OlsonTimeZone& other) {\r
+    if (this == &other) { return *this; }  // self-assignment: no-op\r
     canonicalID = other.canonicalID;\r
 \r
     transitionTimesPre32 = other.transitionTimesPre32;\r
@@ -399,9 +400,9 @@ void OlsonTimeZone::getOffset(UDate date, UBool local, int32_t& rawoff,
     }\r
 }\r
 \r
-void\r
-OlsonTimeZone::getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
-                                  int32_t& rawoff, int32_t& dstoff, UErrorCode& ec) const {\r
+void OlsonTimeZone::getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingTimeOpt,\r
+                                       UTimeZoneLocalOption duplicatedTimeOpt,\r
+                                       int32_t& rawoff, int32_t& dstoff, UErrorCode& ec) const {\r
     if (U_FAILURE(ec)) {\r
         return;\r
     }\r
@@ -812,7 +813,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) {
         if (finalZone->useDaylightTime()) {\r
             /*\r
              * Note: When an OlsonTimeZone is constructed, we should set the final year\r
-             * as the start year of finalZone.  However, the bounday condition used for\r
+             * as the start year of finalZone.  However, the boundary condition used for\r
              * getting offset from finalZone has some problems.\r
              * For now, we do not set the valid start year when the construction time\r
              * and create a clone and set the start year when extracting rules.\r
index 3905fb8..c789ea8 100644 (file)
@@ -187,8 +187,10 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone {
     /**\r
      * BasicTimeZone API.\r
      */\r
-    virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
-        int32_t& rawoff, int32_t& dstoff, UErrorCode& ec) const;\r
+    virtual void getOffsetFromLocal(\r
+        UDate date, UTimeZoneLocalOption nonExistingTimeOpt,\r
+        UTimeZoneLocalOption duplicatedTimeOpt,\r
+        int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;\r
 \r
     /**\r
      * TimeZone API.  This method has no effect since objects of this\r
index 02b0ec2..0a40ae0 100644 (file)
@@ -60,6 +60,7 @@ static const UChar PK_VAR_I[]={LOW_I,0};
 static const UChar PK_VAR_F[]={LOW_F,0};\r
 static const UChar PK_VAR_T[]={LOW_T,0};\r
 static const UChar PK_VAR_E[]={LOW_E,0};\r
+static const UChar PK_VAR_C[]={LOW_C,0};\r
 static const UChar PK_VAR_V[]={LOW_V,0};\r
 static const UChar PK_WITHIN[]={LOW_W,LOW_I,LOW_T,LOW_H,LOW_I,LOW_N,0};\r
 static const UChar PK_DECIMAL[]={LOW_D,LOW_E,LOW_C,LOW_I,LOW_M,LOW_A,LOW_L,0};\r
@@ -421,7 +422,6 @@ getSamplesFromString(const UnicodeString &samples, double *destDbl,
                 destFd[sampleCount++] = fixed;\r
             }\r
         } else {\r
-\r
             FixedDecimal fixedLo(sampleRange.tempSubStringBetween(0, tildeIndex), status);\r
             FixedDecimal fixedHi(sampleRange.tempSubStringBetween(tildeIndex+1), status);\r
             double rangeLo = fixedLo.source;\r
@@ -514,6 +514,7 @@ PluralRules::getSamples(const UnicodeString &keyword, FixedDecimal *dest,
     if (rc == nullptr) {\r
         return 0;\r
     }\r
+\r
     int32_t numSamples = getSamplesFromString(rc->fIntegerSamples, nullptr, dest, destCapacity, status);\r
     if (numSamples == 0) {\r
         numSamples = getSamplesFromString(rc->fDecimalSamples, nullptr, dest, destCapacity, status);\r
@@ -706,6 +707,7 @@ PluralRuleParser::parse(const UnicodeString& ruleData, PluralRules *prules, UErr
         case tVariableF:\r
         case tVariableT:\r
         case tVariableE:\r
+        case tVariableC:\r
         case tVariableV:\r
             U_ASSERT(curAndConstraint != nullptr);\r
             curAndConstraint->digitsType = type;\r
@@ -1092,6 +1094,8 @@ static UnicodeString tokenString(tokenType tok) {
         s.append(LOW_T); break;\r
       case tVariableE:\r
         s.append(LOW_E); break;\r
+    case tVariableC:\r
+        s.append(LOW_C); break;\r
       default:\r
         s.append(TILDE);\r
     }\r
@@ -1269,6 +1273,7 @@ PluralRuleParser::checkSyntax(UErrorCode &status)
     case tVariableF:\r
     case tVariableT:\r
     case tVariableE:\r
+    case tVariableC:\r
     case tVariableV:\r
         if (type != tIs && type != tMod && type != tIn &&\r
             type != tNot && type != tWithin && type != tEqual && type != tNotEqual) {\r
@@ -1286,6 +1291,7 @@ PluralRuleParser::checkSyntax(UErrorCode &status)
               type == tVariableF ||\r
               type == tVariableT ||\r
               type == tVariableE ||\r
+              type == tVariableC ||\r
               type == tVariableV ||\r
               type == tAt)) {\r
             status = U_UNEXPECTED_TOKEN;\r
@@ -1318,6 +1324,7 @@ PluralRuleParser::checkSyntax(UErrorCode &status)
              type != tVariableF &&\r
              type != tVariableT &&\r
              type != tVariableE &&\r
+             type != tVariableC &&\r
              type != tVariableV) {\r
             status = U_UNEXPECTED_TOKEN;\r
         }\r
@@ -1497,6 +1504,8 @@ PluralRuleParser::getKeyType(const UnicodeString &token, tokenType keyType)
         keyType = tVariableT;\r
     } else if (0 == token.compare(PK_VAR_E, 1)) {\r
         keyType = tVariableE;\r
+    } else if (0 == token.compare(PK_VAR_C, 1)) {\r
+        keyType = tVariableC;\r
     } else if (0 == token.compare(PK_VAR_V, 1)) {\r
         keyType = tVariableV;\r
     } else if (0 == token.compare(PK_IS, 2)) {\r
@@ -1596,11 +1605,17 @@ PluralOperand tokenTypeToPluralOperand(tokenType tt) {
         return PLURAL_OPERAND_T;\r
     case tVariableE:\r
         return PLURAL_OPERAND_E;\r
+    case tVariableC:\r
+        return PLURAL_OPERAND_E;\r
     default:\r
         UPRV_UNREACHABLE;  // unexpected.\r
     }\r
 }\r
 \r
+FixedDecimal::FixedDecimal(double n, int32_t v, int64_t f, int32_t e, int32_t c) {\r
+    init(n, v, f, e, c);\r
+}\r
+\r
 FixedDecimal::FixedDecimal(double n, int32_t v, int64_t f, int32_t e) {\r
     init(n, v, f, e);\r
     // check values. TODO make into unit test.\r
@@ -1642,16 +1657,30 @@ FixedDecimal::FixedDecimal() {
 FixedDecimal::FixedDecimal(const UnicodeString &num, UErrorCode &status) {\r
     CharString cs;\r
     int32_t parsedExponent = 0;\r
+    int32_t parsedCompactExponent = 0;\r
 \r
     int32_t exponentIdx = num.indexOf(u'e');\r
     if (exponentIdx < 0) {\r
         exponentIdx = num.indexOf(u'E');\r
     }\r
+    int32_t compactExponentIdx = num.indexOf(u'c');\r
+    if (compactExponentIdx < 0) {\r
+        compactExponentIdx = num.indexOf(u'C');\r
+    }\r
+\r
     if (exponentIdx >= 0) {\r
         cs.appendInvariantChars(num.tempSubString(0, exponentIdx), status);\r
         int32_t expSubstrStart = exponentIdx + 1;\r
         parsedExponent = ICU_Utility::parseAsciiInteger(num, expSubstrStart);\r
     }\r
+    else if (compactExponentIdx >= 0) {\r
+        cs.appendInvariantChars(num.tempSubString(0, compactExponentIdx), status);\r
+        int32_t expSubstrStart = compactExponentIdx + 1;\r
+        parsedCompactExponent = ICU_Utility::parseAsciiInteger(num, expSubstrStart);\r
+\r
+        parsedExponent = parsedCompactExponent;\r
+        exponentIdx = compactExponentIdx;\r
+    }\r
     else {\r
         cs.appendInvariantChars(num, status);\r
     }\r
@@ -1706,13 +1735,20 @@ void FixedDecimal::init(double n, int32_t v, int64_t f) {
     init(n, v, f, exponent);\r
 }\r
 \r
-\r
 void FixedDecimal::init(double n, int32_t v, int64_t f, int32_t e) {\r
+    // Currently, `c` is an alias for `e`\r
+    init(n, v, f, e, e);\r
+}\r
+\r
+void FixedDecimal::init(double n, int32_t v, int64_t f, int32_t e, int32_t c) {\r
     isNegative = n < 0.0;\r
     source = fabs(n);\r
     _isNaN = uprv_isNaN(source);\r
     _isInfinite = uprv_isInfinite(source);\r
     exponent = e;\r
+    if (exponent == 0) {\r
+        exponent = c;\r
+    }\r
     if (_isNaN || _isInfinite) {\r
         v = 0;\r
         f = 0;\r
@@ -1843,6 +1879,7 @@ double FixedDecimal::getPluralOperand(PluralOperand operand) const {
         case PLURAL_OPERAND_T: return static_cast<double>(decimalDigitsWithoutTrailingZeros);\r
         case PLURAL_OPERAND_V: return visibleDecimalDigitCount;\r
         case PLURAL_OPERAND_E: return exponent;\r
+        case PLURAL_OPERAND_C: return exponent;\r
         default:\r
              UPRV_UNREACHABLE;  // unexpected.\r
     }\r
@@ -1876,12 +1913,12 @@ bool FixedDecimal::operator==(const FixedDecimal &other) const {
 UnicodeString FixedDecimal::toString() const {\r
     char pattern[15];\r
     char buffer[20];\r
-    if (exponent == 0) {\r
-        snprintf(pattern, sizeof(pattern), "%%.%df", visibleDecimalDigitCount);\r
-        snprintf(buffer, sizeof(buffer), pattern, source);\r
-    } else {\r
+    if (exponent != 0) {\r
         snprintf(pattern, sizeof(pattern), "%%.%dfe%%d", visibleDecimalDigitCount);\r
         snprintf(buffer, sizeof(buffer), pattern, source, exponent);\r
+    } else {\r
+        snprintf(pattern, sizeof(pattern), "%%.%df", visibleDecimalDigitCount);\r
+        snprintf(buffer, sizeof(buffer), pattern, source);\r
     }\r
     return UnicodeString(buffer, -1, US_INV);\r
 }\r
index cec25de..1a16b92 100644 (file)
@@ -145,6 +145,7 @@ enum tokenType {
   tVariableV,\r
   tVariableT,\r
   tVariableE,\r
+  tVariableC,\r
   tDecimal,\r
   tInteger,\r
   tEOF\r
@@ -222,12 +223,21 @@ enum PluralOperand {
     PLURAL_OPERAND_W,\r
 \r
     /**\r
-     * Suppressed exponent for compact notation (exponent needed in\r
-     * scientific notation with compact notation to approximate i).\r
+     * Suppressed exponent for scientific notation (exponent needed in\r
+     * scientific notation to approximate i).\r
      */\r
     PLURAL_OPERAND_E,\r
 \r
     /**\r
+     * This operand is currently treated as an alias for `PLURAL_OPERAND_E`.\r
+     * In the future, it will represent:\r
+     *\r
+     * Suppressed exponent for compact notation (exponent needed in\r
+     * compact notation to approximate i).\r
+     */\r
+    PLURAL_OPERAND_C,\r
+\r
+    /**\r
      * THIS OPERAND IS DEPRECATED AND HAS BEEN REMOVED FROM THE SPEC.\r
      *\r
      * <p>Returns the integer value, but will fail if the number has fraction digits.\r
@@ -280,8 +290,10 @@ class U_I18N_API FixedDecimal: public IFixedDecimal, public UObject {
       * @param n   the number, e.g. 12.345\r
       * @param v   The number of visible fraction digits, e.g. 3\r
       * @param f   The fraction digits, e.g. 345\r
-      * @param e   The exponent, e.g. 7 in 1.2e7 (for compact/scientific)\r
+      * @param e   The exponent, e.g. 7 in 1.2e7, for scientific notation\r
+      * @param c   Currently: an alias for param `e`.\r
       */\r
+    FixedDecimal(double  n, int32_t v, int64_t f, int32_t e, int32_t c);\r
     FixedDecimal(double  n, int32_t v, int64_t f, int32_t e);\r
     FixedDecimal(double  n, int32_t v, int64_t f);\r
     FixedDecimal(double n, int32_t);\r
@@ -302,6 +314,7 @@ class U_I18N_API FixedDecimal: public IFixedDecimal, public UObject {
 \r
     int32_t getVisibleFractionDigitCount() const;\r
 \r
+    void init(double n, int32_t v, int64_t f, int32_t e, int32_t c);\r
     void init(double n, int32_t v, int64_t f, int32_t e);\r
     void init(double n, int32_t v, int64_t f);\r
     void init(double n);\r
index 07eef68..3fd44f7 100644 (file)
@@ -101,7 +101,7 @@ RuleBasedTransliterator::RuleBasedTransliterator(
 }*/\r
 \r
 /**\r
- * Covenience constructor with no filter.\r
+ * Convenience constructor with no filter.\r
  */\r
 /*RuleBasedTransliterator::RuleBasedTransliterator(\r
                             const UnicodeString& id,\r
@@ -114,7 +114,7 @@ RuleBasedTransliterator::RuleBasedTransliterator(
 }*/\r
 \r
 /**\r
- * Covenience constructor with no filter and FORWARD direction.\r
+ * Convenience constructor with no filter and FORWARD direction.\r
  */\r
 /*RuleBasedTransliterator::RuleBasedTransliterator(\r
                             const UnicodeString& id,\r
@@ -126,7 +126,7 @@ RuleBasedTransliterator::RuleBasedTransliterator(
 }*/\r
 \r
 /**\r
- * Covenience constructor with FORWARD direction.\r
+ * Convenience constructor with FORWARD direction.\r
  */\r
 /*RuleBasedTransliterator::RuleBasedTransliterator(\r
                             const UnicodeString& id,\r
index a8f6bf9..b79f617 100644 (file)
@@ -80,7 +80,7 @@ public:
                             UErrorCode& status);*/\r
 \r
     /**\r
-     * Covenience constructor with no filter.\r
+     * Convenience constructor with no filter.\r
      * @internal Use transliterator factory methods instead since this class will be removed in that release.\r
      */\r
     /*RuleBasedTransliterator(const UnicodeString& id,\r
@@ -89,7 +89,7 @@ public:
                             UErrorCode& status);*/\r
 \r
     /**\r
-     * Covenience constructor with no filter and FORWARD direction.\r
+     * Convenience constructor with no filter and FORWARD direction.\r
      * @internal Use transliterator factory methods instead since this class will be removed in that release.\r
      */\r
     /*RuleBasedTransliterator(const UnicodeString& id,\r
@@ -97,7 +97,7 @@ public:
                             UErrorCode& status);*/\r
 \r
     /**\r
-     * Covenience constructor with FORWARD direction.\r
+     * Convenience constructor with FORWARD direction.\r
      * @internal Use transliterator factory methods instead since this class will be removed in that release.\r
      */\r
     /*RuleBasedTransliterator(const UnicodeString& id,\r
@@ -108,7 +108,7 @@ private:
 \r
      friend class TransliteratorRegistry; // to access TransliterationRuleData convenience ctor\r
     /**\r
-     * Covenience constructor.\r
+     * Convenience constructor.\r
      * @param id            the id for the transliterator.\r
      * @param theData       the rule data for the transliterator.\r
      * @param adoptedFilter the filter for the transliterator\r
index aaf9699..a19babc 100644 (file)
@@ -945,7 +945,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
         if (c == RULE_COMMENT_CHAR) {\r
             pos = rule.indexOf((UChar)0x000A /*\n*/, pos) + 1;\r
             if (pos == 0) {\r
-                break; // No "\n" found; rest of rule is a commnet\r
+                break; // No "\n" found; rest of rule is a comment\r
             }\r
             continue; // Either fall out or restart with next line\r
         }\r
@@ -1159,7 +1159,7 @@ void TransliteratorParser::setVariableRange(int32_t start, int32_t end, UErrorCo
 \r
 /**\r
  * Assert that the given character is NOT within the variable range.\r
- * If it is, return FALSE.  This is neccesary to ensure that the\r
+ * If it is, return FALSE.  This is necessary to ensure that the\r
  * variable range does not overlap characters used in a rule.\r
  */\r
 UBool TransliteratorParser::checkVariableRange(UChar32 ch) const {\r
index f5420e6..3d5b136 100644 (file)
@@ -210,7 +210,7 @@ private:
 \r
     /**\r
      * Assert that the given character is NOT within the variable range.\r
-     * If it is, return false.  This is neccesary to ensure that the\r
+     * If it is, return false.  This is necessary to ensure that the\r
      * variable range does not overlap characters used in a rule.\r
      * @param ch     the given character.\r
      * @return       True, if the given character is NOT within the variable range.\r
index 6203ca0..9a2f4b1 100644 (file)
@@ -403,9 +403,9 @@ RuleBasedTimeZone::getOffset(UDate date, UBool local, int32_t& rawOffset,
     getOffsetInternal(date, local, kFormer, kLatter, rawOffset, dstOffset, status);\r
 }\r
 \r
-void\r
-RuleBasedTimeZone::getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
-                                      int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const {\r
+void RuleBasedTimeZone::getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingTimeOpt,\r
+                                           UTimeZoneLocalOption duplicatedTimeOpt,\r
+                                           int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const {\r
     getOffsetInternal(date, TRUE, nonExistingTimeOpt, duplicatedTimeOpt, rawOffset, dstOffset, status);\r
 }\r
 \r
index 92fa2f8..632c3ee 100644 (file)
@@ -557,7 +557,7 @@ UBool RegexCompile::doParseActions(int32_t action)
         //\r
         //   Note:   Addition of transparent input regions, with the need to\r
         //           restore the original regions when failing out of a lookahead\r
-        //           block, complicated this sequence.  Some conbined opcodes\r
+        //           block, complicated this sequence.  Some combined opcodes\r
         //           might make sense - or might not, lookahead aren't that common.\r
         //\r
         //      Caution:  min match length optimization knows about this\r
@@ -2397,7 +2397,7 @@ void        RegexCompile::compileSet(UnicodeSet *theSet)
     }\r
     //  Remove any strings from the set.\r
     //  There shoudn't be any, but just in case.\r
-    //     (Case Closure can add them; if we had a simple case closure avaialble that\r
+    //     (Case Closure can add them; if we had a simple case closure available that\r
     //      ignored strings, that would be better.)\r
     theSet->removeAllStrings();\r
     int32_t  setSize = theSet->size();\r
@@ -2485,7 +2485,7 @@ void        RegexCompile::compileInterval(int32_t InitOp,  int32_t LoopOp)
     fRXPat->fCompiledPat->setElementAt(fIntervalLow, topOfBlock+2);\r
     fRXPat->fCompiledPat->setElementAt(fIntervalUpper, topOfBlock+3);\r
 \r
-    // Apend the CTR_LOOP op.  The operand is the location of the CTR_INIT op.\r
+    // Append the CTR_LOOP op.  The operand is the location of the CTR_INIT op.\r
     //   Goes at end of the block being looped over, so just append to the code so far.\r
     appendOp(LoopOp, topOfBlock);\r
 \r
@@ -3475,6 +3475,9 @@ int32_t   RegexCompile::minMatchLength(int32_t start, int32_t end) {
 //                     value may be longer than the actual maximum; it must\r
 //                     never be shorter.\r
 //\r
+//                     start, end: the range of the pattern to check.\r
+//                     end is inclusive.\r
+//\r
 //------------------------------------------------------------------------------\r
 int32_t   RegexCompile::maxMatchLength(int32_t start, int32_t end) {\r
     if (U_FAILURE(*fStatus)) {\r
@@ -3720,14 +3723,14 @@ int32_t   RegexCompile::maxMatchLength(int32_t start, int32_t end) {
                 // Look-behind.  Scan forward until the matching look-around end,\r
                 //   without processing the look-behind block.\r
                 int32_t dataLoc = URX_VAL(op);\r
-                for (loc = loc + 1; loc < end; ++loc) {\r
+                for (loc = loc + 1; loc <= end; ++loc) {\r
                     op = (int32_t)fRXPat->fCompiledPat->elementAti(loc);\r
                     int32_t opType = URX_TYPE(op);\r
                     if ((opType == URX_LA_END || opType == URX_LBN_END) && (URX_VAL(op) == dataLoc)) {\r
                         break;\r
                     }\r
                 }\r
-                U_ASSERT(loc < end);\r
+                U_ASSERT(loc <= end);\r
             }\r
             break;\r
 \r
index 0be4260..9495401 100644 (file)
@@ -95,7 +95,7 @@ public:
 \r
     const UnicodeString emptyString;\r
 \r
-    // Mappping from source to target styles for alias fallback.\r
+    // Mapping from source to target styles for alias fallback.\r
     int32_t fallBackCache[UDAT_STYLE_COUNT];\r
 \r
     void adoptCombinedDateAndTime(SimpleFormatter *fmtToAdopt) {\r
index d9f4cb1..660ad87 100644 (file)
@@ -334,7 +334,7 @@ UDate
 RelativeDateFormat::parse( const UnicodeString& text,\r
                          ParsePosition& pos) const {\r
     // redefined here because the other parse() function hides this function's\r
-    // cunterpart on DateFormat\r
+    // counterpart on DateFormat\r
     return DateFormat::parse(text, pos);\r
 }\r
 \r
index f379904..52a2fbc 100644 (file)
@@ -3913,7 +3913,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) {
                     // First time through loop.\r
                     lbStartIdx = fp->fInputIdx - minML;\r
                     if (lbStartIdx > 0) {\r
-                        // move index to a code point boudary, if it's not on one already.\r
+                        // move index to a code point boundary, if it's not on one already.\r
                         UTEXT_SETNATIVEINDEX(fInputText, lbStartIdx);\r
                         lbStartIdx = UTEXT_GETNATIVEINDEX(fInputText);\r
                     }\r
@@ -3999,7 +3999,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) {
                     // First time through loop.\r
                     lbStartIdx = fp->fInputIdx - minML;\r
                     if (lbStartIdx > 0) {\r
-                        // move index to a code point boudary, if it's not on one already.\r
+                        // move index to a code point boundary, if it's not on one already.\r
                         UTEXT_SETNATIVEINDEX(fInputText, lbStartIdx);\r
                         lbStartIdx = UTEXT_GETNATIVEINDEX(fInputText);\r
                     }\r
index e06b9fa..d34dc1b 100644 (file)
@@ -51,7 +51,7 @@ class U_I18N_API ScriptSet: public UMemory {
     ScriptSet &reset(UScriptCode script, UErrorCode &status);\r
     ScriptSet &intersect(const ScriptSet &other);\r
     ScriptSet &intersect(UScriptCode script, UErrorCode &status);\r
-    UBool      intersects(const ScriptSet &other) const;  // Sets contain at least one script in commmon.\r
+    UBool      intersects(const ScriptSet &other) const;  // Sets contain at least one script in common.\r
     UBool      contains(const ScriptSet &other) const;    // All set bits in other are also set in this.\r
 \r
     ScriptSet &setAll();\r
index 9129ab9..b8a7f3e 100644 (file)
@@ -42,7 +42,7 @@ U_NAMESPACE_BEGIN
 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SimpleTimeZone)\r
 \r
 // Use only for decodeStartRule() and decodeEndRule() where the year is not\r
-// available. Set February to 29 days to accomodate rules with that date\r
+// available. Set February to 29 days to accommodate rules with that date\r
 // and day-of-week-on-or-before-that-date mode (DOW_LE_DOM_MODE).\r
 // The compareToRule() method adjusts to February 28 in non-leap years.\r
 //\r
@@ -509,8 +509,10 @@ SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
 }\r
 \r
 void\r
-SimpleTimeZone::getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
-                                   int32_t& rawOffsetGMT, int32_t& savingsDST, UErrorCode& status) const {\r
+SimpleTimeZone::getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingTimeOpt,\r
+                                   UTimeZoneLocalOption duplicatedTimeOpt, int32_t& rawOffsetGMT,\r
+                                   int32_t& savingsDST, UErrorCode& status) const\r
+{\r
     if (U_FAILURE(status)) {\r
         return;\r
     }\r
index c28f963..a03b26f 100644 (file)
@@ -231,6 +231,13 @@ static const int32_t gFieldRangeBias[] = {
 static const int32_t HEBREW_CAL_CUR_MILLENIUM_START_YEAR = 5000;\r
 static const int32_t HEBREW_CAL_CUR_MILLENIUM_END_YEAR = 6000;\r
 \r
+/**\r
+ * Maximum range for detecting daylight offset of a time zone when parsed time zone\r
+ * string indicates it's daylight saving time, but the detected time zone does not\r
+ * observe daylight saving time at the parsed date.\r
+ */\r
+static const double MAX_DAYLIGHT_DETECTION_RANGE = 30*365*24*60*60*1000.0;\r
+\r
 static UMutex LOCK;\r
 \r
 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SimpleDateFormat)\r
@@ -2575,51 +2582,47 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition&
             } else { // tztype == TZTYPE_DST\r
                 if (dst == 0) {\r
                     if (btz != NULL) {\r
-                        UDate time = localMillis + raw;\r
-                        // We use the nearest daylight saving time rule.\r
-                        TimeZoneTransition beforeTrs, afterTrs;\r
-                        UDate beforeT = time, afterT = time;\r
-                        int32_t beforeSav = 0, afterSav = 0;\r
-                        UBool beforeTrsAvail, afterTrsAvail;\r
-\r
-                        // Search for DST rule before or on the time\r
-                        while (TRUE) {\r
-                            beforeTrsAvail = btz->getPreviousTransition(beforeT, TRUE, beforeTrs);\r
-                            if (!beforeTrsAvail) {\r
+                        // This implementation resolves daylight saving time offset\r
+                        // closest rule after the given time.\r
+                        UDate baseTime = localMillis + raw;\r
+                        UDate time = baseTime;\r
+                        UDate limit = baseTime + MAX_DAYLIGHT_DETECTION_RANGE;\r
+                        TimeZoneTransition trs;\r
+                        UBool trsAvail;\r
+\r
+                        // Search for DST rule after the given time\r
+                        while (time < limit) {\r
+                            trsAvail = btz->getNextTransition(time, FALSE, trs);\r
+                            if (!trsAvail) {\r
                                 break;\r
                             }\r
-                            beforeT = beforeTrs.getTime() - 1;\r
-                            beforeSav = beforeTrs.getFrom()->getDSTSavings();\r
-                            if (beforeSav != 0) {\r
+                            resolvedSavings = trs.getTo()->getDSTSavings();\r
+                            if (resolvedSavings != 0) {\r
                                 break;\r
                             }\r
+                            time = trs.getTime();\r
                         }\r
 \r
-                        // Search for DST rule after the time\r
-                        while (TRUE) {\r
-                            afterTrsAvail = btz->getNextTransition(afterT, FALSE, afterTrs);\r
-                            if (!afterTrsAvail) {\r
-                                break;\r
+                        if (resolvedSavings == 0) {\r
+                            // If no DST rule after the given time was found, search for\r
+                            // DST rule before.\r
+                            time = baseTime;\r
+                            limit = baseTime - MAX_DAYLIGHT_DETECTION_RANGE;\r
+                            while (time > limit) {\r
+                                trsAvail = btz->getPreviousTransition(time, TRUE, trs);\r
+                                if (!trsAvail) {\r
+                                    break;\r
+                                }\r
+                                resolvedSavings = trs.getFrom()->getDSTSavings();\r
+                                if (resolvedSavings != 0) {\r
+                                    break;\r
+                                }\r
+                                time = trs.getTime() - 1;\r
                             }\r
-                            afterT = afterTrs.getTime();\r
-                            afterSav = afterTrs.getTo()->getDSTSavings();\r
-                            if (afterSav != 0) {\r
-                                break;\r
-                            }\r
-                        }\r
 \r
-                        if (beforeTrsAvail && afterTrsAvail) {\r
-                            if (time - beforeT > afterT - time) {\r
-                                resolvedSavings = afterSav;\r
-                            } else {\r
-                                resolvedSavings = beforeSav;\r
+                            if (resolvedSavings == 0) {\r
+                                resolvedSavings = btz->getDSTSavings();\r
                             }\r
-                        } else if (beforeTrsAvail && beforeSav != 0) {\r
-                            resolvedSavings = beforeSav;\r
-                        } else if (afterTrsAvail && afterSav != 0) {\r
-                            resolvedSavings = afterSav;\r
-                        } else {\r
-                            resolvedSavings = btz->getDSTSavings();\r
                         }\r
                     } else {\r
                         resolvedSavings = tz.getDSTSavings();\r
index 9df2a9c..7aa4500 100644 (file)
@@ -20,7 +20,7 @@
 //\r
 //  6/20/97      helena        Java class name change.\r
 //  6/23/97      helena        Added comments to make code more readable.\r
-//  6/26/98      erm           Canged to use byte arrays instead of UnicodeString\r
+//  6/26/98      erm           Changed to use byte arrays instead of UnicodeString\r
 //  7/31/98      erm           hashCode: minimum inc should be 2 not 1,\r
 //                             Cleaned up operator=\r
 // 07/12/99      helena        HPUX 11 CC port.\r
index 194c550..f9d8b93 100644 (file)
@@ -23,7 +23,7 @@
 U_NAMESPACE_BEGIN\r
 \r
 static const char *gKeywords[StandardPlural::COUNT] = {\r
-    "zero", "one", "two", "few", "many", "other"\r
+    "zero", "one", "two", "few", "many", "other", "=0", "=1"\r
 };\r
 \r
 const char *StandardPlural::getKeyword(Form p) {\r
@@ -60,21 +60,55 @@ int32_t StandardPlural::indexOrNegativeFromString(const char *keyword) {
             return ZERO;\r
         }\r
         break;\r
+    case '=':\r
+        if (uprv_strcmp(keyword, "0") == 0) {\r
+            return EQ_0;\r
+        } else if (uprv_strcmp(keyword, "1") == 0) {\r
+            return EQ_1;\r
+        }\r
+        break;\r
+    // Also allow "0" and "1"\r
+    case '0':\r
+        if (*keyword == 0) {\r
+            return EQ_0;\r
+        }\r
+        break;\r
+    case '1':\r
+        if (*keyword == 0) {\r
+            return EQ_1;\r
+        }\r
+        break;\r
     default:\r
         break;\r
     }\r
     return -1;\r
 }\r
 \r
-static const UChar gZero[] = { 0x7A, 0x65, 0x72, 0x6F };\r
-static const UChar gOne[] = { 0x6F, 0x6E, 0x65 };\r
-static const UChar gTwo[] = { 0x74, 0x77, 0x6F };\r
-static const UChar gFew[] = { 0x66, 0x65, 0x77 };\r
-static const UChar gMany[] = { 0x6D, 0x61, 0x6E, 0x79 };\r
-static const UChar gOther[] = { 0x6F, 0x74, 0x68, 0x65, 0x72 };\r
+static const UChar gZero[] = u"zero";\r
+static const UChar gOne[] = u"one";\r
+static const UChar gTwo[] = u"two";\r
+static const UChar gFew[] = u"few";\r
+static const UChar gMany[] = u"many";\r
+static const UChar gOther[] = u"other";\r
+static const UChar gEq0[] = u"=0";\r
+static const UChar gEq1[] = u"=1";\r
 \r
 int32_t StandardPlural::indexOrNegativeFromString(const UnicodeString &keyword) {\r
     switch (keyword.length()) {\r
+    case 1:\r
+        if (keyword.charAt(0) == '0') {\r
+            return EQ_0;\r
+        } else if (keyword.charAt(0) == '1') {\r
+            return EQ_1;\r
+        }\r
+        break;\r
+    case 2:\r
+        if (keyword.compare(gEq0, 2) == 0) {\r
+            return EQ_0;\r
+        } else if (keyword.compare(gEq1, 2) == 0) {\r
+            return EQ_1;\r
+        }\r
+        break;\r
     case 3:\r
         if (keyword.compare(gOne, 3) == 0) {\r
             return ONE;\r
index 8e98d6b..d3afb13 100644 (file)
@@ -35,6 +35,8 @@ public:
         FEW,\r
         MANY,\r
         OTHER,\r
+        EQ_0,\r
+        EQ_1,\r
         COUNT\r
     };\r
 \r
index 4af87a2..05f44be 100644 (file)
@@ -184,7 +184,7 @@ StringSearch::clone() const {
 // operator overloading ---------------------------------------------\r
 StringSearch & StringSearch::operator=(const StringSearch &that)\r
 {\r
-    if ((*this) != that) {\r
+    if (this != &that) {\r
         UErrorCode status = U_ZERO_ERROR;\r
         m_text_          = that.m_text_;\r
         m_breakiterator_ = that.m_breakiterator_;\r
index 85736b7..7b07be3 100644 (file)
@@ -1678,7 +1678,7 @@ TimeZone::getIDForWindowsID(const UnicodeString& winid, const char* region, Unic
     winidKey[winKeyLen] = 0;\r
 \r
     ures_getByKey(zones, winidKey, zones, &tmperr); // use tmperr, because windows mapping might not\r
-                                                    // be avaiable by design\r
+                                                    // be available by design\r
     if (U_FAILURE(tmperr)) {\r
         ures_close(zones);\r
         return id;\r
index aa194a1..7a4145d 100644 (file)
@@ -170,6 +170,7 @@ Transliterator* Transliterator::clone() const {
  * Assignment operator.\r
  */\r
 Transliterator& Transliterator::operator=(const Transliterator& other) {\r
+    if (this == &other) { return *this; }  // self-assignment: no-op\r
     ID = other.ID;\r
     // NUL-terminate the ID string\r
     ID.getTerminatedBuffer();\r
index eb57365..28a720b 100644 (file)
@@ -144,7 +144,7 @@ class TransliteratorRegistry : public UMemory {
  public:\r
 \r
     /**\r
-     * Contructor\r
+     * Constructor\r
      * @param status Output param set to success/failure code.\r
      */\r
     TransliteratorRegistry(UErrorCode& status);\r
index 8356cf5..0c7bb76 100644 (file)
@@ -1873,7 +1873,7 @@ TimeZoneFormat::parseOffsetFieldsWithPattern(const UnicodeString& text, int32_t
                 // When TimeZoneFormat parse() is called from SimpleDateFormat,\r
                 // leading space characters might be truncated. If the first pattern text\r
                 // starts with such character (e.g. Bidi control), then we need to\r
-                // skip the leading space charcters.\r
+                // skip the leading space characters.\r
                 if (idx < text.length() && !PatternProps::isWhiteSpace(text.char32At(idx))) {\r
                     while (len > 0) {\r
                         UChar32 ch;\r
index 0c60ebd..ceddc70 100644 (file)
@@ -33,8 +33,8 @@ U_NAMESPACE_USE
 \r
 static TimeZone*\r
 _createTimeZone(const UChar* zoneID, int32_t len, UErrorCode* ec) {\r
-    TimeZone* zone = NULL;\r
-    if (ec != NULL && U_SUCCESS(*ec)) {\r
+    TimeZone* zone = nullptr;\r
+    if (ec != nullptr && U_SUCCESS(*ec)) {\r
         // Note that if zoneID is invalid, we get back GMT. This odd\r
         // behavior is by design and goes back to the JDK. The only\r
         // failure we will see is a memory allocation failure.\r
@@ -42,7 +42,7 @@ _createTimeZone(const UChar* zoneID, int32_t len, UErrorCode* ec) {
         UnicodeString zoneStrID;\r
         zoneStrID.setTo((UBool)(len < 0), zoneID, l); /* temporary read-only alias */\r
         zone = TimeZone::createTimeZone(zoneStrID);\r
-        if (zone == NULL) {\r
+        if (zone == nullptr) {\r
             *ec = U_MEMORY_ALLOCATION_ERROR;\r
         }\r
     }\r
@@ -58,20 +58,20 @@ ucal_openTimeZoneIDEnumeration(USystemTimeZoneType zoneType, const char* region,
 \r
 U_CAPI UEnumeration* U_EXPORT2\r
 ucal_openTimeZones(UErrorCode* ec) {\r
-    return uenum_openFromStringEnumeration(TimeZone::createEnumeration(), ec);\r
+    return ucal_openTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, nullptr, nullptr, ec);\r
 }\r
 \r
 U_CAPI UEnumeration* U_EXPORT2\r
 ucal_openCountryTimeZones(const char* country, UErrorCode* ec) {\r
-    return uenum_openFromStringEnumeration(TimeZone::createEnumeration(country), ec);\r
+    return ucal_openTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, country, nullptr, ec);\r
 }\r
 \r
 U_CAPI int32_t U_EXPORT2\r
 ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {\r
     int32_t len = 0;\r
-    if (ec != NULL && U_SUCCESS(*ec)) {\r
+    if (ec != nullptr && U_SUCCESS(*ec)) {\r
         TimeZone* zone = TimeZone::createDefault();\r
-        if (zone == NULL) {\r
+        if (zone == nullptr) {\r
             *ec = U_MEMORY_ALLOCATION_ERROR;\r
         } else {\r
             UnicodeString id;\r
@@ -86,7 +86,7 @@ ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {
 U_CAPI void U_EXPORT2\r
 ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec) {\r
     TimeZone* zone = _createTimeZone(zoneID, -1, ec);\r
-    if (zone != NULL) {\r
+    if (zone != nullptr) {\r
         TimeZone::adoptDefault(zone);\r
     }\r
 }\r
@@ -94,9 +94,9 @@ ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec) {
 U_CAPI int32_t U_EXPORT2\r
 ucal_getHostTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {\r
     int32_t len = 0;\r
-    if (ec != NULL && U_SUCCESS(*ec)) {\r
+    if (ec != nullptr && U_SUCCESS(*ec)) {\r
         TimeZone *zone = TimeZone::detectHostTimeZone();\r
-        if (zone == NULL) {\r
+        if (zone == nullptr) {\r
             *ec = U_MEMORY_ALLOCATION_ERROR;\r
         } else {\r
             UnicodeString id;\r
@@ -114,7 +114,7 @@ ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec) {
     TimeZone* zone = _createTimeZone(zoneID, -1, ec);\r
     if (U_SUCCESS(*ec)) {\r
         SimpleTimeZone* stz = dynamic_cast<SimpleTimeZone*>(zone);\r
-        if (stz != NULL) {\r
+        if (stz != nullptr) {\r
             result = stz->getDSTSavings();\r
         } else {\r
             // Since there is no getDSTSavings on TimeZone, we use a\r
@@ -219,10 +219,10 @@ ucal_setTimeZone(    UCalendar*      cal,
   if(U_FAILURE(*status))\r
     return;\r
 \r
-  TimeZone* zone = (zoneID==NULL) ? TimeZone::createDefault()\r
+  TimeZone* zone = (zoneID==nullptr) ? TimeZone::createDefault()\r
       : _createTimeZone(zoneID, len, status);\r
 \r
-  if (zone != NULL) {\r
+  if (zone != nullptr) {\r
       ((Calendar*)cal)->adoptTimeZone(zone);\r
   }\r
 }\r
@@ -255,8 +255,8 @@ ucal_getTimeZoneDisplayName(const     UCalendar*                 cal,
 \r
     const TimeZone& tz = ((Calendar*)cal)->getTimeZone();\r
     UnicodeString id;\r
-    if(!(result==NULL && resultLength==0)) {\r
-        // NULL destination for pure preflighting: empty dummy string\r
+    if (!(result == nullptr && resultLength == 0)) {\r
+        // Null destination for pure preflighting: empty dummy string\r
         // otherwise, alias the destination buffer\r
         id.setTo(result, 0, resultLength);\r
     }\r
@@ -298,12 +298,12 @@ ucal_setGregorianChange(UCalendar *cal, UDate date, UErrorCode *pErrorCode) {
     }\r
     Calendar *cpp_cal = (Calendar *)cal;\r
     GregorianCalendar *gregocal = dynamic_cast<GregorianCalendar *>(cpp_cal);\r
-    // Not if(gregocal == NULL) {\r
+    // Not if(gregocal == nullptr) {\r
     // because we really want to work only with a GregorianCalendar, not with\r
     // its subclasses like BuddhistCalendar.\r
-    if (cpp_cal == NULL) {\r
-        // We normally don't check "this" pointers for NULL, but this here avoids\r
-        // compiler-generated exception-throwing code in case cal == NULL.\r
+    if (cpp_cal == nullptr) {\r
+        // We normally don't check "this" pointers for nullptr, but this here avoids\r
+        // compiler-generated exception-throwing code in case cal == nullptr.\r
         *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;\r
         return;\r
     }\r
@@ -321,11 +321,11 @@ ucal_getGregorianChange(const UCalendar *cal, UErrorCode *pErrorCode) {
     }\r
     const Calendar *cpp_cal = (const Calendar *)cal;\r
     const GregorianCalendar *gregocal = dynamic_cast<const GregorianCalendar *>(cpp_cal);\r
-    // Not if(gregocal == NULL) {\r
+    // Not if(gregocal == nullptr) {\r
     // see comments in ucal_setGregorianChange().\r
-    if (cpp_cal == NULL) {\r
-        // We normally don't check "this" pointers for NULL, but this here avoids\r
-        // compiler-generated exception-throwing code in case cal == NULL.\r
+    if (cpp_cal == nullptr) {\r
+        // We normally don't check "this" pointers for nullptr, but this here avoids\r
+        // compiler-generated exception-throwing code in case cal == nullptr.\r
         *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;\r
         return (UDate)0;\r
     }\r
@@ -572,11 +572,11 @@ ucal_getLimit(    const    UCalendar*              cal,
 U_CAPI const char * U_EXPORT2\r
 ucal_getLocaleByType(const UCalendar *cal, ULocDataLocaleType type, UErrorCode* status) \r
 {\r
-    if (cal == NULL) {\r
+    if (cal == nullptr) {\r
         if (U_SUCCESS(*status)) {\r
             *status = U_ILLEGAL_ARGUMENT_ERROR;\r
         }\r
-        return NULL;\r
+        return nullptr;\r
     }\r
     return ((Calendar*)cal)->getLocaleID(type, *status);\r
 }\r
@@ -617,7 +617,7 @@ U_CAPI const char * U_EXPORT2
 ucal_getType(const UCalendar *cal, UErrorCode* status)\r
 {\r
     if (U_FAILURE(*status)) {\r
-        return NULL;\r
+        return nullptr;\r
     }\r
     return ((Calendar*)cal)->getType();\r
 }\r
@@ -662,8 +662,8 @@ ucal_getFieldDifference(UCalendar* cal, UDate target,
 \r
 \r
 static const UEnumeration defaultKeywordValues = {\r
-    NULL,\r
-    NULL,\r
+    nullptr,\r
+    nullptr,\r
     ulist_close_keyword_values_iterator,\r
     ulist_count_keyword_values,\r
     uenum_unextDefault,\r
@@ -690,7 +690,7 @@ static const char * const CAL_TYPES[] = {
         "islamic-umalqura",\r
         "islamic-tbla",\r
         "islamic-rgsa",\r
-        NULL\r
+        nullptr\r
 };\r
 \r
 U_CAPI UEnumeration* U_EXPORT2\r
@@ -700,16 +700,16 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool
     (void)ulocimp_getRegionForSupplementalData(locale, TRUE, prefRegion, sizeof(prefRegion), status);\r
     \r
     // Read preferred calendar values from supplementalData calendarPreference\r
-    UResourceBundle *rb = ures_openDirect(NULL, "supplementalData", status);\r
+    UResourceBundle *rb = ures_openDirect(nullptr, "supplementalData", status);\r
     ures_getByKey(rb, "calendarPreferenceData", rb, status);\r
-    UResourceBundle *order = ures_getByKey(rb, prefRegion, NULL, status);\r
-    if (*status == U_MISSING_RESOURCE_ERROR && rb != NULL) {\r
+    UResourceBundle *order = ures_getByKey(rb, prefRegion, nullptr, status);\r
+    if (*status == U_MISSING_RESOURCE_ERROR && rb != nullptr) {\r
         *status = U_ZERO_ERROR;\r
-        order = ures_getByKey(rb, "001", NULL, status);\r
+        order = ures_getByKey(rb, "001", nullptr, status);\r
     }\r
 \r
     // Create a list of calendar type strings\r
-    UList *values = NULL;\r
+    UList *values = nullptr;\r
     if (U_SUCCESS(*status)) {\r
         values = ulist_createEmptyList(status);\r
         if (U_SUCCESS(*status)) {\r
@@ -717,7 +717,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool
                 int32_t len;\r
                 const UChar *type = ures_getStringByIndex(order, i, &len, status);\r
                 char *caltype = (char*)uprv_malloc(len + 1);\r
-                if (caltype == NULL) {\r
+                if (caltype == nullptr) {\r
                     *status = U_MEMORY_ALLOCATION_ERROR;\r
                     break;\r
                 }\r
@@ -732,7 +732,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool
 \r
             if (U_SUCCESS(*status) && !commonlyUsed) {\r
                 // If not commonlyUsed, add other available values\r
-                for (int32_t i = 0; CAL_TYPES[i] != NULL; i++) {\r
+                for (int32_t i = 0; CAL_TYPES[i] != nullptr; i++) {\r
                     if (!ulist_containsString(values, CAL_TYPES[i], (int32_t)uprv_strlen(CAL_TYPES[i]))) {\r
                         ulist_addItemEndList(values, CAL_TYPES[i], FALSE, status);\r
                         if (U_FAILURE(*status)) {\r
@@ -743,7 +743,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool
             }\r
             if (U_FAILURE(*status)) {\r
                 ulist_deleteList(values);\r
-                values = NULL;\r
+                values = nullptr;\r
             }\r
         }\r
     }\r
@@ -751,16 +751,16 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool
     ures_close(order);\r
     ures_close(rb);\r
 \r
-    if (U_FAILURE(*status) || values == NULL) {\r
-        return NULL;\r
+    if (U_FAILURE(*status) || values == nullptr) {\r
+        return nullptr;\r
     }\r
 \r
     // Create string enumeration\r
     UEnumeration *en = (UEnumeration*)uprv_malloc(sizeof(UEnumeration));\r
-    if (en == NULL) {\r
+    if (en == nullptr) {\r
         *status = U_MEMORY_ALLOCATION_ERROR;\r
         ulist_deleteList(values);\r
-        return NULL;\r
+        return nullptr;\r
     }\r
     ulist_resetList(values);\r
     memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));\r
@@ -778,7 +778,7 @@ ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType typ
     UDate base = ((Calendar*)cal)->getTime(*status);\r
     const TimeZone& tz = ((Calendar*)cal)->getTimeZone();\r
     const BasicTimeZone * btz = dynamic_cast<const BasicTimeZone *>(&tz);\r
-    if (btz != NULL && U_SUCCESS(*status)) {\r
+    if (btz != nullptr && U_SUCCESS(*status)) {\r
         TimeZoneTransition tzt;\r
         UBool inclusive = (type == UCAL_TZ_TRANSITION_NEXT_INCLUSIVE || type == UCAL_TZ_TRANSITION_PREVIOUS_INCLUSIVE);\r
         UBool result = (type == UCAL_TZ_TRANSITION_NEXT || type == UCAL_TZ_TRANSITION_NEXT_INCLUSIVE)?\r
@@ -828,4 +828,28 @@ ucal_getTimeZoneIDForWindowsID(const UChar* winid, int32_t len, const char* regi
     return resultLen;\r
 }\r
 \r
+U_CAPI void U_EXPORT2 ucal_getTimeZoneOffsetFromLocal(\r
+    const UCalendar* cal,\r
+    UTimeZoneLocalOption nonExistingTimeOpt,\r
+    UTimeZoneLocalOption duplicatedTimeOpt,\r
+    int32_t* rawOffset, int32_t* dstOffset, UErrorCode* status)\r
+{\r
+    if (U_FAILURE(*status)) {\r
+        return;\r
+    }\r
+    UDate date = ((Calendar*)cal)->getTime(*status);\r
+    if (U_FAILURE(*status)) {\r
+        return;\r
+    }\r
+    const TimeZone& tz = ((Calendar*)cal)->getTimeZone();\r
+    const BasicTimeZone* btz = dynamic_cast<const BasicTimeZone *>(&tz);\r
+    if (btz == nullptr) {\r
+        *status = U_ILLEGAL_ARGUMENT_ERROR;\r
+        return;\r
+    }\r
+    btz->getOffsetFromLocal(\r
+        date, nonExistingTimeOpt, duplicatedTimeOpt,\r
+        *rawOffset, *dstOffset, *status);\r
+}\r
+\r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
index 198dace..dfc5c75 100644 (file)
@@ -81,7 +81,7 @@ void UnicodeNameTransliterator::handleTransliterate(Replaceable& text, UTransPos
         return;\r
     }\r
 \r
-    // Accomodate the longest possible name plus padding\r
+    // Accommodate the longest possible name plus padding\r
     char* buf = (char*) uprv_malloc(maxLen);\r
     if (buf == NULL) {\r
         offsets.start = offsets.limit;\r
index 6df3232..83321cc 100644 (file)
@@ -152,6 +152,17 @@ public:
     virtual void getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,\r
         AnnualTimeZoneRule*& std, AnnualTimeZoneRule*& dst, UErrorCode& status) const;\r
 \r
+#ifndef U_FORCE_HIDE_DRAFT_API\r
+    /**\r
+     * Get time zone offsets from local wall time.\r
+     * @draft ICU 69\r
+     */\r
+    virtual void getOffsetFromLocal(\r
+        UDate date, UTimeZoneLocalOption nonExistingTimeOpt,\r
+        UTimeZoneLocalOption duplicatedTimeOpt, int32_t& rawOffset,\r
+        int32_t& dstOffset, UErrorCode& status) const;\r
+\r
+#endif /* U_FORCE_HIDE_DRAFT_API */\r
 \r
 #ifndef U_HIDE_INTERNAL_API\r
     /**\r
@@ -161,17 +172,17 @@ public:
     enum {\r
         kStandard = 0x01,\r
         kDaylight = 0x03,\r
-        kFormer = 0x04,\r
-        kLatter = 0x0C\r
+        kFormer = 0x04, /* UCAL_TZ_LOCAL_FORMER */\r
+        kLatter = 0x0C  /* UCAL_TZ_LOCAL_LATTER */\r
     };\r
-#endif  /* U_HIDE_INTERNAL_API */\r
 \r
     /**\r
      * Get time zone offsets from local wall time.\r
      * @internal\r
      */\r
-    virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
+    void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
         int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;\r
+#endif  /* U_HIDE_INTERNAL_API */\r
 \r
 protected:\r
 \r
index 9aa2eb3..c108219 100644 (file)
@@ -47,6 +47,8 @@ U_NAMESPACE_BEGIN
 \r
 class ICUServiceFactory;\r
 \r
+// Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API,\r
+// it is a return type for a virtual method (@internal)\r
 /**\r
  * @internal\r
  */\r
@@ -1849,7 +1851,7 @@ private:
      * @param startValue starting (least max) value of field\r
      * @param endValue ending (greatest max) value of field\r
      * @param status return type\r
-     * @internal\r
+     * @internal (private)\r
      */\r
     int32_t getActualHelper(UCalendarDateFields field, int32_t startValue, int32_t endValue, UErrorCode &status) const;\r
 \r
index 37565a5..fc104b4 100644 (file)
@@ -139,7 +139,7 @@ template class U_I18N_API EnumSet<UDateFormatBooleanAttribute,
  * more control over the format or parsing, (or want to give your users more\r
  * control), you can try casting the DateFormat you get from the factory methods\r
  * to a SimpleDateFormat. This will work for the majority of countries; just\r
- * remember to chck getDynamicClassID() before carrying out the cast.\r
+ * remember to check getDynamicClassID() before carrying out the cast.\r
  * <P>\r
  * You can also use forms of the parse and format methods with ParsePosition and\r
  * FieldPosition to allow you to\r
index 1417513..231d328 100644 (file)
@@ -446,7 +446,7 @@ public:
     inline const UnicodeString& getConstDigitSymbol(int32_t digit) const;\r
 \r
     /**\r
-     * Returns that pattern stored in currecy info. Internal API for use by NumberFormat API.\r
+     * Returns that pattern stored in currency info. Internal API for use by NumberFormat API.\r
      * @internal\r
      */\r
     inline const char16_t* getCurrencyPattern(void) const;\r
index 56b15a1..9484ee8 100644 (file)
@@ -492,7 +492,6 @@ public:
 \r
 #if !UCONFIG_NO_FORMATTING\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
     /**\r
      * Get the default hour cycle for a locale. Uses the locale that the\r
      * DateTimePatternGenerator was initially created with.\r
@@ -503,10 +502,9 @@ public:
      *                which must not indicate a failure before the function call.\r
      *                Set to U_UNSUPPORTED_ERROR if used on an empty instance.\r
      * @return the default hour cycle.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UDateFormatHourCycle getDefaultHourCycle(UErrorCode& status) const;\r
-#endif  /* U_HIDE_DRAFT_API */\r
 \r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
     \r
index 0155d39..4de7c55 100644 (file)
@@ -197,22 +197,6 @@ class U_I18N_API ListFormatter : public UObject{
      */\r
     static ListFormatter* createInstance(\r
       const Locale& locale, UListFormatterType type, UListFormatterWidth width, UErrorCode& errorCode);\r
-  \r
-#ifndef U_HIDE_INTERNAL_API\r
-    /**\r
-     * Creates a ListFormatter appropriate for a locale and style.\r
-     *\r
-     * TODO(ICU-20888): Remove this in ICU 68.\r
-     *\r
-     * @param locale The locale.\r
-     * @param style the style, either "standard", "or", "unit", "unit-narrow", or "unit-short"\r
-     * @param errorCode ICU error code, set if no data available for the given locale.\r
-     * @return A ListFormatter object created from internal data derived from\r
-     *     CLDR data.\r
-     * @internal\r
-     */\r
-    static ListFormatter* createInstance(const Locale& locale, const char* style, UErrorCode& errorCode);\r
-#endif  /* U_HIDE_INTERNAL_API */\r
 \r
     /**\r
      * Destructor.\r
@@ -273,6 +257,15 @@ class U_I18N_API ListFormatter : public UObject{
 #endif  /* U_HIDE_INTERNAL_API */\r
 \r
   private:\r
+  \r
+    /**\r
+     * Creates a ListFormatter appropriate for a locale and style.\r
+     *\r
+     * @param locale The locale.\r
+     * @param style the style, either "standard", "or", "unit", "unit-narrow", or "unit-short"\r
+     */\r
+    static ListFormatter* createInstance(const Locale& locale, const char* style, UErrorCode& errorCode);\r
+\r
     static void initializeHash(UErrorCode& errorCode);\r
     static const ListFormatInternal* getListFormatInternal(const Locale& locale, const char *style, UErrorCode& errorCode);\r
     struct ListPatternsSink;\r
index 608d6c0..285a6df 100644 (file)
@@ -91,7 +91,8 @@ class DateFormat;
 /**\r
  * <p><strong>IMPORTANT:</strong> New users are strongly encouraged to see if\r
  * numberformatter.h fits their use case.  Although not deprecated, this header\r
- * is provided for backwards compatibility only.\r
+ * is provided for backwards compatibility only, and has much more limited\r
+ * capabilities.\r
  *\r
  * @see Format\r
  * @author Alan Liu\r
index 010f036..1f8e4fa 100644 (file)
 #include "unicode/localpointer.h"\r
 \r
 /**\r
- * \file \r
+ * \file\r
  * \brief C++ API: A unit for measuring a quantity.\r
  */\r
\r
+\r
 U_NAMESPACE_BEGIN\r
 \r
 class StringEnumeration;\r
-struct MeasureUnitImpl;\r
+class MeasureUnitImpl;\r
+\r
+namespace number {\r
+namespace impl {\r
+class LongNameHandler;\r
+}\r
+} // namespace number\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
 /**\r
  * Enumeration for unit complexity. There are three levels:\r
- * \r
- * - SINGLE: A single unit, optionally with a power and/or SI prefix. Examples: hectare,\r
- *           square-kilometer, kilojoule, per-second.\r
+ *\r
+ * - SINGLE: A single unit, optionally with a power and/or SI or binary prefix.\r
+ *           Examples: hectare, square-kilometer, kilojoule, per-second, mebibyte.\r
  * - COMPOUND: A unit composed of the product of multiple single units. Examples:\r
  *             meter-per-second, kilowatt-hour, kilogram-meter-per-square-second.\r
  * - MIXED: A unit composed of the sum of multiple single units. Examples: foot+inch,\r
  *          hour+minute+second, degree+arcminute+arcsecond.\r
  *\r
  * The complexity determines which operations are available. For example, you cannot set the power\r
- * or SI prefix of a compound unit.\r
+ * or prefix of a compound unit.\r
  *\r
- * @draft ICU 67\r
+ * @stable ICU 67\r
  */\r
 enum UMeasureUnitComplexity {\r
     /**\r
      * A single unit, like kilojoule.\r
      *\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UMEASURE_UNIT_SINGLE,\r
 \r
     /**\r
      * A compound unit, like meter-per-second.\r
-     * \r
-     * @draft ICU 67\r
+     *\r
+     * @stable ICU 67\r
      */\r
     UMEASURE_UNIT_COMPOUND,\r
 \r
     /**\r
      * A mixed unit, like hour+minute.\r
      *\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UMEASURE_UNIT_MIXED\r
 };\r
 \r
+\r
+#ifndef U_HIDE_DRAFT_API\r
 /**\r
- * Enumeration for SI prefixes, such as "kilo".\r
+ * Enumeration for SI and binary prefixes, e.g. "kilo-", "nano-", "mebi-".\r
+ *\r
+ * Enum values should be treated as opaque: use umeas_getPrefixPower() and\r
+ * umeas_getPrefixBase() to find their corresponding values.\r
  *\r
- * @draft ICU 67\r
+ * @draft ICU 69\r
+ * @see umeas_getPrefixBase\r
+ * @see umeas_getPrefixPower\r
  */\r
-typedef enum UMeasureSIPrefix {\r
+typedef enum UMeasurePrefix {\r
+    /**\r
+     * The absence of an SI or binary prefix.\r
+     *\r
+     * The integer representation of this enum value is an arbitrary\r
+     * implementation detail and should not be relied upon: use\r
+     * umeas_getPrefixPower() to obtain meaningful values.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UMEASURE_PREFIX_ONE = 30 + 0,\r
 \r
     /**\r
      * SI prefix: yotta, 10^24.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_YOTTA = 24,\r
+    UMEASURE_PREFIX_YOTTA = UMEASURE_PREFIX_ONE + 24,\r
+\r
+    /**\r
+     * ICU use only.\r
+     * Used to determine the set of base-10 SI prefixes.\r
+     * @internal\r
+     */\r
+    UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_YOTTA,\r
 \r
     /**\r
      * SI prefix: zetta, 10^21.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_ZETTA = 21,\r
+    UMEASURE_PREFIX_ZETTA = UMEASURE_PREFIX_ONE + 21,\r
 \r
     /**\r
      * SI prefix: exa, 10^18.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_EXA = 18,\r
+    UMEASURE_PREFIX_EXA = UMEASURE_PREFIX_ONE + 18,\r
 \r
     /**\r
      * SI prefix: peta, 10^15.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_PETA = 15,\r
+    UMEASURE_PREFIX_PETA = UMEASURE_PREFIX_ONE + 15,\r
 \r
     /**\r
      * SI prefix: tera, 10^12.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_TERA = 12,\r
+    UMEASURE_PREFIX_TERA = UMEASURE_PREFIX_ONE + 12,\r
 \r
     /**\r
      * SI prefix: giga, 10^9.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_GIGA = 9,\r
+    UMEASURE_PREFIX_GIGA = UMEASURE_PREFIX_ONE + 9,\r
 \r
     /**\r
      * SI prefix: mega, 10^6.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_MEGA = 6,\r
+    UMEASURE_PREFIX_MEGA = UMEASURE_PREFIX_ONE + 6,\r
 \r
     /**\r
      * SI prefix: kilo, 10^3.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_KILO = 3,\r
+    UMEASURE_PREFIX_KILO = UMEASURE_PREFIX_ONE + 3,\r
 \r
     /**\r
      * SI prefix: hecto, 10^2.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_HECTO = 2,\r
+    UMEASURE_PREFIX_HECTO = UMEASURE_PREFIX_ONE + 2,\r
 \r
     /**\r
      * SI prefix: deka, 10^1.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_DEKA = 1,\r
-\r
-    /**\r
-     * The absence of an SI prefix.\r
-     *\r
-     * @draft ICU 67\r
-     */\r
-    UMEASURE_SI_PREFIX_ONE = 0,\r
+    UMEASURE_PREFIX_DEKA = UMEASURE_PREFIX_ONE + 1,\r
 \r
     /**\r
      * SI prefix: deci, 10^-1.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_DECI = -1,\r
+    UMEASURE_PREFIX_DECI = UMEASURE_PREFIX_ONE + -1,\r
 \r
     /**\r
      * SI prefix: centi, 10^-2.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_CENTI = -2,\r
+    UMEASURE_PREFIX_CENTI = UMEASURE_PREFIX_ONE + -2,\r
 \r
     /**\r
      * SI prefix: milli, 10^-3.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_MILLI = -3,\r
+    UMEASURE_PREFIX_MILLI = UMEASURE_PREFIX_ONE + -3,\r
 \r
     /**\r
      * SI prefix: micro, 10^-6.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_MICRO = -6,\r
+    UMEASURE_PREFIX_MICRO = UMEASURE_PREFIX_ONE + -6,\r
 \r
     /**\r
      * SI prefix: nano, 10^-9.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_NANO = -9,\r
+    UMEASURE_PREFIX_NANO = UMEASURE_PREFIX_ONE + -9,\r
 \r
     /**\r
      * SI prefix: pico, 10^-12.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_PICO = -12,\r
+    UMEASURE_PREFIX_PICO = UMEASURE_PREFIX_ONE + -12,\r
 \r
     /**\r
      * SI prefix: femto, 10^-15.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_FEMTO = -15,\r
+    UMEASURE_PREFIX_FEMTO = UMEASURE_PREFIX_ONE + -15,\r
 \r
     /**\r
      * SI prefix: atto, 10^-18.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_ATTO = -18,\r
+    UMEASURE_PREFIX_ATTO = UMEASURE_PREFIX_ONE + -18,\r
 \r
     /**\r
      * SI prefix: zepto, 10^-21.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_ZEPTO = -21,\r
+    UMEASURE_PREFIX_ZEPTO = UMEASURE_PREFIX_ONE + -21,\r
 \r
     /**\r
      * SI prefix: yocto, 10^-24.\r
      *\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
+     */\r
+    UMEASURE_PREFIX_YOCTO = UMEASURE_PREFIX_ONE + -24,\r
+\r
+#ifndef U_HIDE_INTERNAL_API\r
+    /**\r
+     * ICU use only.\r
+     * Used to determine the set of base-10 SI prefixes.\r
+     * @internal\r
+     */\r
+    UMEASURE_PREFIX_INTERNAL_MIN_SI = UMEASURE_PREFIX_YOCTO,\r
+#endif  // U_HIDE_INTERNAL_API\r
+\r
+    // Cannot conditionalize the following with #ifndef U_HIDE_INTERNAL_API,\r
+    // used in definitions of non-internal enum values\r
+    /**\r
+     * ICU use only.\r
+     * Sets the arbitrary offset of the base-1024 binary prefixes' enum values.\r
+     * @internal\r
+     */\r
+    UMEASURE_PREFIX_INTERNAL_ONE_BIN = -60,\r
+\r
+    /**\r
+     * Binary prefix: kibi, 1024^1.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UMEASURE_PREFIX_KIBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 1,\r
+\r
+#ifndef U_HIDE_INTERNAL_API\r
+    /**\r
+     * ICU use only.\r
+     * Used to determine the set of base-1024 binary prefixes.\r
+     * @internal\r
+     */\r
+    UMEASURE_PREFIX_INTERNAL_MIN_BIN = UMEASURE_PREFIX_KIBI,\r
+#endif  // U_HIDE_INTERNAL_API\r
+\r
+    /**\r
+     * Binary prefix: mebi, 1024^2.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UMEASURE_PREFIX_MEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 2,\r
+\r
+    /**\r
+     * Binary prefix: gibi, 1024^3.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UMEASURE_PREFIX_GIBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 3,\r
+\r
+    /**\r
+     * Binary prefix: tebi, 1024^4.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UMEASURE_PREFIX_TEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 4,\r
+\r
+    /**\r
+     * Binary prefix: pebi, 1024^5.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UMEASURE_PREFIX_PEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 5,\r
+\r
+    /**\r
+     * Binary prefix: exbi, 1024^6.\r
+     *\r
+     * @draft ICU 69\r
      */\r
-    UMEASURE_SI_PREFIX_YOCTO = -24\r
-} UMeasureSIPrefix;\r
+    UMEASURE_PREFIX_EXBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 6,\r
+\r
+    /**\r
+     * Binary prefix: zebi, 1024^7.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UMEASURE_PREFIX_ZEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 7,\r
+\r
+    /**\r
+     * Binary prefix: yobi, 1024^8.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UMEASURE_PREFIX_YOBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 8,\r
+\r
+#ifndef U_HIDE_INTERNAL_API\r
+    /**\r
+     * ICU use only.\r
+     * Used to determine the set of base-1024 binary prefixes.\r
+     * @internal\r
+     */\r
+    UMEASURE_PREFIX_INTERNAL_MAX_BIN = UMEASURE_PREFIX_YOBI,\r
+#endif  // U_HIDE_INTERNAL_API\r
+} UMeasurePrefix;\r
+\r
+/**\r
+ * Returns the base of the factor associated with the given unit prefix: the\r
+ * base is 10 for SI prefixes (kilo, micro) and 1024 for binary prefixes (kibi,\r
+ * mebi).\r
+ *\r
+ * @draft ICU 69\r
+ */\r
+U_CAPI int32_t U_EXPORT2 umeas_getPrefixBase(UMeasurePrefix unitPrefix);\r
+\r
+/**\r
+ * Returns the exponent of the factor associated with the given unit prefix, for\r
+ * example 3 for kilo, -6 for micro, 1 for kibi, 2 for mebi, 3 for gibi.\r
+ *\r
+ * @draft ICU 69\r
+ */\r
+U_CAPI int32_t U_EXPORT2 umeas_getPrefixPower(UMeasurePrefix unitPrefix);\r
+\r
 #endif // U_HIDE_DRAFT_API\r
 \r
 /**\r
@@ -243,34 +375,33 @@ class U_I18N_API MeasureUnit: public UObject {
      * @stable ICU 3.0\r
      */\r
     MeasureUnit();\r
-    \r
+\r
     /**\r
      * Copy constructor.\r
      * @stable ICU 3.0\r
      */\r
     MeasureUnit(const MeasureUnit &other);\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
     /**\r
      * Move constructor.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     MeasureUnit(MeasureUnit &&other) noexcept;\r
 \r
     /**\r
-     * Construct a MeasureUnit from a CLDR Unit Identifier, defined in UTS 35.\r
-     * Validates and canonicalizes the identifier.\r
+     * Construct a MeasureUnit from a CLDR Core Unit Identifier, defined in UTS\r
+     * 35. (Core unit identifiers and mixed unit identifiers are supported, long\r
+     * unit identifiers are not.) Validates and canonicalizes the identifier.\r
      *\r
      * <pre>\r
      * MeasureUnit example = MeasureUnit::forIdentifier("furlong-per-nanosecond")\r
      * </pre>\r
      *\r
-     * @param identifier The CLDR Unit Identifier\r
+     * @param identifier The CLDR Unit Identifier.\r
      * @param status Set if the identifier is invalid.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);\r
-#endif // U_HIDE_DRAFT_API\r
 \r
     /**\r
      * Copy assignment operator.\r
@@ -278,13 +409,11 @@ class U_I18N_API MeasureUnit: public UObject {
      */\r
     MeasureUnit &operator=(const MeasureUnit &other);\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
     /**\r
      * Move assignment operator.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     MeasureUnit &operator=(MeasureUnit &&other) noexcept;\r
-#endif // U_HIDE_DRAFT_API\r
 \r
     /**\r
      * Returns a polymorphic clone of this object.  The result will\r
@@ -333,12 +462,11 @@ class U_I18N_API MeasureUnit: public UObject {
      */\r
     const char *getSubtype() const;\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
     /**\r
-     * Get the CLDR Unit Identifier for this MeasureUnit, as defined in UTS 35.\r
+     * Get CLDR Unit Identifier for this MeasureUnit, as defined in UTS 35.\r
      *\r
      * @return The string form of this unit, owned by this MeasureUnit.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     const char* getIdentifier() const;\r
 \r
@@ -347,38 +475,43 @@ class U_I18N_API MeasureUnit: public UObject {
      *\r
      * @param status Set if an error occurs.\r
      * @return The unit complexity.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UMeasureUnitComplexity getComplexity(UErrorCode& status) const;\r
 \r
+#ifndef U_HIDE_DRAFT_API\r
     /**\r
-     * Creates a MeasureUnit which is this SINGLE unit augmented with the specified SI prefix.\r
-     * For example, UMEASURE_SI_PREFIX_KILO for "kilo".\r
+     * Creates a MeasureUnit which is this SINGLE unit augmented with the specified prefix.\r
+     * For example, UMEASURE_PREFIX_KILO for "kilo", or UMEASURE_PREFIX_KIBI for "kibi".\r
      *\r
-     * There is sufficient locale data to format all standard SI prefixes.\r
+     * There is sufficient locale data to format all standard prefixes.\r
      *\r
      * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an error will\r
      * occur. For more information, see UMeasureUnitComplexity.\r
      *\r
-     * @param prefix The SI prefix, from UMeasureSIPrefix.\r
+     * @param prefix The prefix, from UMeasurePrefix.\r
      * @param status Set if this is not a SINGLE unit or if another error occurs.\r
      * @return A new SINGLE unit.\r
-     * @draft ICU 67\r
+     * @draft ICU 69\r
      */\r
-    MeasureUnit withSIPrefix(UMeasureSIPrefix prefix, UErrorCode& status) const;\r
+    MeasureUnit withPrefix(UMeasurePrefix prefix, UErrorCode& status) const;\r
 \r
     /**\r
-     * Gets the current SI prefix of this SINGLE unit. For example, if the unit has the SI prefix\r
-     * "kilo", then UMEASURE_SI_PREFIX_KILO is returned.\r
+     * Returns the current SI or binary prefix of this SINGLE unit. For example,\r
+     * if the unit has the prefix "kilo", then UMEASURE_PREFIX_KILO is\r
+     * returned.\r
      *\r
      * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an error will\r
      * occur. For more information, see UMeasureUnitComplexity.\r
      *\r
      * @param status Set if this is not a SINGLE unit or if another error occurs.\r
-     * @return The SI prefix of this SINGLE unit, from UMeasureSIPrefix.\r
-     * @draft ICU 67\r
+     * @return The prefix of this SINGLE unit, from UMeasurePrefix.\r
+     * @see umeas_getPrefixBase\r
+     * @see umeas_getPrefixPower\r
+     * @draft ICU 69\r
      */\r
-    UMeasureSIPrefix getSIPrefix(UErrorCode& status) const;\r
+    UMeasurePrefix getPrefix(UErrorCode& status) const;\r
+#endif // U_HIDE_DRAFT_API\r
 \r
     /**\r
      * Creates a MeasureUnit which is this SINGLE unit augmented with the specified dimensionality\r
@@ -392,7 +525,7 @@ class U_I18N_API MeasureUnit: public UObject {
      * @param dimensionality The dimensionality (power).\r
      * @param status Set if this is not a SINGLE unit or if another error occurs.\r
      * @return A new SINGLE unit.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;\r
 \r
@@ -407,7 +540,7 @@ class U_I18N_API MeasureUnit: public UObject {
      *\r
      * @param status Set if this is not a SINGLE unit or if another error occurs.\r
      * @return The dimensionality (power) of this simple unit.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     int32_t getDimensionality(UErrorCode& status) const;\r
 \r
@@ -421,7 +554,7 @@ class U_I18N_API MeasureUnit: public UObject {
      *\r
      * @param status Set if this is a MIXED unit or if another error occurs.\r
      * @return The reciprocal of the target unit.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     MeasureUnit reciprocal(UErrorCode& status) const;\r
 \r
@@ -440,10 +573,9 @@ class U_I18N_API MeasureUnit: public UObject {
      * @param other The MeasureUnit to multiply with the target.\r
      * @param status Set if this or other is a MIXED unit or if another error occurs.\r
      * @return The product of the target unit with the provided unit.\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;\r
-#endif // U_HIDE_DRAFT_API\r
 \r
 #ifndef U_HIDE_DRAFT_API\r
     /**\r
@@ -547,7 +679,7 @@ class U_I18N_API MeasureUnit: public UObject {
 // the "End generated createXXX methods" comment is auto generated code\r
 // and must not be edited manually. For instructions on how to correctly\r
 // update this code, refer to:\r
-// http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit\r
+// docs/processes/release/tasks/updating-measure-unit.md\r
 //\r
 // Start generated createXXX methods\r
 \r
@@ -839,6 +971,24 @@ class U_I18N_API MeasureUnit: public UObject {
      */\r
     static MeasureUnit getKarat();\r
 \r
+#ifndef U_HIDE_DRAFT_API\r
+    /**\r
+     * Returns by pointer, unit of concentr: milligram-ofglucose-per-deciliter.\r
+     * Caller owns returned value and must free it.\r
+     * Also see {@link #getMilligramOfglucosePerDeciliter()}.\r
+     * @param status ICU error code.\r
+     * @draft ICU 69\r
+     */\r
+    static MeasureUnit *createMilligramOfglucosePerDeciliter(UErrorCode &status);\r
+\r
+    /**\r
+     * Returns by value, unit of concentr: milligram-ofglucose-per-deciliter.\r
+     * Also see {@link #createMilligramOfglucosePerDeciliter()}.\r
+     * @draft ICU 69\r
+     */\r
+    static MeasureUnit getMilligramOfglucosePerDeciliter();\r
+#endif /* U_HIDE_DRAFT_API */\r
+\r
     /**\r
      * Returns by pointer, unit of concentr: milligram-per-deciliter.\r
      * Caller owns returned value and must free it.\r
@@ -3519,7 +3669,6 @@ class U_I18N_API MeasureUnit: public UObject {
      */\r
     static MeasureUnit getTeaspoon();\r
 \r
-\r
 // End generated createXXX methods\r
 \r
  protected:\r
@@ -3569,10 +3718,14 @@ private:
     /** Internal version of public API */\r
     LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;\r
 \r
-    friend struct MeasureUnitImpl;\r
+    friend class MeasureUnitImpl;\r
+\r
+    // For access to findBySubType\r
+    friend class number::impl::LongNameHandler;\r
 };\r
 \r
-#ifndef U_HIDE_DRAFT_API  // @draft ICU 68\r
+#ifndef U_HIDE_DRAFT_API\r
+// inline impl of @draft ICU 68 method\r
 inline std::pair<LocalArray<MeasureUnit>, int32_t>\r
 MeasureUnit::splitToSingleUnits(UErrorCode& status) const {\r
     int32_t length;\r
index 8519134..878bfe6 100644 (file)
@@ -132,7 +132,7 @@ class NumberFormat;
  *   <li>messageText can contain quoted literal strings including syntax characters.\r
  *       A quoted literal string begins with an ASCII apostrophe and a syntax character\r
  *       (usually a {curly brace}) and continues until the next single apostrophe.\r
- *       A double ASCII apostrohpe inside or outside of a quoted string represents\r
+ *       A double ASCII apostrophe inside or outside of a quoted string represents\r
  *       one literal apostrophe.\r
  *   <li>Quotable syntax characters are the {curly braces} in all messageText parts,\r
  *       plus the '#' sign in a messageText immediately inside a pluralStyle,\r
index 9bd31d3..8ad3b4d 100644 (file)
 \r
 /**\r
  * \file\r
- * \brief C++ API: Library for localized number formatting introduced in ICU 60.\r
- *\r
- * This library was introduced in ICU 60 to simplify the process of formatting localized number strings.\r
- * Basic usage examples:\r
+ * \brief C++ API: All-in-one formatter for localized numbers, currencies, and units.\r
+ * \r
+ * For a full list of options, see icu::number::NumberFormatterSettings.\r
  *\r
  * <pre>\r
  * // Most basic usage:\r
@@ -347,15 +346,15 @@ class U_I18N_API Notation : public UMemory {
 \r
     union NotationUnion {\r
         // For NTN_SCIENTIFIC\r
-        /** @internal */\r
+        /** @internal (private) */\r
         struct ScientificSettings {\r
-            /** @internal */\r
+            /** @internal (private) */\r
             int8_t fEngineeringInterval;\r
-            /** @internal */\r
+            /** @internal (private) */\r
             bool fRequireMinInt;\r
-            /** @internal */\r
+            /** @internal (private) */\r
             impl::digits_t fMinExponentDigits;\r
-            /** @internal */\r
+            /** @internal (private) */\r
             UNumberSignDisplay fExponentSignDisplay;\r
         } scientific;\r
 \r
@@ -660,6 +659,17 @@ class U_I18N_API Precision : public UMemory {
      */\r
     static CurrencyPrecision currency(UCurrencyUsage currencyUsage);\r
 \r
+#ifndef U_HIDE_DRAFT_API\r
+    /**\r
+     * Configure how trailing zeros are displayed on numbers. For example, to hide trailing zeros\r
+     * when the number is an integer, use UNUM_TRAILING_ZERO_HIDE_IF_WHOLE.\r
+     *\r
+     * @param trailingZeroDisplay Option to configure the display of trailing zeros.\r
+     * @draft ICU 69\r
+     */\r
+    Precision trailingZeroDisplay(UNumberTrailingZeroDisplay trailingZeroDisplay) const;\r
+#endif // U_HIDE_DRAFT_API\r
+\r
   private:\r
     enum PrecisionType {\r
         RND_BOGUS,\r
@@ -684,32 +694,36 @@ class U_I18N_API Precision : public UMemory {
     } fType;\r
 \r
     union PrecisionUnion {\r
-        /** @internal */\r
+        /** @internal (private) */\r
         struct FractionSignificantSettings {\r
             // For RND_FRACTION, RND_SIGNIFICANT, and RND_FRACTION_SIGNIFICANT\r
-            /** @internal */\r
+            /** @internal (private) */\r
             impl::digits_t fMinFrac;\r
-            /** @internal */\r
+            /** @internal (private) */\r
             impl::digits_t fMaxFrac;\r
-            /** @internal */\r
+            /** @internal (private) */\r
             impl::digits_t fMinSig;\r
-            /** @internal */\r
+            /** @internal (private) */\r
             impl::digits_t fMaxSig;\r
+            /** @internal (private) */\r
+            UNumberRoundingPriority fPriority;\r
         } fracSig;\r
-        /** @internal */\r
+        /** @internal (private) */\r
         struct IncrementSettings {\r
             // For RND_INCREMENT, RND_INCREMENT_ONE, and RND_INCREMENT_FIVE\r
-            /** @internal */\r
+            /** @internal (private) */\r
             double fIncrement;\r
-            /** @internal */\r
+            /** @internal (private) */\r
             impl::digits_t fMinFrac;\r
-            /** @internal */\r
+            /** @internal (private) */\r
             impl::digits_t fMaxFrac;\r
         } increment;\r
         UCurrencyUsage currencyUsage; // For RND_CURRENCY\r
         UErrorCode errorCode; // For RND_ERROR\r
     } fUnion;\r
 \r
+    UNumberTrailingZeroDisplay fTrailingZeroDisplay = UNUM_TRAILING_ZERO_AUTO;\r
+\r
     typedef PrecisionUnion::FractionSignificantSettings FractionSignificantSettings;\r
     typedef PrecisionUnion::IncrementSettings IncrementSettings;\r
 \r
@@ -741,8 +755,11 @@ class U_I18N_API Precision : public UMemory {
 \r
     static Precision constructSignificant(int32_t minSig, int32_t maxSig);\r
 \r
-    static Precision\r
-    constructFractionSignificant(const FractionPrecision &base, int32_t minSig, int32_t maxSig);\r
+    static Precision constructFractionSignificant(\r
+        const FractionPrecision &base,\r
+        int32_t minSig,\r
+        int32_t maxSig,\r
+        UNumberRoundingPriority priority);\r
 \r
     static IncrementPrecision constructIncrement(double increment, int32_t minFrac);\r
 \r
@@ -784,16 +801,38 @@ class U_I18N_API Precision : public UMemory {
  */\r
 class U_I18N_API FractionPrecision : public Precision {\r
   public:\r
+#ifndef U_HIDE_DRAFT_API\r
     /**\r
-     * Ensure that no less than this number of significant digits are retained when rounding according to fraction\r
-     * rules.\r
+     * Override maximum fraction digits with maximum significant digits depending on the magnitude\r
+     * of the number. See UNumberRoundingPriority.\r
      *\r
-     * <p>\r
-     * For example, with integer rounding, the number 3.141 becomes "3". However, with minimum figures set to 2, 3.141\r
-     * becomes "3.1" instead.\r
+     * @param minSignificantDigits\r
+     *            Pad trailing zeros to achieve this minimum number of significant digits.\r
+     * @param maxSignificantDigits\r
+     *            Round the number to achieve this maximum number of significant digits.\r
+     * @param priority\r
+     *            How to disambiguate between fraction digits and significant digits.\r
+     * @return A precision for chaining or passing to the NumberFormatter precision() setter.\r
      *\r
-     * <p>\r
-     * This setting does not affect the number of trailing zeros. For example, 3.01 would print as "3", not "3.0".\r
+     * @draft ICU 69\r
+     */\r
+    Precision withSignificantDigits(\r
+        int32_t minSignificantDigits,\r
+        int32_t maxSignificantDigits,\r
+        UNumberRoundingPriority priority) const;\r
+#endif // U_HIDE_DRAFT_API\r
+\r
+    /**\r
+     * Ensure that no less than this number of significant digits are retained when rounding\r
+     * according to fraction rules.\r
+     *\r
+     * For example, with integer rounding, the number 3.141 becomes "3". However, with minimum\r
+     * figures set to 2, 3.141 becomes "3.1" instead.\r
+     *\r
+     * This setting does not affect the number of trailing zeros. For example, 3.01 would print as\r
+     * "3", not "3.0".\r
+     *\r
+     * This is equivalent to `withSignificantDigits(1, minSignificantDigits, RELAXED)`.\r
      *\r
      * @param minSignificantDigits\r
      *            The number of significant figures to guarantee.\r
@@ -803,16 +842,16 @@ class U_I18N_API FractionPrecision : public Precision {
     Precision withMinDigits(int32_t minSignificantDigits) const;\r
 \r
     /**\r
-     * Ensure that no more than this number of significant digits are retained when rounding according to fraction\r
-     * rules.\r
+     * Ensure that no more than this number of significant digits are retained when rounding\r
+     * according to fraction rules.\r
      *\r
-     * <p>\r
-     * For example, with integer rounding, the number 123.4 becomes "123". However, with maximum figures set to 2, 123.4\r
-     * becomes "120" instead.\r
+     * For example, with integer rounding, the number 123.4 becomes "123". However, with maximum\r
+     * figures set to 2, 123.4 becomes "120" instead.\r
      *\r
-     * <p>\r
-     * This setting does not affect the number of trailing zeros. For example, with fixed fraction of 2, 123.4 would\r
-     * become "120.00".\r
+     * This setting does not affect the number of trailing zeros. For example, with fixed fraction\r
+     * of 2, 123.4 would become "120.00".\r
+     *\r
+     * This is equivalent to `withSignificantDigits(1, maxSignificantDigits, STRICT)`.\r
      *\r
      * @param maxSignificantDigits\r
      *            Round the number to no more than this number of significant figures.\r
@@ -1131,33 +1170,35 @@ class U_I18N_API Scale : public UMemory {
 \r
 namespace impl {\r
 \r
-// Do not enclose entire Usage with #ifndef U_HIDE_INTERNAL_API, needed for a protected field\r
+// Do not enclose entire StringProp with #ifndef U_HIDE_INTERNAL_API, needed for a protected field\r
 /**\r
  * Manages NumberFormatterSettings::usage()'s char* instance on the heap.\r
  * @internal\r
  */\r
-class U_I18N_API Usage : public UMemory {\r
+class U_I18N_API StringProp : public UMemory {\r
 \r
 #ifndef U_HIDE_INTERNAL_API\r
 \r
   public:\r
     /** @internal */\r
-    Usage(const Usage& other);\r
+    StringProp(const StringProp &other);\r
 \r
     /** @internal */\r
-    Usage& operator=(const Usage& other);\r
+    StringProp &operator=(const StringProp &other);\r
 \r
     /** @internal */\r
-    Usage(Usage &&src) U_NOEXCEPT;\r
+    StringProp(StringProp &&src) U_NOEXCEPT;\r
 \r
     /** @internal */\r
-    Usage& operator=(Usage&& src) U_NOEXCEPT;\r
+    StringProp &operator=(StringProp &&src) U_NOEXCEPT;\r
 \r
     /** @internal */\r
-    ~Usage();\r
+    ~StringProp();\r
 \r
     /** @internal */\r
-    int16_t length() const { return fLength; }\r
+    int16_t length() const {\r
+        return fLength;\r
+    }\r
 \r
     /** @internal\r
      * Makes a copy of value. Set to "" to unset.\r
@@ -1165,18 +1206,21 @@ class U_I18N_API Usage : public UMemory {
     void set(StringPiece value);\r
 \r
     /** @internal */\r
-    bool isSet() const { return fLength > 0; }\r
+    bool isSet() const {\r
+        return fLength > 0;\r
+    }\r
 \r
 #endif // U_HIDE_INTERNAL_API\r
 \r
   private:\r
-    char *fUsage;\r
+    char *fValue;\r
     int16_t fLength;\r
     UErrorCode fError;\r
 \r
-    Usage() : fUsage(nullptr), fLength(0), fError(U_ZERO_ERROR) {}\r
+    StringProp() : fValue(nullptr), fLength(0), fError(U_ZERO_ERROR) {\r
+    }\r
 \r
-    /** @internal */\r
+    /** @internal (private) */\r
     UBool copyErrorTo(UErrorCode &status) const {\r
         if (U_FAILURE(fError)) {\r
             status = fError;\r
@@ -1185,7 +1229,7 @@ class U_I18N_API Usage : public UMemory {
         return false;\r
     }\r
 \r
-    // Allow NumberFormatterImpl to access fUsage.\r
+    // Allow NumberFormatterImpl to access fValue.\r
     friend class impl::NumberFormatterImpl;\r
 \r
     // Allow skeleton generation code to access private members.\r
@@ -1480,7 +1524,10 @@ struct U_I18N_API MacroProps : public UMemory {
     Scale scale;  // = Scale();  (benign value)\r
 \r
     /** @internal */\r
-    Usage usage;  // = Usage();  (no usage)\r
+    StringProp usage;  // = StringProp();  (no usage)\r
+\r
+    /** @internal */\r
+    StringProp unitDisplayCase;  // = StringProp();  (nominative)\r
 \r
     /** @internal */\r
     const AffixPatternProvider* affixProvider = nullptr;  // no ownership\r
@@ -1503,7 +1550,8 @@ struct U_I18N_API MacroProps : public UMemory {
     bool copyErrorTo(UErrorCode &status) const {\r
         return notation.copyErrorTo(status) || precision.copyErrorTo(status) ||\r
                padder.copyErrorTo(status) || integerWidth.copyErrorTo(status) ||\r
-               symbols.copyErrorTo(status) || scale.copyErrorTo(status) || usage.copyErrorTo(status);\r
+               symbols.copyErrorTo(status) || scale.copyErrorTo(status) || usage.copyErrorTo(status) ||\r
+               unitDisplayCase.copyErrorTo(status);\r
     }\r
 };\r
 \r
@@ -2171,6 +2219,25 @@ class U_I18N_API NumberFormatterSettings {
     Derived usage(StringPiece usage) &&;\r
 #endif // U_HIDE_DRAFT_API\r
 \r
+#ifndef U_HIDE_DRAFT_API\r
+#ifndef U_HIDE_INTERNAL_API\r
+    /**\r
+     * Specifies the desired case for a unit formatter's output (e.g.\r
+     * accusative, dative, genitive).\r
+     *\r
+     * @internal ICU 69 technology preview\r
+     */\r
+    Derived unitDisplayCase(StringPiece unitDisplayCase) const &;\r
+\r
+    /**\r
+     * Overload of unitDisplayCase() for use on an rvalue reference.\r
+     *\r
+     * @internal ICU 69 technology preview\r
+     */\r
+    Derived unitDisplayCase(StringPiece unitDisplayCase) &&;\r
+#endif // U_HIDE_INTERNAL_API\r
+#endif // U_HIDE_DRAFT_API\r
+\r
 #ifndef U_HIDE_INTERNAL_API\r
 \r
     /**\r
@@ -2223,6 +2290,9 @@ class U_I18N_API NumberFormatterSettings {
      * The returned skeleton is in normalized form, such that two number formatters with equivalent\r
      * behavior should produce the same skeleton.\r
      *\r
+     * For more information on number skeleton strings, see:\r
+     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html\r
+     *\r
      * @return A number skeleton string with behavior corresponding to this number formatter.\r
      * @stable ICU 62\r
      */\r
@@ -2658,6 +2728,14 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
      * @draft ICU 68\r
      */\r
     MeasureUnit getOutputUnit(UErrorCode& status) const;\r
+\r
+    /**\r
+     * Gets the gender of the formatted output. Returns "" when the gender is\r
+     * unknown, or for ungendered languages.\r
+     *\r
+     * @internal ICU 69 technology preview.\r
+     */\r
+    const char *getGender(UErrorCode& status) const;\r
 #endif // U_HIDE_DRAFT_API\r
 \r
 #ifndef U_HIDE_INTERNAL_API\r
@@ -2685,7 +2763,7 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
 \r
     /**\r
      * Internal constructor from data type. Adopts the data pointer.\r
-     * @internal\r
+     * @internal (private)\r
      */\r
     explicit FormattedNumber(impl::UFormattedNumberData *results)\r
         : fData(results), fErrorCode(U_ZERO_ERROR) {}\r
@@ -2702,8 +2780,6 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
     friend struct impl::UFormattedNumberImpl;\r
 };\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
-// Note: This is draft ICU 65\r
 template<typename StringClass>\r
 StringClass FormattedNumber::toDecimalNumber(UErrorCode& status) const {\r
     StringClass result;\r
@@ -2711,7 +2787,6 @@ StringClass FormattedNumber::toDecimalNumber(UErrorCode& status) const {
     toDecimalNumber(sink, status);\r
     return result;\r
 }\r
-#endif // U_HIDE_DRAFT_API\r
 \r
 /**\r
  * See the main description in numberformatter.h for documentation and examples.\r
@@ -2747,6 +2822,9 @@ class U_I18N_API NumberFormatter final {
      * It is possible for an error to occur while parsing. See the overload of this method if you are\r
      * interested in the location of a possible parse error.\r
      *\r
+     * For more information on number skeleton strings, see:\r
+     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html\r
+     *\r
      * @param skeleton\r
      *            The skeleton string off of which to base this NumberFormatter.\r
      * @param status\r
@@ -2763,6 +2841,9 @@ class U_I18N_API NumberFormatter final {
      * If an error occurs while parsing the skeleton string, the offset into the skeleton string at\r
      * which the error occurred will be saved into the UParseError, if provided.\r
      *\r
+     * For more information on number skeleton strings, see:\r
+     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html\r
+     *\r
      * @param skeleton\r
      *            The skeleton string off of which to base this NumberFormatter.\r
      * @param perror\r
index 74a5c7f..7466dc9 100644 (file)
@@ -73,7 +73,7 @@ struct UFormattedNumberRangeImpl;
  * Export an explicit template instantiation. See datefmt.h\r
  * (When building DLLs for Windows this is required.)\r
  */\r
-#if U_PLATFORM == U_PF_WINDOWS && !defined(U_IN_DOXYGEN)\r
+#if U_PLATFORM == U_PF_WINDOWS && !defined(U_IN_DOXYGEN) && !defined(U_STATIC_IMPLEMENTATION)\r
 } // namespace icu::number\r
 U_NAMESPACE_END\r
 \r
@@ -608,49 +608,6 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
     /** @copydoc FormattedValue::nextPosition() */\r
     UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;\r
 \r
-#ifndef U_HIDE_DEPRECATED_API\r
-    /**\r
-     * Export the first formatted number as a decimal number. This endpoint\r
-     * is useful for obtaining the exact number being printed after scaling\r
-     * and rounding have been applied by the number range formatting pipeline.\r
-     *\r
-     * The syntax of the unformatted number is a "numeric string"\r
-     * as defined in the Decimal Arithmetic Specification, available at\r
-     * http://speleotrove.com/decimal\r
-     *\r
-     * TODO(ICU-21275): This function will be removed in ICU 69.\r
-     * Use getDecimalNumbers() instead.\r
-     *\r
-     * @param status Set if an error occurs.\r
-     * @return A decimal representation of the first formatted number.\r
-     * @deprecated ICU 68 Use getDecimalNumbers instead.\r
-     * @see NumberRangeFormatter\r
-     * @see #getSecondDecimal\r
-     */\r
-    UnicodeString getFirstDecimal(UErrorCode& status) const;\r
-\r
-    /**\r
-     * Export the second formatted number as a decimal number. This endpoint\r
-     * is useful for obtaining the exact number being printed after scaling\r
-     * and rounding have been applied by the number range formatting pipeline.\r
-     *\r
-     * The syntax of the unformatted number is a "numeric string"\r
-     * as defined in the Decimal Arithmetic Specification, available at\r
-     * http://speleotrove.com/decimal\r
-     *\r
-     * TODO(ICU-21275): This function will be removed in ICU 69.\r
-     * Use getDecimalNumbers() instead.\r
-     *\r
-     * @param status Set if an error occurs.\r
-     * @return A decimal representation of the second formatted number.\r
-     * @deprecated ICU 68 Use getDecimalNumbers instead.\r
-     * @see NumberRangeFormatter\r
-     * @see #getFirstDecimal\r
-     */\r
-    UnicodeString getSecondDecimal(UErrorCode& status) const;\r
-#endif // U_HIDE_DEPRECATED_API\r
-\r
-\r
 #ifndef U_HIDE_DRAFT_API\r
     /**\r
      * Extracts the formatted range as a pair of decimal numbers. This endpoint\r
@@ -749,7 +706,7 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
 };\r
 \r
 #ifndef U_HIDE_DRAFT_API\r
-// Note: This is draft ICU 68\r
+// inline impl of @draft ICU 68 method\r
 template<typename StringClass>\r
 std::pair<StringClass, StringClass> FormattedNumberRange::getDecimalNumbers(UErrorCode& status) const {\r
     StringClass str1;\r
index aa5e437..9d01faf 100644 (file)
@@ -543,7 +543,7 @@ enum URBNFRuleSetTag {
  * names in this array will be treated as public rule set names by the API.  Each subsequent\r
  * element is an array of localizations of these names.  The first element of one of these\r
  * subarrays is the locale name, and the remaining elements are localizations of the\r
- * public rule set names, in the same order as they were listed in the first arrray.</p>\r
+ * public rule set names, in the same order as they were listed in the first array.</p>\r
  * <p>In the syntax, angle brackets '<', '>' are used to delimit the arrays, and comma ',' is used\r
  * to separate elements of an array.  Whitespace is ignored, unless quoted.</p>\r
  * <p>For example:<pre>\r
@@ -653,7 +653,7 @@ public:
 \r
   /**\r
    * Creates a RuleBasedNumberFormat from a predefined ruleset.  The selector\r
-   * code choosed among three possible predefined formats: spellout, ordinal,\r
+   * code chose among three possible predefined formats: spellout, ordinal,\r
    * and duration.\r
    * @param tag A selector code specifying which kind of formatter to create for that\r
    * locale.  There are four legal values: URBNF_SPELLOUT, which creates a formatter that\r
index 274b441..d433472 100644 (file)
@@ -107,7 +107,7 @@ public:
 \r
     /**\r
      * Makes the <code>TimeZoneRule</code> ready to handle actual timezone\r
-     * calcuation APIs.  This method collects time zone rules specified\r
+     * calculation APIs.  This method collects time zone rules specified\r
      * by the caller via the constructor and addTransitionRule() and\r
      * builds internal structure for making the object ready to support\r
      * time zone APIs such as getOffset(), getNextTransition() and others.\r
@@ -302,12 +302,16 @@ public:
     virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,\r
         const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const;\r
 \r
+#ifndef U_FORCE_HIDE_DRAFT_API\r
     /**\r
      * Get time zone offsets from local wall time.\r
-     * @internal\r
+     * @draft ICU 69\r
      */\r
-    virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
+    virtual void getOffsetFromLocal(\r
+        UDate date, UTimeZoneLocalOption nonExistingTimeOpt,\r
+        UTimeZoneLocalOption duplicatedTimeOpt,\r
         int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;\r
+#endif /* U_FORCE_HIDE_DRAFT_API */\r
 \r
 private:\r
     void deleteRules(void);\r
index bc49679..0eb604f 100644 (file)
@@ -620,12 +620,16 @@ public:
     virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,\r
                            int32_t& dstOffset, UErrorCode& ec) const;\r
 \r
+#ifndef U_FORCE_HIDE_DRAFT_API\r
     /**\r
      * Get time zone offsets from local wall time.\r
-     * @internal\r
+     * @draft ICU 69\r
      */\r
-    virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
+    virtual void getOffsetFromLocal(\r
+        UDate date, UTimeZoneLocalOption nonExistingTimeOpt,\r
+        UTimeZoneLocalOption duplicatedTimeOpt,\r
         int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;\r
+#endif /* U_FORCE_HIDE_DRAFT_API */\r
 \r
     /**\r
      * Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add\r
index d5f4059..8bc29ad 100644 (file)
@@ -112,7 +112,7 @@ class UVector64;
  * Note, RuleBasedCollator is not to be subclassed.\r
  * @see        Collator\r
  */\r
-class U_I18N_API RuleBasedCollator : public Collator {\r
+class U_I18N_API RuleBasedCollator U_FINAL : public Collator {\r
 public:\r
     /**\r
      * RuleBasedCollator constructor. This takes the table rules and builds a\r
index 98c3c72..2dd37e2 100644 (file)
@@ -375,7 +375,7 @@ class TransliteratorIDParser;
  *\r
  * <p>It is also possible to match the beginning or the end of the text using a <code>UnicodeSet</code>.\r
  * This is done by including a virtual anchor character '<code>$</code>' at the end of the\r
- * set pattern. Although this is usually the match chafacter for the end anchor, the set will\r
+ * set pattern. Although this is usually the match character for the end anchor, the set will\r
  * match either the beginning or the end of the text, depending on its placement. For\r
  * example:\r
  *\r
@@ -683,8 +683,8 @@ public:
      * unambiguous transliterations.  After the last call to this\r
      * method, there may be untransliterated text that is waiting for\r
      * more input to resolve an ambiguity.  In order to perform these\r
-     * pending transliterations, clients should call {@link\r
-     * #finishTransliteration } after the last call to this\r
+     * pending transliterations, clients should call\r
+     * {@link #finishTransliteration } after the last call to this\r
      * method has been made.\r
      *\r
      * @param text the buffer holding transliterated and untransliterated text\r
@@ -741,8 +741,7 @@ public:
     /**\r
      * Transliterates the portion of the text buffer that can be\r
      * transliterated unambiguosly.  This is a convenience method; see\r
-     * {@link\r
-     * #transliterate(Replaceable&, UTransPosition&, const UnicodeString&, UErrorCode&) const }\r
+     * {@link #transliterate(Replaceable&, UTransPosition&, const UnicodeString&, UErrorCode&) const }\r
      * for details.\r
      * @param text the buffer holding transliterated and\r
      * untransliterated text\r
@@ -761,8 +760,7 @@ public:
      * <code>transliterate()</code>.\r
      * @param text the buffer holding transliterated and\r
      * untransliterated text.\r
-     * @param index the array of indices previously passed to {@link\r
-     * #transliterate }\r
+     * @param index the array of indices previously passed to {@link #transliterate }\r
      * @stable ICU 2.0\r
      */\r
     virtual void finishTransliteration(Replaceable& text,\r
@@ -883,7 +881,7 @@ public:
      * @param text the text to be transliterated\r
      * @param index the position indices\r
      * @param incremental if true, then assume more characters may be inserted\r
-     * at index.limit, and postpone processing to accomodate future incoming\r
+     * at index.limit, and postpone processing to accommodate future incoming\r
      * characters\r
      * @stable ICU 2.4\r
      */\r
@@ -913,7 +911,7 @@ private:
      * @param text the text to be transliterated\r
      * @param index the position indices\r
      * @param incremental if true, then assume more characters may be inserted\r
-     * at index.limit, and postpone processing to accomodate future incoming\r
+     * at index.limit, and postpone processing to accommodate future incoming\r
      * characters\r
      * @param rollback if true and if incremental is true, then perform special\r
      * incremental processing, as described above, and undo partial\r
@@ -968,8 +966,8 @@ public:
 \r
     /**\r
      * Returns a name for this transliterator that is appropriate for\r
-     * display to the user in the default locale.  See {@link\r
-     * #getDisplayName } for details.\r
+     * display to the user in the default locale.  See {@link #getDisplayName }\r
+     * for details.\r
      * @param ID     the string identifier for this transliterator\r
      * @param result Output param to receive the display name\r
      * @return       A reference to 'result'.\r
@@ -1168,8 +1166,8 @@ public:
      * input text by this Transliterator.  This incorporates this\r
      * object's current filter; if the filter is changed, the return\r
      * value of this function will change.  The default implementation\r
-     * returns an empty set.  Some subclasses may override {@link\r
-     * #handleGetSourceSet } to return a more precise result.  The\r
+     * returns an empty set.  Some subclasses may override\r
+     * {@link #handleGetSourceSet } to return a more precise result. The\r
      * return result is approximate in any case and is intended for\r
      * use by tests, tools, or utilities.\r
      * @param result receives result set; previous contents lost\r
index dcbd30a..06beb74 100644 (file)
@@ -193,7 +193,7 @@ public:
 \r
     /**\r
      * Returns an enumeration of all available meta zone IDs used by the given time zone.\r
-     * @param tzID The canoical tiem zone ID.\r
+     * @param tzID The canonical time zone ID.\r
      * @param status Receives the status.\r
      * @return an enumeration object, owned by the caller.\r
      * @stable ICU 50\r
index d03b35e..a70b96d 100644 (file)
@@ -372,7 +372,7 @@ public:
 \r
 /**\r
  * <code>AnnualTimeZoneRule</code> is a class used for representing a time zone\r
- * rule which takes effect annually.  The calenday system used for the rule is\r
+ * rule which takes effect annually.  The calendar system used for the rule is\r
  * is based on Gregorian calendar\r
  * \r
  * @stable ICU 3.8\r
index fde3e9e..729c656 100644 (file)
@@ -1617,6 +1617,109 @@ U_CAPI int32_t U_EXPORT2
 ucal_getTimeZoneIDForWindowsID(const UChar* winid, int32_t len, const char* region,\r
                                 UChar* id, int32_t idCapacity, UErrorCode* status);\r
 \r
+#ifndef U_FORCE_HIDE_DRAFT_API\r
+/**\r
+ * Options used by ucal_getTimeZoneOffsetFromLocal and BasicTimeZone::getOffsetFromLocal()\r
+ * to specify how to interpret an input time when it does not exist, or when it is ambiguous,\r
+ * around a time zone transition.\r
+ * @draft ICU 69\r
+ */\r
+enum UTimeZoneLocalOption {\r
+#ifndef U_HIDE_DRAFT_API\r
+    /**\r
+     * An input time is always interpreted as local time before\r
+     * a time zone transition.\r
+     * @draft ICU 69\r
+     */\r
+    UCAL_TZ_LOCAL_FORMER = 0x04,\r
+    /**\r
+     * An input time is always interpreted as local time after\r
+     * a time zone transition.\r
+     * @draft ICU 69\r
+     */\r
+    UCAL_TZ_LOCAL_LATTER = 0x0C,\r
+    /**\r
+     * An input time is interpreted as standard time when local\r
+     * time is switched to/from daylight saving time. When both\r
+     * sides of a time zone transition are standard time,\r
+     * or daylight saving time, the local time before the\r
+     * transition is used.\r
+     * @draft ICU 69\r
+     */\r
+    UCAL_TZ_LOCAL_STANDARD_FORMER = UCAL_TZ_LOCAL_FORMER | 0x01,\r
+    /**\r
+     * An input time is interpreted as standard time when local\r
+     * time is switched to/from daylight saving time. When both\r
+     * sides of a time zone transition are standard time,\r
+     * or daylight saving time, the local time after the\r
+     * transition is used.\r
+     * @draft ICU 69\r
+     */\r
+    UCAL_TZ_LOCAL_STANDARD_LATTER = UCAL_TZ_LOCAL_LATTER | 0x01,\r
+    /**\r
+     * An input time is interpreted as daylight saving time when\r
+     * local time is switched to/from standard time. When both\r
+     * sides of a time zone transition are standard time,\r
+     * or daylight saving time, the local time before the\r
+     * transition is used.\r
+     * @draft ICU 69\r
+     */\r
+    UCAL_TZ_LOCAL_DAYLIGHT_FORMER = UCAL_TZ_LOCAL_FORMER | 0x03,\r
+    /**\r
+     * An input time is interpreted as daylight saving time when\r
+     * local time is switched to/from standard time. When both\r
+     * sides of a time zone transition are standard time,\r
+     * or daylight saving time, the local time after the\r
+     * transition is used.\r
+     * @draft ICU 69\r
+     */\r
+    UCAL_TZ_LOCAL_DAYLIGHT_LATTER = UCAL_TZ_LOCAL_LATTER | 0x03,\r
+#else /* U_HIDE_DRAFT_API */\r
+    /**\r
+     * Dummy value to prevent empty enum if U_HIDE_DRAFT_API.\r
+     * This will go away when draft conditionals are removed.\r
+     * @internal\r
+     */\r
+    UCAL_TZ_LOCAL_NONE = 0,\r
+#endif /* U_HIDE_DRAFT_API */\r
+};\r
+typedef enum UTimeZoneLocalOption UTimeZoneLocalOption; /**< @draft ICU 69 */\r
+\r
+/**\r
+* Returns the time zone raw and GMT offset for the given moment\r
+* in time.  Upon return, local-millis = GMT-millis + rawOffset +\r
+* dstOffset.  All computations are performed in the proleptic\r
+* Gregorian calendar.\r
+*\r
+* @param cal The UCalendar which specify the local date and time value to query.\r
+* @param nonExistingTimeOpt The option to indicate how to interpret the date and\r
+* time in the calendar represent a local time that skipped at a positive time\r
+* zone transitions (e.g. when the daylight saving time starts or the time zone\r
+* offset is increased due to a time zone rule change).\r
+* @param duplicatedTimeOpt The option to indicate how to interpret the date and\r
+* time in the calendar represent a local time that repeating multiple times at a\r
+* negative time zone transition (e.g. when the daylight saving time ends or the\r
+* time zone offset is decreased due to a time zone rule change)\r
+* @param rawOffset output parameter to receive the raw offset, that\r
+* is, the offset not including DST adjustments.\r
+* If the status is set to one of the error code, the value set is unspecified.\r
+* @param dstOffset output parameter to receive the DST offset,\r
+* that is, the offset to be added to `rawOffset' to obtain the\r
+* total offset between local and GMT time. If DST is not in\r
+* effect, this value is zero; otherwise it is a positive value,\r
+* typically one hour.\r
+* If the status is set to one of the error code, the value set is unspecified.\r
+* @param status A pointer to a UErrorCode to receive any errors.\r
+* @draft ICU 69\r
+*/\r
+U_CAPI void U_EXPORT2\r
+ucal_getTimeZoneOffsetFromLocal(\r
+    const UCalendar* cal,\r
+    UTimeZoneLocalOption nonExistingTimeOpt,\r
+    UTimeZoneLocalOption duplicatedTimeOpt,\r
+    int32_t* rawOffset, int32_t* dstOffset, UErrorCode* status);\r
+#endif /* U_FORCE_HIDE_DRAFT_API */\r
+\r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
 \r
 #endif\r
index fd30de8..95c03ac 100644 (file)
@@ -83,7 +83,7 @@ typedef enum {
 } UCollationResult ;\r
 \r
 \r
-/** Enum containing attribute values for controling collation behavior.\r
+/** Enum containing attribute values for controlling collation behavior.\r
  * Here are all the allowable values. Not every attribute can take every value. The only\r
  * universal value is UCOL_DEFAULT, which resets the attribute value to the predefined  \r
  * value for that locale \r
index aa03322..3eb741a 100644 (file)
@@ -976,37 +976,35 @@ udat_getBooleanAttribute(const UDateFormat* fmt, UDateFormatBooleanAttribute att
 U_CAPI void U_EXPORT2\r
 udat_setBooleanAttribute(UDateFormat *fmt, UDateFormatBooleanAttribute attr, UBool newValue, UErrorCode* status);\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
 /**\r
  * Hour Cycle.\r
- * @draft ICU 67\r
+ * @stable ICU 67\r
  */\r
 typedef enum UDateFormatHourCycle {\r
     /**\r
      * Hour in am/pm (0~11)\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UDAT_HOUR_CYCLE_11,\r
 \r
     /**\r
      * Hour in am/pm (1~12)\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UDAT_HOUR_CYCLE_12,\r
 \r
     /**\r
      * Hour in day (0~23)\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UDAT_HOUR_CYCLE_23,\r
 \r
     /**\r
      * Hour in day (1~24)\r
-     * @draft ICU 67\r
+     * @stable ICU 67\r
      */\r
     UDAT_HOUR_CYCLE_24\r
 } UDateFormatHourCycle;\r
-#endif  /* U_HIDE_DRAFT_API */\r
 \r
 #if U_SHOW_CPLUSPLUS_API\r
 \r
index c215059..495371a 100644 (file)
@@ -252,7 +252,6 @@ udtitvfmt_format(const UDateIntervalFormat* formatter,
                 UErrorCode*     status);\r
 \r
 \r
-#ifndef U_HIDE_DRAFT_API\r
 /**\r
  * Formats a date/time range using the conventions established for the\r
  * UDateIntervalFormat object.\r
@@ -267,7 +266,7 @@ udtitvfmt_format(const UDateIntervalFormat* formatter,
  *            formatting operation.\r
  * @param status\r
  *            A pointer to a UErrorCode to receive any errors.\r
- * @draft ICU 67\r
+ * @stable ICU 67\r
  */\r
 U_CAPI void U_EXPORT2\r
 udtitvfmt_formatToResult(\r
@@ -291,7 +290,7 @@ udtitvfmt_formatToResult(
  *            formatting operation.\r
  * @param status\r
  *            A pointer to a UErrorCode to receive any errors.\r
- * @draft ICU 67\r
+ * @stable ICU 67\r
  */\r
 \r
 U_CAPI void U_EXPORT2\r
@@ -301,7 +300,6 @@ udtitvfmt_formatCalendarToResult(
                 UCalendar*      toCalendar,\r
                 UFormattedDateInterval* result,\r
                 UErrorCode*     status);\r
-#endif /* U_HIDE_DRAFT_API */\r
 \r
 #ifndef U_HIDE_DRAFT_API\r
 /**\r
index 621a7fe..37e15fa 100644 (file)
@@ -657,7 +657,6 @@ udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg,
 \r
 #if !UCONFIG_NO_FORMATTING\r
 \r
-#ifndef U_HIDE_DRAFT_API\r
 /**\r
  * Return the default hour cycle for a locale. Uses the locale that the\r
  * UDateTimePatternGenerator was initially created with.\r
@@ -669,11 +668,10 @@ udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg,
  *                   failure before the function call. Set to U_UNSUPPORTED_ERROR\r
  *                   if used on an empty instance.\r
  * @return the default hour cycle.\r
- * @draft ICU 67\r
+ * @stable ICU 67\r
  */\r
 U_CAPI UDateFormatHourCycle U_EXPORT2\r
 udatpg_getDefaultHourCycle(const UDateTimePatternGenerator *dtpg, UErrorCode* pErrorCode);\r
-#endif  /* U_HIDE_DRAFT_API */\r
 \r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
 \r
index e586439..3d8f89a 100644 (file)
@@ -93,6 +93,15 @@ typedef enum UFieldCategory {
      */\r
     UFIELD_CATEGORY_DATE_INTERVAL_SPAN = 0x1000 + UFIELD_CATEGORY_DATE_INTERVAL,\r
 \r
+#ifndef U_HIDE_DRAFT_API\r
+    /**\r
+     * Category for spans in a number range.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UFIELD_CATEGORY_NUMBER_RANGE_SPAN = 0x1000 + UFIELD_CATEGORY_NUMBER,\r
+#endif // U_HIDE_DRAFT_API\r
+\r
 } UFieldCategory;\r
 \r
 \r
index 0adfe95..41bb9b9 100644 (file)
@@ -302,7 +302,24 @@ typedef enum UNumberFormatRoundingMode {
       * ROUND_UNNECESSARY reports an error if formatted result is not exact.\r
       * @stable ICU 4.8\r
       */\r
-    UNUM_ROUND_UNNECESSARY\r
+    UNUM_ROUND_UNNECESSARY,\r
+#ifndef U_HIDE_DRAFT_API\r
+    /**\r
+     * Rounds ties toward the odd number.\r
+     * @draft ICU 69\r
+     */\r
+    UNUM_ROUND_HALF_ODD,\r
+    /**\r
+     * Rounds ties toward +∞.\r
+     * @draft ICU 69\r
+     */\r
+    UNUM_ROUND_HALF_CEILING,\r
+    /**\r
+     * Rounds ties toward -∞.\r
+     * @draft ICU 69\r
+     */\r
+    UNUM_ROUND_HALF_FLOOR,\r
+#endif  // U_HIDE_DRAFT_API\r
 } UNumberFormatRoundingMode;\r
 \r
 /** The possible number format pad positions. \r
@@ -692,6 +709,12 @@ unum_formatDecimal(    const    UNumberFormat*  fmt,
 /**\r
  * Format a double currency amount using a UNumberFormat.\r
  * The double will be formatted according to the UNumberFormat's locale.\r
+ *\r
+ * To format an exact decimal value with a currency, use\r
+ * `unum_setTextAttribute(UNUM_CURRENCY_CODE, ...)` followed by unum_formatDecimal.\r
+ * Your UNumberFormat must be created with the UNUM_CURRENCY style. Alternatively,\r
+ * consider using unumf_openForSkeletonAndLocale.\r
+ *\r
  * @param fmt the formatter to use\r
  * @param number the number to format\r
  * @param currency the 3-letter null-terminated ISO 4217 currency code\r
index 464b678..28ef38f 100644 (file)
  * </pre>\r
  */\r
 \r
+#ifndef U_FORCE_HIDE_DRAFT_API\r
+/**\r
+ * An enum declaring how to resolve conflicts between maximum fraction digits and maximum\r
+ * significant digits.\r
+ *\r
+ * There are two modes, RELAXED and STRICT:\r
+ *\r
+ * - RELAXED: Relax one of the two constraints (fraction digits or significant digits) in order\r
+ *   to round the number to a higher level of precision.\r
+ * - STRICT: Enforce both constraints, resulting in the number being rounded to a lower\r
+ *   level of precision.\r
+ *\r
+ * The default settings for compact notation rounding are Max-Fraction = 0 (round to the nearest\r
+ * integer), Max-Significant = 2 (round to 2 significant digits), and priority RELAXED (choose\r
+ * the constraint that results in more digits being displayed).\r
+ *\r
+ * Conflicting *minimum* fraction and significant digits are always resolved in the direction that\r
+ * results in more trailing zeros.\r
+ *\r
+ * Example 1: Consider the number 3.141, with various different settings:\r
+ *\r
+ * - Max-Fraction = 1: "3.1"\r
+ * - Max-Significant = 3: "3.14"\r
+ *\r
+ * The rounding priority determines how to resolve the conflict when both Max-Fraction and\r
+ * Max-Significant are set. With RELAXED, the less-strict setting (the one that causes more digits\r
+ * to be displayed) will be used; Max-Significant wins. With STRICT, the more-strict setting (the\r
+ * one that causes fewer digits to be displayed) will be used; Max-Fraction wins.\r
+ *\r
+ * Example 2: Consider the number 8317, with various different settings:\r
+ *\r
+ * - Max-Fraction = 1: "8317"\r
+ * - Max-Significant = 3: "8320"\r
+ *\r
+ * Here, RELAXED favors Max-Fraction and STRICT favors Max-Significant. Note that this larger\r
+ * number caused the two modes to favor the opposite result.\r
+ *\r
+ * @draft ICU 69\r
+ */\r
+typedef enum UNumberRoundingPriority {\r
+    /**\r
+     * Favor greater precision by relaxing one of the rounding constraints.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UNUM_ROUNDING_PRIORITY_RELAXED,\r
+\r
+    /**\r
+     * Favor adherence to all rounding constraints by producing lower precision.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UNUM_ROUNDING_PRIORITY_STRICT,\r
+} UNumberRoundingPriority;\r
+#endif // U_FORCE_HIDE_DRAFT_API\r
+\r
 /**\r
  * An enum declaring how to render units, including currencies. Example outputs when formatting 123 USD and 123\r
  * meters in <em>en-CA</em>:\r
@@ -108,7 +164,7 @@ typedef enum UNumberUnitWidth {
      *\r
      * @stable ICU 60\r
      */\r
-            UNUM_UNIT_WIDTH_NARROW,\r
+            UNUM_UNIT_WIDTH_NARROW = 0,\r
 \r
     /**\r
      * Print an abbreviated version of the unit name. Similar to NARROW, but use a slightly wider abbreviation or\r
@@ -124,7 +180,7 @@ typedef enum UNumberUnitWidth {
      *\r
      * @stable ICU 60\r
      */\r
-            UNUM_UNIT_WIDTH_SHORT,\r
+            UNUM_UNIT_WIDTH_SHORT = 1,\r
 \r
     /**\r
      * Print the full name of the unit, without any abbreviations.\r
@@ -135,7 +191,7 @@ typedef enum UNumberUnitWidth {
      *\r
      * @stable ICU 60\r
      */\r
-            UNUM_UNIT_WIDTH_FULL_NAME,\r
+            UNUM_UNIT_WIDTH_FULL_NAME = 2,\r
 \r
     /**\r
      * Use the three-digit ISO XXX code in place of the symbol for displaying currencies. The behavior of this\r
@@ -146,7 +202,7 @@ typedef enum UNumberUnitWidth {
      *\r
      * @stable ICU 60\r
      */\r
-            UNUM_UNIT_WIDTH_ISO_CODE,\r
+            UNUM_UNIT_WIDTH_ISO_CODE = 3,\r
 \r
 #ifndef U_HIDE_DRAFT_API\r
     /**\r
@@ -158,7 +214,7 @@ typedef enum UNumberUnitWidth {
      *\r
      * @draft ICU 68\r
      */\r
-            UNUM_UNIT_WIDTH_FORMAL,\r
+            UNUM_UNIT_WIDTH_FORMAL = 4,\r
 \r
     /**\r
      * Use the alternate variant of the currency symbol; for example, "TL" for the Turkish\r
@@ -169,7 +225,7 @@ typedef enum UNumberUnitWidth {
      *\r
      * @draft ICU 68\r
      */\r
-            UNUM_UNIT_WIDTH_VARIANT,\r
+            UNUM_UNIT_WIDTH_VARIANT = 5,\r
 #endif  // U_HIDE_DRAFT_API\r
 \r
     /**\r
@@ -179,14 +235,16 @@ typedef enum UNumberUnitWidth {
      *\r
      * @stable ICU 60\r
      */\r
-            UNUM_UNIT_WIDTH_HIDDEN,\r
+            UNUM_UNIT_WIDTH_HIDDEN = 6,\r
 \r
+    // Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API,\r
+    // needed for unconditionalized struct MacroProps\r
     /**\r
      * One more than the highest UNumberUnitWidth value.\r
      *\r
      * @internal ICU 60: The numeric value may change over time; see ICU ticket #12420.\r
      */\r
-            UNUM_UNIT_WIDTH_COUNT\r
+            UNUM_UNIT_WIDTH_COUNT = 7\r
 } UNumberUnitWidth;\r
 \r
 /**\r
@@ -314,9 +372,12 @@ typedef enum UNumberSignDisplay {
      * Show the minus sign on negative numbers, and do not show the sign on positive numbers. This is the default\r
      * behavior.\r
      *\r
+     * If using this option, a sign will be displayed on negative zero, including negative numbers\r
+     * that round to zero. To hide the sign on negative zero, use the NEGATIVE option.\r
+     *\r
      * @stable ICU 60\r
      */\r
-            UNUM_SIGN_AUTO,\r
+    UNUM_SIGN_AUTO,\r
 \r
     /**\r
      * Show the minus sign on negative numbers and the plus sign on positive numbers, including zero.\r
@@ -324,14 +385,14 @@ typedef enum UNumberSignDisplay {
      *\r
      * @stable ICU 60\r
      */\r
-            UNUM_SIGN_ALWAYS,\r
+    UNUM_SIGN_ALWAYS,\r
 \r
     /**\r
      * Do not show the sign on positive or negative numbers.\r
      *\r
      * @stable ICU 60\r
      */\r
-            UNUM_SIGN_NEVER,\r
+    UNUM_SIGN_NEVER,\r
 \r
     /**\r
      * Use the locale-dependent accounting format on negative numbers, and do not show the sign on positive numbers.\r
@@ -347,7 +408,7 @@ typedef enum UNumberSignDisplay {
      *\r
      * @stable ICU 60\r
      */\r
-            UNUM_SIGN_ACCOUNTING,\r
+    UNUM_SIGN_ACCOUNTING,\r
 \r
     /**\r
      * Use the locale-dependent accounting format on negative numbers, and show the plus sign on\r
@@ -357,7 +418,7 @@ typedef enum UNumberSignDisplay {
      *\r
      * @stable ICU 60\r
      */\r
-            UNUM_SIGN_ACCOUNTING_ALWAYS,\r
+    UNUM_SIGN_ACCOUNTING_ALWAYS,\r
 \r
     /**\r
      * Show the minus sign on negative numbers and the plus sign on positive numbers. Do not show a\r
@@ -365,7 +426,7 @@ typedef enum UNumberSignDisplay {
      *\r
      * @stable ICU 61\r
      */\r
-            UNUM_SIGN_EXCEPT_ZERO,\r
+    UNUM_SIGN_EXCEPT_ZERO,\r
 \r
     /**\r
      * Use the locale-dependent accounting format on negative numbers, and show the plus sign on\r
@@ -374,14 +435,32 @@ typedef enum UNumberSignDisplay {
      *\r
      * @stable ICU 61\r
      */\r
-            UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO,\r
+    UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO,\r
+\r
+#ifndef U_HIDE_DRAFT_API\r
+    /**\r
+     * Same as AUTO, but do not show the sign on negative zero.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UNUM_SIGN_NEGATIVE,\r
 \r
     /**\r
+     * Same as ACCOUNTING, but do not show the sign on negative zero.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UNUM_SIGN_ACCOUNTING_NEGATIVE,\r
+#endif // U_HIDE_DRAFT_API\r
+\r
+    // Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API,\r
+    // needed for unconditionalized struct MacroProps\r
+    /**\r
      * One more than the highest UNumberSignDisplay value.\r
      *\r
      * @internal ICU 60: The numeric value may change over time; see ICU ticket #12420.\r
      */\r
-            UNUM_SIGN_COUNT\r
+    UNUM_SIGN_COUNT = 9,\r
 } UNumberSignDisplay;\r
 \r
 /**\r
@@ -411,6 +490,8 @@ typedef enum UNumberDecimalSeparatorDisplay {
      */\r
             UNUM_DECIMAL_SEPARATOR_ALWAYS,\r
 \r
+    // Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API,\r
+    // needed for unconditionalized struct MacroProps\r
     /**\r
      * One more than the highest UNumberDecimalSeparatorDisplay value.\r
      *\r
@@ -419,6 +500,32 @@ typedef enum UNumberDecimalSeparatorDisplay {
             UNUM_DECIMAL_SEPARATOR_COUNT\r
 } UNumberDecimalSeparatorDisplay;\r
 \r
+#ifndef U_FORCE_HIDE_DRAFT_API\r
+/**\r
+ * An enum declaring how to render trailing zeros.\r
+ * \r
+ * - UNUM_TRAILING_ZERO_AUTO: 0.90, 1.00, 1.10\r
+ * - UNUM_TRAILING_ZERO_HIDE_IF_WHOLE: 0.90, 1, 1.10\r
+ * \r
+ * @draft ICU 69\r
+ */\r
+typedef enum UNumberTrailingZeroDisplay {\r
+    /**\r
+     * Display trailing zeros according to the settings for minimum fraction and significant digits.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UNUM_TRAILING_ZERO_AUTO,\r
+\r
+    /**\r
+     * Same as AUTO, but hide trailing zeros after the decimal separator if they are all zero.\r
+     *\r
+     * @draft ICU 69\r
+     */\r
+    UNUM_TRAILING_ZERO_HIDE_IF_WHOLE,\r
+} UNumberTrailingZeroDisplay;\r
+#endif // U_FORCE_HIDE_DRAFT_API\r
+\r
 struct UNumberFormatter;\r
 /**\r
  * C-compatible version of icu::number::LocalizedNumberFormatter.\r
@@ -449,6 +556,9 @@ typedef struct UFormattedNumber UFormattedNumber;
  * For more details on skeleton strings, see the documentation in numberformatter.h. For more details on\r
  * the usage of this API, see the documentation at the top of unumberformatter.h.\r
  *\r
+ * For more information on number skeleton strings, see:\r
+ * https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html\r
+ *\r
  * NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.\r
  *\r
  * @param skeleton The skeleton string, like u"percent precision-integer"\r
@@ -466,6 +576,9 @@ unumf_openForSkeletonAndLocale(const UChar* skeleton, int32_t skeletonLen, const
  * Like unumf_openForSkeletonAndLocale, but accepts a UParseError, which will be populated with the\r
  * location of a skeleton syntax error if such a syntax error exists.\r
  *\r
+ * For more information on number skeleton strings, see:\r
+ * https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html\r
+ *\r
  * @param skeleton The skeleton string, like u"percent precision-integer"\r
  * @param skeletonLen The number of UChars in the skeleton string, or -1 if it is NUL-terminated.\r
  * @param locale The NUL-terminated locale ID.\r
index 0790eb5..662906b 100644 (file)
@@ -354,7 +354,6 @@ unumrf_resultGetIdentityResult(
     UErrorCode* ec);\r
 \r
 \r
-#ifndef U_HIDE_DRAFT_API\r
 /**\r
  * Extracts the first formatted number as a decimal number. This endpoint\r
  * is useful for obtaining the exact number being printed after scaling\r
@@ -407,7 +406,6 @@ unumrf_resultGetSecondDecimalNumber(
     char* dest,\r
     int32_t destCapacity,\r
     UErrorCode* ec);\r
-#endif // U_HIDE_DRAFT_API\r
 \r
 \r
 /**\r
index a646d9b..06c5fa2 100644 (file)
@@ -502,7 +502,7 @@ typedef enum USpoofChecks {
     USPOOF_ALL_CHECKS               = 0xFFFF,\r
 \r
     /**\r
-      * Enable the return of auxillary (non-error) information in the\r
+      * Enable the return of auxiliary (non-error) information in the\r
       * upper bits of the check results value.\r
       *\r
       * If this "check" is not enabled, the results of {@link uspoof_check} will be\r
index 329d0d1..bd270ba 100644 (file)
@@ -157,7 +157,7 @@ public:
     void write(UnicodeString& result, UErrorCode& status) const;\r
 \r
     /**\r
-     * Writes RFC2445 VTIMEZONE data for this time zone applicalbe\r
+     * Writes RFC2445 VTIMEZONE data for this time zone applicable\r
      * for dates after the specified start time.\r
      * @param start The start date.\r
      * @param result Output param to filled in with the VTIMEZONE data.\r
@@ -167,7 +167,7 @@ public:
     void write(UDate start, UnicodeString& result, UErrorCode& status) const;\r
 \r
     /**\r
-     * Writes RFC2445 VTIMEZONE data applicalbe for the specified date.\r
+     * Writes RFC2445 VTIMEZONE data applicable for the specified date.\r
      * Some common iCalendar implementations can only handle a single time\r
      * zone property or a pair of standard and daylight time properties using\r
      * BYDAY rule with day of week (such as BYDAY=1SUN).  This method produce\r
@@ -264,6 +264,17 @@ public:
     virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,\r
                            int32_t& dstOffset, UErrorCode& ec) const;\r
 \r
+#ifndef U_FORCE_HIDE_DRAFT_API\r
+    /**\r
+     * Get time zone offsets from local wall time.\r
+     * @draft ICU 69\r
+     */\r
+    virtual void getOffsetFromLocal(\r
+        UDate date, UTimeZoneLocalOption nonExistingTimeOpt,\r
+        UTimeZoneLocalOption duplicatedTimeOpt,\r
+        int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;\r
+#endif /* U_FORCE_HIDE_DRAFT_API */\r
+\r
     /**\r
      * Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add\r
      * to GMT to get local time, before taking daylight savings time into account).\r
index beec59d..5736cee 100644 (file)
@@ -10,6 +10,7 @@
 #include "cmemory.h"\r
 #include "number_decimalquantity.h"\r
 #include "number_roundingutils.h"\r
+#include "putilimp.h"\r
 #include "uarrsort.h"\r
 #include "uassert.h"\r
 #include "unicode/fmtable.h"\r
 \r
 U_NAMESPACE_BEGIN\r
 namespace units {\r
+ComplexUnitsConverter::ComplexUnitsConverter(const MeasureUnitImpl &targetUnit,\r
+                                             const ConversionRates &ratesInfo, UErrorCode &status)\r
+    : units_(targetUnit.extractIndividualUnitsWithIndices(status)) {\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+    U_ASSERT(units_.length() != 0);\r
+\r
+    // Just borrowing a pointer to the instance\r
+    MeasureUnitImpl *biggestUnit = &units_[0]->unitImpl;\r
+    for (int32_t i = 1; i < units_.length(); i++) {\r
+        if (UnitsConverter::compareTwoUnits(units_[i]->unitImpl, *biggestUnit, ratesInfo, status) > 0 &&\r
+            U_SUCCESS(status)) {\r
+            biggestUnit = &units_[i]->unitImpl;\r
+        }\r
+\r
+        if (U_FAILURE(status)) {\r
+            return;\r
+        }\r
+    }\r
+\r
+    this->init(*biggestUnit, ratesInfo, status);\r
+}\r
+\r
+ComplexUnitsConverter::ComplexUnitsConverter(StringPiece inputUnitIdentifier,\r
+                                             StringPiece outputUnitsIdentifier, UErrorCode &status) {\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+    MeasureUnitImpl inputUnit = MeasureUnitImpl::forIdentifier(inputUnitIdentifier, status);\r
+    MeasureUnitImpl outputUnits = MeasureUnitImpl::forIdentifier(outputUnitsIdentifier, status);\r
+\r
+    this->units_ = outputUnits.extractIndividualUnitsWithIndices(status);\r
+    U_ASSERT(units_.length() != 0);\r
+\r
+    this->init(inputUnit, ConversionRates(status), status);\r
+}\r
 \r
 ComplexUnitsConverter::ComplexUnitsConverter(const MeasureUnitImpl &inputUnit,\r
                                              const MeasureUnitImpl &outputUnits,\r
                                              const ConversionRates &ratesInfo, UErrorCode &status)\r
-    : units_(outputUnits.extractIndividualUnits(status)) {\r
+    : units_(outputUnits.extractIndividualUnitsWithIndices(status)) {\r
     if (U_FAILURE(status)) {\r
         return;\r
     }\r
 \r
     U_ASSERT(units_.length() != 0);\r
 \r
-    // Save the desired order of output units before we sort units_\r
-    for (int32_t i = 0; i < units_.length(); i++) {\r
-        outputUnits_.emplaceBackAndCheckErrorCode(status, units_[i]->copy(status).build(status));\r
-    }\r
+    this->init(inputUnit, ratesInfo, status);\r
+}\r
 \r
-    // NOTE:\r
-    //  This comparator is used to sort the units in a descending order. Therefore, we return -1 if\r
-    //  the left is bigger than right and so on.\r
+void ComplexUnitsConverter::init(const MeasureUnitImpl &inputUnit,\r
+                                 const ConversionRates &ratesInfo,\r
+                                 UErrorCode &status) {\r
+    // Sorts units in descending order. Therefore, we return -1 if\r
+    // the left is bigger than right and so on.\r
     auto descendingCompareUnits = [](const void *context, const void *left, const void *right) {\r
         UErrorCode status = U_ZERO_ERROR;\r
 \r
-        const auto *leftPointer = static_cast<const MeasureUnitImpl *const *>(left);\r
-        const auto *rightPointer = static_cast<const MeasureUnitImpl *const *>(right);\r
+        const auto *leftPointer = static_cast<const MeasureUnitImplWithIndex *const *>(left);\r
+        const auto *rightPointer = static_cast<const MeasureUnitImplWithIndex *const *>(right);\r
 \r
-        UnitConverter fromLeftToRight(**leftPointer,                                  //\r
-                                      **rightPointer,                                 //\r
-                                      *static_cast<const ConversionRates *>(context), //\r
-                                      status);\r
-\r
-        double rightFromOneLeft = fromLeftToRight.convert(1.0);\r
-        if (std::abs(rightFromOneLeft - 1.0) < 0.0000000001) { // Equals To\r
-            return 0;\r
-        } else if (rightFromOneLeft > 1.0) { // Greater Than\r
-            return -1;\r
-        }\r
-\r
-        return 1; // Less Than\r
+        // Multiply by -1 to sort in descending order\r
+        return (-1) * UnitsConverter::compareTwoUnits((**leftPointer).unitImpl,                       //\r
+                                                      (**rightPointer).unitImpl,                      //\r
+                                                      *static_cast<const ConversionRates *>(context), //\r
+                                                      status);\r
     };\r
 \r
     uprv_sortArray(units_.getAlias(),                                                                  //\r
@@ -86,11 +116,11 @@ ComplexUnitsConverter::ComplexUnitsConverter(const MeasureUnitImpl &inputUnit,
     //              3. then, the final result will be (6 feet and 6.74016 inches)\r
     for (int i = 0, n = units_.length(); i < n; i++) {\r
         if (i == 0) { // first element\r
-            unitConverters_.emplaceBackAndCheckErrorCode(status, inputUnit, *units_[i], ratesInfo,\r
-                                                         status);\r
+            unitsConverters_.emplaceBackAndCheckErrorCode(status, inputUnit, units_[i]->unitImpl,\r
+                                                          ratesInfo, status);\r
         } else {\r
-            unitConverters_.emplaceBackAndCheckErrorCode(status, *units_[i - 1], *units_[i], ratesInfo,\r
-                                                         status);\r
+            unitsConverters_.emplaceBackAndCheckErrorCode(status, units_[i - 1]->unitImpl,\r
+                                                          units_[i]->unitImpl, ratesInfo, status);\r
         }\r
 \r
         if (U_FAILURE(status)) {\r
@@ -100,17 +130,17 @@ ComplexUnitsConverter::ComplexUnitsConverter(const MeasureUnitImpl &inputUnit,
 }\r
 \r
 UBool ComplexUnitsConverter::greaterThanOrEqual(double quantity, double limit) const {\r
-    U_ASSERT(unitConverters_.length() > 0);\r
+    U_ASSERT(unitsConverters_.length() > 0);\r
 \r
     // First converter converts to the biggest quantity.\r
-    double newQuantity = unitConverters_[0]->convert(quantity);\r
+    double newQuantity = unitsConverters_[0]->convert(quantity);\r
     return newQuantity >= limit;\r
 }\r
 \r
 MaybeStackVector<Measure> ComplexUnitsConverter::convert(double quantity,\r
                                                          icu::number::impl::RoundingImpl *rounder,\r
                                                          UErrorCode &status) const {\r
-    // TODO(hugovdm): return an error for "foot-and-foot"?\r
+    // TODO: return an error for "foot-and-foot"?\r
     MaybeStackVector<Measure> result;\r
     int sign = 1;\r
     if (quantity < 0) {\r
@@ -120,133 +150,118 @@ MaybeStackVector<Measure> ComplexUnitsConverter::convert(double quantity,
 \r
     // For N converters:\r
     // - the first converter converts from the input unit to the largest unit,\r
-    // - N-1 converters convert to bigger units for which we want integers,\r
+    // - the following N-2 converters convert to bigger units for which we want integers,\r
     // - the Nth converter (index N-1) converts to the smallest unit, for which\r
     //   we keep a double.\r
-    MaybeStackArray<int64_t, 5> intValues(unitConverters_.length() - 1, status);\r
+    MaybeStackArray<int64_t, 5> intValues(unitsConverters_.length() - 1, status);\r
     if (U_FAILURE(status)) {\r
         return result;\r
     }\r
-    uprv_memset(intValues.getAlias(), 0, (unitConverters_.length() - 1) * sizeof(int64_t));\r
+    uprv_memset(intValues.getAlias(), 0, (unitsConverters_.length() - 1) * sizeof(int64_t));\r
 \r
-    for (int i = 0, n = unitConverters_.length(); i < n; ++i) {\r
-        quantity = (*unitConverters_[i]).convert(quantity);\r
+    for (int i = 0, n = unitsConverters_.length(); i < n; ++i) {\r
+        quantity = (*unitsConverters_[i]).convert(quantity);\r
         if (i < n - 1) {\r
-            // The double type has 15 decimal digits of precision. For choosing\r
-            // whether to use the current unit or the next smaller unit, we\r
-            // therefore nudge up the number with which the thresholding\r
-            // decision is made. However after the thresholding, we use the\r
-            // original values to ensure unbiased accuracy (to the extent of\r
-            // double's capabilities).\r
-            int64_t roundedQuantity = floor(quantity * (1 + DBL_EPSILON));\r
-            intValues[i] = roundedQuantity;\r
+            // If quantity is at the limits of double's precision from an\r
+            // integer value, we take that integer value.\r
+            int64_t flooredQuantity = floor(quantity * (1 + DBL_EPSILON));\r
+            if (uprv_isNaN(quantity)) {\r
+                // With clang on Linux: floor does not support NaN, resulting in\r
+                // a giant negative number. For now, we produce "0 feet, NaN\r
+                // inches". TODO(icu-units#131): revisit desired output.\r
+                flooredQuantity = 0;\r
+            }\r
+            intValues[i] = flooredQuantity;\r
 \r
             // Keep the residual of the quantity.\r
             //   For example: `3.6 feet`, keep only `0.6 feet`\r
-            //\r
-            // When the calculation is near enough +/- DBL_EPSILON, we round to\r
-            // zero. (We also ensure no negative values here.)\r
-            if ((quantity - roundedQuantity) / quantity < DBL_EPSILON) {\r
+            double remainder = quantity - flooredQuantity;\r
+            if (remainder < 0) {\r
+                // Because we nudged flooredQuantity up by eps, remainder may be\r
+                // negative: we must treat such a remainder as zero.\r
                 quantity = 0;\r
             } else {\r
-                quantity -= roundedQuantity;\r
-            }\r
-        } else { // LAST ELEMENT\r
-            if (rounder == nullptr) {\r
-                // Nothing to do for the last element.\r
-                break;\r
+                quantity = remainder;\r
             }\r
+        }   \r
+    }\r
 \r
-            // Round the last value\r
-            // TODO(ICU-21288): get smarter about precision for mixed units.\r
-            number::impl::DecimalQuantity quant;\r
-            quant.setToDouble(quantity);\r
-            rounder->apply(quant, status);\r
-            if (U_FAILURE(status)) {\r
-                return result;\r
-            }\r
-            quantity = quant.toDouble();\r
-            if (i == 0) {\r
-                // Last element is also the first element, so we're done\r
-                break;\r
-            }\r
+    applyRounder(intValues, quantity, rounder, status);\r
 \r
-            // Check if there's a carry, and bubble it back up the resulting intValues.\r
-            int64_t carry = floor(unitConverters_[i]->convertInverse(quantity) * (1 + DBL_EPSILON));\r
-            if (carry <= 0) {\r
-                break;\r
-            }\r
-            quantity -= unitConverters_[i]->convert(carry);\r
-            intValues[i - 1] += carry;\r
-\r
-            // We don't use the first converter: that one is for the input unit\r
-            for (int32_t j = i - 1; j > 0; j--) {\r
-                carry = floor(unitConverters_[j]->convertInverse(intValues[j]) * (1 + DBL_EPSILON));\r
-                if (carry <= 0) {\r
-                    break;\r
-                }\r
-                intValues[j] -= round(unitConverters_[j]->convert(carry));\r
-                intValues[j - 1] += carry;\r
-            }\r
-        }\r
+    // Initialize empty result. We use a MaybeStackArray directly so we can\r
+    // assign pointers - for this privilege we have to take care of cleanup.\r
+    MaybeStackArray<Measure *, 4> tmpResult(unitsConverters_.length(), status);\r
+    if (U_FAILURE(status)) {\r
+        return result;\r
     }\r
 \r
-    // Package values into Measure instances in result:\r
-    for (int i = 0, n = unitConverters_.length(); i < n; ++i) {\r
+    // Package values into temporary Measure instances in tmpResult:\r
+    for (int i = 0, n = unitsConverters_.length(); i < n; ++i) {\r
         if (i < n - 1) {\r
             Formattable formattableQuantity(intValues[i] * sign);\r
             // Measure takes ownership of the MeasureUnit*\r
-            MeasureUnit *type = new MeasureUnit(units_[i]->copy(status).build(status));\r
-            if (result.emplaceBackAndCheckErrorCode(status, formattableQuantity, type, status) ==\r
-                nullptr) {\r
-                // Ownership wasn't taken\r
-                U_ASSERT(U_FAILURE(status));\r
-                delete type;\r
-            }\r
-            if (U_FAILURE(status)) {\r
-                return result;\r
-            }\r
+            MeasureUnit *type = new MeasureUnit(units_[i]->unitImpl.copy(status).build(status));\r
+            tmpResult[units_[i]->index] = new Measure(formattableQuantity, type, status);\r
         } else { // LAST ELEMENT\r
-            // Add the last element, not an integer:\r
             Formattable formattableQuantity(quantity * sign);\r
             // Measure takes ownership of the MeasureUnit*\r
-            MeasureUnit *type = new MeasureUnit(units_[i]->copy(status).build(status));\r
-            if (result.emplaceBackAndCheckErrorCode(status, formattableQuantity, type, status) ==\r
-                nullptr) {\r
-                // Ownership wasn't taken\r
-                U_ASSERT(U_FAILURE(status));\r
-                delete type;\r
-            }\r
-            if (U_FAILURE(status)) {\r
-                return result;\r
-            }\r
-            U_ASSERT(result.length() == i + 1);\r
-            U_ASSERT(result[i] != nullptr);\r
+            MeasureUnit *type = new MeasureUnit(units_[i]->unitImpl.copy(status).build(status));\r
+            tmpResult[units_[i]->index] = new Measure(formattableQuantity, type, status);\r
         }\r
     }\r
 \r
-    MaybeStackVector<Measure> orderedResult;\r
-    int32_t unitsCount = outputUnits_.length();\r
-    U_ASSERT(unitsCount == units_.length());\r
-    Measure **arr = result.getAlias();\r
-    // O(N^2) is fine: mixed units' unitsCount is usually 2 or 3.\r
-    for (int32_t i = 0; i < unitsCount; i++) {\r
-        for (int32_t j = i; j < unitsCount; j++) {\r
-            // Find the next expected unit, and swap it into place.\r
-            U_ASSERT(result[j] != nullptr);\r
-            if (result[j]->getUnit() == *outputUnits_[i]) {\r
-                if (j != i) {\r
-                    Measure *tmp = arr[j];\r
-                    arr[j] = arr[i];\r
-                    arr[i] = tmp;\r
-                }\r
-            }\r
-        }\r
+\r
+    // Transfer values into result and return:\r
+    for(int32_t i = 0, n = unitsConverters_.length(); i < n; ++i) {\r
+        U_ASSERT(tmpResult[i] != nullptr);\r
+        result.emplaceBackAndCheckErrorCode(status, *tmpResult[i]);\r
+        delete tmpResult[i];\r
     }\r
 \r
     return result;\r
 }\r
 \r
+void ComplexUnitsConverter::applyRounder(MaybeStackArray<int64_t, 5> &intValues, double &quantity,\r
+                                         icu::number::impl::RoundingImpl *rounder,\r
+                                         UErrorCode &status) const {\r
+    if (rounder == nullptr) {\r
+        // Nothing to do for the quantity.\r
+        return;\r
+    }\r
+\r
+    number::impl::DecimalQuantity decimalQuantity;\r
+    decimalQuantity.setToDouble(quantity);\r
+    rounder->apply(decimalQuantity, status);\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+    quantity = decimalQuantity.toDouble();\r
+\r
+    int32_t lastIndex = unitsConverters_.length() - 1;\r
+    if (lastIndex == 0) {\r
+        // Only one element, no need to bubble up the carry\r
+        return;\r
+    }\r
+\r
+    // Check if there's a carry, and bubble it back up the resulting intValues.\r
+    int64_t carry = floor(unitsConverters_[lastIndex]->convertInverse(quantity) * (1 + DBL_EPSILON));\r
+    if (carry <= 0) {\r
+        return;\r
+    }\r
+    quantity -= unitsConverters_[lastIndex]->convert(carry);\r
+    intValues[lastIndex - 1] += carry;\r
+\r
+    // We don't use the first converter: that one is for the input unit\r
+    for (int32_t j = lastIndex - 1; j > 0; j--) {\r
+        carry = floor(unitsConverters_[j]->convertInverse(intValues[j]) * (1 + DBL_EPSILON));\r
+        if (carry <= 0) {\r
+            return;\r
+        }\r
+        intValues[j] -= round(unitsConverters_[j]->convert(carry));\r
+        intValues[j - 1] += carry;\r
+    }\r
+}\r
+\r
 } // namespace units\r
 U_NAMESPACE_END\r
 \r
index 9f0b36a..07ebedc 100644 (file)
@@ -24,9 +24,9 @@ U_NAMESPACE_BEGIN
 // Note: These need to be outside of the units namespace, or Clang will generate\r
 // a compile error.\r
 #if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN\r
-template class U_I18N_API MaybeStackArray<units::UnitConverter*, 8>;\r
-template class U_I18N_API MemoryPool<units::UnitConverter, 8>;\r
-template class U_I18N_API MaybeStackVector<units::UnitConverter, 8>;\r
+template class U_I18N_API MaybeStackArray<units::UnitsConverter*, 8>;\r
+template class U_I18N_API MemoryPool<units::UnitsConverter, 8>;\r
+template class U_I18N_API MaybeStackVector<units::UnitsConverter, 8>;\r
 template class U_I18N_API MaybeStackArray<MeasureUnitImpl*, 8>;\r
 template class U_I18N_API MemoryPool<MeasureUnitImpl, 8>;\r
 template class U_I18N_API MaybeStackVector<MeasureUnitImpl, 8>;\r
@@ -42,13 +42,43 @@ namespace units {
  * For example, from `meter` to `foot+inch`.\r
  *\r
  *  DESIGN:\r
- *    This class uses `UnitConverter` in order to perform the single converter (i.e. converters from a\r
+ *    This class uses `UnitsConverter` in order to perform the single converter (i.e. converters from a\r
  *    single unit to another single unit). Therefore, `ComplexUnitsConverter` class contains multiple\r
- *    instances of the `UnitConverter` to perform the conversion.\r
+ *    instances of the `UnitsConverter` to perform the conversion.\r
  */\r
 class U_I18N_API ComplexUnitsConverter : public UMemory {\r
   public:\r
     /**\r
+     * Constructs `ComplexUnitsConverter` for an `targetUnit` that could be Single, Compound or Mixed.\r
+     * In case of:\r
+     * 1- Single and Compound units,\r
+     *    the conversion will not perform anything, the input will be equal to the output.\r
+     * 2- Mixed Unit\r
+     *    the conversion will consider the input is the biggest unit. And will convert it to be spread\r
+     *    through the target units. For example: if target unit is "inch-and-foot", and the input is 2.5.\r
+     *    The converter will consider the input value in "foot", because foot is the biggest unit.\r
+     *    Then, it will convert 2.5 feet to "inch-and-foot".\r
+     *\r
+     * @param targetUnit could be any units type (single, compound or mixed).\r
+     * @param ratesInfo\r
+     * @param status\r
+     */\r
+    ComplexUnitsConverter(const MeasureUnitImpl &targetUnit, const ConversionRates &ratesInfo,\r
+                          UErrorCode &status);\r
+    /**\r
+     * Constructor of `ComplexUnitsConverter`.\r
+     * NOTE:\r
+     *   - inputUnit and outputUnits must be under the same category\r
+     *      - e.g. meter to feet and inches --> all of them are length units.\r
+     *\r
+     * @param inputUnit represents the source unit. (should be single or compound unit).\r
+     * @param outputUnits represents the output unit. could be any type. (single, compound or mixed).\r
+     * @param status\r
+     */\r
+    ComplexUnitsConverter(StringPiece inputUnitIdentifier, StringPiece outputUnitsIdentifier,\r
+                          UErrorCode &status);\r
+\r
+    /**\r
      * Constructor of `ComplexUnitsConverter`.\r
      * NOTE:\r
      *   - inputUnit and outputUnits must be under the same category\r
@@ -56,6 +86,7 @@ class U_I18N_API ComplexUnitsConverter : public UMemory {
      *\r
      * @param inputUnit represents the source unit. (should be single or compound unit).\r
      * @param outputUnits represents the output unit. could be any type. (single, compound or mixed).\r
+     * @param ratesInfo a ConversionRates instance containing the unit conversion rates.\r
      * @param status\r
      */\r
     ComplexUnitsConverter(const MeasureUnitImpl &inputUnit, const MeasureUnitImpl &outputUnits,\r
@@ -78,11 +109,21 @@ class U_I18N_API ComplexUnitsConverter : public UMemory {
     convert(double quantity, icu::number::impl::RoundingImpl *rounder, UErrorCode &status) const;\r
 \r
   private:\r
-    MaybeStackVector<UnitConverter> unitConverters_;\r
-    // Individual units of mixed units, sorted big to small\r
-    MaybeStackVector<MeasureUnitImpl> units_;\r
-    // Individual units of mixed units, sorted in desired output order\r
-    MaybeStackVector<MeasureUnit> outputUnits_;\r
+    MaybeStackVector<UnitsConverter> unitsConverters_;\r
+\r
+    // Individual units of mixed units, sorted big to small, with indices\r
+    // indicating the requested output mixed unit order.\r
+    MaybeStackVector<MeasureUnitImplWithIndex> units_;\r
+\r
+    // Sorts units_, which must be populated before calling this, and populates\r
+    // unitsConverters_.\r
+    void init(const MeasureUnitImpl &inputUnit, const ConversionRates &ratesInfo, UErrorCode &status);\r
+\r
+    // Applies the rounder to the quantity (last element) and bubble up any carried value to all the\r
+    // intValues.\r
+    // TODO(ICU-21288): get smarter about precision for mixed units.\r
+    void applyRounder(MaybeStackArray<int64_t, 5> &intValues, double &quantity,\r
+                      icu::number::impl::RoundingImpl *rounder, UErrorCode &status) const;\r
 };\r
 \r
 } // namespace units\r
index 63c1f49..e9459ef 100644 (file)
@@ -26,7 +26,7 @@ void U_I18N_API Factor::multiplyBy(const Factor &rhs) {
     factorNum *= rhs.factorNum;\r
     factorDen *= rhs.factorDen;\r
     for (int i = 0; i < CONSTANTS_COUNT; i++) {\r
-        constants[i] += rhs.constants[i];\r
+        constantExponents[i] += rhs.constantExponents[i];\r
     }\r
 \r
     // NOTE\r
@@ -39,7 +39,7 @@ void U_I18N_API Factor::divideBy(const Factor &rhs) {
     factorNum *= rhs.factorDen;\r
     factorDen *= rhs.factorNum;\r
     for (int i = 0; i < CONSTANTS_COUNT; i++) {\r
-        constants[i] -= rhs.constants[i];\r
+        constantExponents[i] -= rhs.constantExponents[i];\r
     }\r
 \r
     // NOTE\r
@@ -51,7 +51,7 @@ void U_I18N_API Factor::divideBy(const Factor &rhs) {
 void U_I18N_API Factor::power(int32_t power) {\r
     // multiply all the constant by the power.\r
     for (int i = 0; i < CONSTANTS_COUNT; i++) {\r
-        constants[i] *= power;\r
+        constantExponents[i] *= power;\r
     }\r
 \r
     bool shouldFlip = power < 0; // This means that after applying the absolute power, we should flip\r
@@ -66,35 +66,29 @@ void U_I18N_API Factor::power(int32_t power) {
     }\r
 }\r
 \r
-void U_I18N_API Factor::flip() {\r
-    std::swap(factorNum, factorDen);\r
-\r
-    for (int i = 0; i < CONSTANTS_COUNT; i++) {\r
-        constants[i] *= -1;\r
-    }\r
-}\r
-\r
-void U_I18N_API Factor::applySiPrefix(UMeasureSIPrefix siPrefix) {\r
-    if (siPrefix == UMeasureSIPrefix::UMEASURE_SI_PREFIX_ONE) return; // No need to do anything\r
-\r
-    double siApplied = std::pow(10.0, std::abs(siPrefix));\r
-\r
-    if (siPrefix < 0) {\r
-        factorDen *= siApplied;\r
+void U_I18N_API Factor::applyPrefix(UMeasurePrefix unitPrefix) {\r
+    if (unitPrefix == UMeasurePrefix::UMEASURE_PREFIX_ONE) {\r
+        // No need to do anything\r
         return;\r
     }\r
 \r
-    factorNum *= siApplied;\r
+    int32_t prefixPower = umeas_getPrefixPower(unitPrefix);\r
+    double prefixFactor = std::pow((double)umeas_getPrefixBase(unitPrefix), (double)std::abs(prefixPower));\r
+    if (prefixPower >= 0) {\r
+        factorNum *= prefixFactor;\r
+    } else {\r
+        factorDen *= prefixFactor;\r
+    }\r
 }\r
 \r
 void U_I18N_API Factor::substituteConstants() {\r
     for (int i = 0; i < CONSTANTS_COUNT; i++) {\r
-        if (this->constants[i] == 0) {\r
+        if (this->constantExponents[i] == 0) {\r
             continue;\r
         }\r
 \r
-        auto absPower = std::abs(this->constants[i]);\r
-        Signum powerSig = this->constants[i] < 0 ? Signum::NEGATIVE : Signum::POSITIVE;\r
+        auto absPower = std::abs(this->constantExponents[i]);\r
+        Signum powerSig = this->constantExponents[i] < 0 ? Signum::NEGATIVE : Signum::POSITIVE;\r
         double absConstantValue = std::pow(constantsValues[i], absPower);\r
 \r
         if (powerSig == Signum::NEGATIVE) {\r
@@ -103,7 +97,7 @@ void U_I18N_API Factor::substituteConstants() {
             this->factorNum *= absConstantValue;\r
         }\r
 \r
-        this->constants[i] = 0;\r
+        this->constantExponents[i] = 0;\r
     }\r
 }\r
 \r
@@ -221,18 +215,21 @@ Factor loadSingleFactor(StringPiece source, const ConversionRates &ratesInfo, UE
 }\r
 \r
 // Load Factor of a compound source unit.\r
+// In ICU4J, this is a pair of ConversionRates.getFactorToBase() functions.\r
 Factor loadCompoundFactor(const MeasureUnitImpl &source, const ConversionRates &ratesInfo,\r
                           UErrorCode &status) {\r
 \r
     Factor result;\r
-    for (int32_t i = 0, n = source.units.length(); i < n; i++) {\r
-        SingleUnitImpl singleUnit = *source.units[i];\r
+    for (int32_t i = 0, n = source.singleUnits.length(); i < n; i++) {\r
+        SingleUnitImpl singleUnit = *source.singleUnits[i];\r
 \r
         Factor singleFactor = loadSingleFactor(singleUnit.getSimpleUnitID(), ratesInfo, status);\r
         if (U_FAILURE(status)) return result;\r
 \r
-        // Apply SiPrefix before the power, because the power may be will flip the factor.\r
-        singleFactor.applySiPrefix(singleUnit.siPrefix);\r
+        // Prefix before power, because:\r
+        // - square-kilometer to square-meter: (1000)^2\r
+        // - square-kilometer to square-foot (approximate): (3.28*1000)^2\r
+        singleFactor.applyPrefix(singleUnit.unitPrefix);\r
 \r
         // Apply the power of the `dimensionality`\r
         singleFactor.power(singleUnit.dimensionality);\r
@@ -249,6 +246,8 @@ Factor loadCompoundFactor(const MeasureUnitImpl &source, const ConversionRates &
  *\r
  * NOTE:\r
  *  Empty unit means simple unit.\r
+ *\r
+ * In ICU4J, this is ConversionRates.checkSimpleUnit().\r
  */\r
 UBool checkSimpleUnit(const MeasureUnitImpl &unit, UErrorCode &status) {\r
     if (U_FAILURE(status)) return false;\r
@@ -256,14 +255,14 @@ UBool checkSimpleUnit(const MeasureUnitImpl &unit, UErrorCode &status) {
     if (unit.complexity != UMEASURE_UNIT_SINGLE) {\r
         return false;\r
     }\r
-    if (unit.units.length() == 0) {\r
+    if (unit.singleUnits.length() == 0) {\r
         // Empty units means simple unit.\r
         return true;\r
     }\r
 \r
-    auto singleUnit = *(unit.units[0]);\r
+    auto singleUnit = *(unit.singleUnits[0]);\r
 \r
-    if (singleUnit.dimensionality != 1 || singleUnit.siPrefix != UMEASURE_SI_PREFIX_ONE) {\r
+    if (singleUnit.dimensionality != 1 || singleUnit.unitPrefix != UMEASURE_PREFIX_ONE) {\r
         return false;\r
     }\r
 \r
@@ -273,6 +272,7 @@ UBool checkSimpleUnit(const MeasureUnitImpl &unit, UErrorCode &status) {
 /**\r
  *  Extract conversion rate from `source` to `target`\r
  */\r
+// In ICU4J, this function is partially inlined in the UnitsConverter constructor.\r
 void loadConversionRate(ConversionRate &conversionRate, const MeasureUnitImpl &source,\r
                         const MeasureUnitImpl &target, Convertibility unitsState,\r
                         const ConversionRates &ratesInfo, UErrorCode &status) {\r
@@ -300,6 +300,7 @@ void loadConversionRate(ConversionRate &conversionRate, const MeasureUnitImpl &s
     conversionRate.factorNum = finalFactor.factorNum;\r
     conversionRate.factorDen = finalFactor.factorDen;\r
 \r
+    // This code corresponds to ICU4J's ConversionRates.getOffset().\r
     // In case of simple units (such as: celsius or fahrenheit), offsets are considered.\r
     if (checkSimpleUnit(source, status) && checkSimpleUnit(target, status)) {\r
         conversionRate.sourceOffset =\r
@@ -307,6 +308,8 @@ void loadConversionRate(ConversionRate &conversionRate, const MeasureUnitImpl &s
         conversionRate.targetOffset =\r
             targetToBase.offset * targetToBase.factorDen / targetToBase.factorNum;\r
     }\r
+    // TODO(icu-units#127): should we consider failure if there's an offset for\r
+    // a not-simple-unit? What about kilokelvin / kilocelsius?\r
 \r
     conversionRate.reciprocal = unitsState == Convertibility::RECIPROCAL;\r
 }\r
@@ -336,8 +339,8 @@ void mergeSingleUnitWithDimension(MaybeStackVector<UnitIndexAndDimension> &unitI
 \r
 void mergeUnitsAndDimensions(MaybeStackVector<UnitIndexAndDimension> &unitIndicesWithDimension,\r
                              const MeasureUnitImpl &shouldBeMerged, int32_t multiplier) {\r
-    for (int32_t unit_i = 0; unit_i < shouldBeMerged.units.length(); unit_i++) {\r
-        auto singleUnit = *shouldBeMerged.units[unit_i];\r
+    for (int32_t unit_i = 0; unit_i < shouldBeMerged.singleUnits.length(); unit_i++) {\r
+        auto singleUnit = *shouldBeMerged.singleUnits[unit_i];\r
         mergeSingleUnitWithDimension(unitIndicesWithDimension, singleUnit, multiplier);\r
     }\r
 }\r
@@ -361,28 +364,32 @@ UBool checkAllDimensionsAreZeros(const MaybeStackVector<UnitIndexAndDimension> &
 void U_I18N_API addSingleFactorConstant(StringPiece baseStr, int32_t power, Signum signum,\r
                                         Factor &factor, UErrorCode &status) {\r
     if (baseStr == "ft_to_m") {\r
-        factor.constants[CONSTANT_FT2M] += power * signum;\r
+        factor.constantExponents[CONSTANT_FT2M] += power * signum;\r
     } else if (baseStr == "ft2_to_m2") {\r
-        factor.constants[CONSTANT_FT2M] += 2 * power * signum;\r
+        factor.constantExponents[CONSTANT_FT2M] += 2 * power * signum;\r
     } else if (baseStr == "ft3_to_m3") {\r
-        factor.constants[CONSTANT_FT2M] += 3 * power * signum;\r
+        factor.constantExponents[CONSTANT_FT2M] += 3 * power * signum;\r
     } else if (baseStr == "in3_to_m3") {\r
-        factor.constants[CONSTANT_FT2M] += 3 * power * signum;\r
+        factor.constantExponents[CONSTANT_FT2M] += 3 * power * signum;\r
         factor.factorDen *= 12 * 12 * 12;\r
     } else if (baseStr == "gal_to_m3") {\r
         factor.factorNum *= 231;\r
-        factor.constants[CONSTANT_FT2M] += 3 * power * signum;\r
+        factor.constantExponents[CONSTANT_FT2M] += 3 * power * signum;\r
         factor.factorDen *= 12 * 12 * 12;\r
     } else if (baseStr == "gal_imp_to_m3") {\r
-        factor.constants[CONSTANT_GAL_IMP2M3] += power * signum;\r
+        factor.constantExponents[CONSTANT_GAL_IMP2M3] += power * signum;\r
     } else if (baseStr == "G") {\r
-        factor.constants[CONSTANT_G] += power * signum;\r
+        factor.constantExponents[CONSTANT_G] += power * signum;\r
     } else if (baseStr == "gravity") {\r
-        factor.constants[CONSTANT_GRAVITY] += power * signum;\r
+        factor.constantExponents[CONSTANT_GRAVITY] += power * signum;\r
     } else if (baseStr == "lb_to_kg") {\r
-        factor.constants[CONSTANT_LB2KG] += power * signum;\r
+        factor.constantExponents[CONSTANT_LB2KG] += power * signum;\r
+    } else if (baseStr == "glucose_molar_mass") {\r
+        factor.constantExponents[CONSTANT_GLUCOSE_MOLAR_MASS] += power * signum;\r
+    } else if (baseStr == "item_per_mole") {\r
+        factor.constantExponents[CONSTANT_ITEM_PER_MOLE] += power * signum;\r
     } else if (baseStr == "PI") {\r
-        factor.constants[CONSTANT_PI] += power * signum;\r
+        factor.constantExponents[CONSTANT_PI] += power * signum;\r
     } else {\r
         if (signum == Signum::NEGATIVE) {\r
             factor.factorDen *= std::pow(strToDouble(baseStr, status), power);\r
@@ -403,7 +410,7 @@ MeasureUnitImpl U_I18N_API extractCompoundBaseUnit(const MeasureUnitImpl &source
     MeasureUnitImpl result;\r
     if (U_FAILURE(status)) return result;\r
 \r
-    const auto &singleUnits = source.units;\r
+    const auto &singleUnits = source.singleUnits;\r
     for (int i = 0, count = singleUnits.length(); i < count; ++i) {\r
         const auto &singleUnit = *singleUnits[i];\r
         // Extract `ConversionRateInfo` using the absolute unit. For example: in case of `square-meter`,\r
@@ -421,11 +428,11 @@ MeasureUnitImpl U_I18N_API extractCompoundBaseUnit(const MeasureUnitImpl &source
         // Multiply the power of the singleUnit by the power of the baseUnit. For example, square-hectare\r
         // must be pow4-meter. (NOTE: hectare --> square-meter)\r
         auto baseUnits =\r
-            MeasureUnitImpl::forIdentifier(rateInfo->baseUnit.toStringPiece(), status).units;\r
+            MeasureUnitImpl::forIdentifier(rateInfo->baseUnit.toStringPiece(), status).singleUnits;\r
         for (int32_t i = 0, baseUnitsCount = baseUnits.length(); i < baseUnitsCount; i++) {\r
             baseUnits[i]->dimensionality *= singleUnit.dimensionality;\r
             // TODO: Deal with SI-prefix\r
-            result.append(*baseUnits[i], status);\r
+            result.appendSingleUnit(*baseUnits[i], status);\r
 \r
             if (U_FAILURE(status)) {\r
                 return result;\r
@@ -482,16 +489,37 @@ Convertibility U_I18N_API extractConvertibility(const MeasureUnitImpl &source,
     return UNCONVERTIBLE;\r
 }\r
 \r
-UnitConverter::UnitConverter(const MeasureUnitImpl &source, const MeasureUnitImpl &target,\r
-                             const ConversionRates &ratesInfo, UErrorCode &status)\r
+UnitsConverter::UnitsConverter(const MeasureUnitImpl &source, const MeasureUnitImpl &target,\r
+                               const ConversionRates &ratesInfo, UErrorCode &status)\r
     : conversionRate_(source.copy(status), target.copy(status)) {\r
-    if (source.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED ||\r
-        target.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) {\r
+    this->init(ratesInfo, status);\r
+}\r
+\r
+UnitsConverter::UnitsConverter(StringPiece sourceIdentifier, StringPiece targetIdentifier,\r
+                               UErrorCode &status)\r
+    : conversionRate_(MeasureUnitImpl::forIdentifier(sourceIdentifier, status),\r
+                      MeasureUnitImpl::forIdentifier(targetIdentifier, status)) {\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+\r
+    ConversionRates ratesInfo(status);\r
+    this->init(ratesInfo, status);\r
+}\r
+\r
+void UnitsConverter::init(const ConversionRates &ratesInfo, UErrorCode &status) {\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+\r
+    if (this->conversionRate_.source.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED ||\r
+        this->conversionRate_.target.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) {\r
         status = U_INTERNAL_PROGRAM_ERROR;\r
         return;\r
     }\r
 \r
-    Convertibility unitsState = extractConvertibility(source, target, ratesInfo, status);\r
+    Convertibility unitsState = extractConvertibility(this->conversionRate_.source,\r
+                                                      this->conversionRate_.target, ratesInfo, status);\r
     if (U_FAILURE(status)) return;\r
     if (unitsState == Convertibility::UNCONVERTIBLE) {\r
         status = U_INTERNAL_PROGRAM_ERROR;\r
@@ -500,9 +528,57 @@ UnitConverter::UnitConverter(const MeasureUnitImpl &source, const MeasureUnitImp
 \r
     loadConversionRate(conversionRate_, conversionRate_.source, conversionRate_.target, unitsState,\r
                        ratesInfo, status);\r
+                          \r
 }\r
 \r
-double UnitConverter::convert(double inputValue) const {\r
+int32_t UnitsConverter::compareTwoUnits(const MeasureUnitImpl &firstUnit,\r
+                                        const MeasureUnitImpl &secondUnit,\r
+                                        const ConversionRates &ratesInfo, UErrorCode &status) {\r
+    if (U_FAILURE(status)) {\r
+        return 0;\r
+    }\r
+\r
+    if (firstUnit.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED ||\r
+        secondUnit.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) {\r
+        status = U_INTERNAL_PROGRAM_ERROR;\r
+        return 0;\r
+    }\r
+\r
+    Convertibility unitsState = extractConvertibility(firstUnit, secondUnit, ratesInfo, status);\r
+    if (U_FAILURE(status)) {\r
+        return 0;\r
+    }\r
+\r
+    if (unitsState == Convertibility::UNCONVERTIBLE || unitsState == Convertibility::RECIPROCAL) {\r
+        status = U_INTERNAL_PROGRAM_ERROR;\r
+        return 0;\r
+    }\r
+\r
+    // Represents the conversion factor from the firstUnit to the base\r
+    // unit that specified in the conversion data which is considered as\r
+    // the root of the firstUnit and the secondUnit.\r
+    Factor firstUnitToBase = loadCompoundFactor(firstUnit, ratesInfo, status);\r
+    Factor secondUnitToBase = loadCompoundFactor(secondUnit, ratesInfo, status);\r
+\r
+    firstUnitToBase.substituteConstants();\r
+    secondUnitToBase.substituteConstants();\r
+\r
+    double firstUnitToBaseConversionRate = firstUnitToBase.factorNum / firstUnitToBase.factorDen;\r
+    double secondUnitToBaseConversionRate = secondUnitToBase.factorNum / secondUnitToBase.factorDen;\r
+\r
+    double diff = firstUnitToBaseConversionRate - secondUnitToBaseConversionRate;\r
+    if (diff > 0) {\r
+        return 1;\r
+    }\r
+\r
+    if (diff < 0) {\r
+        return -1;\r
+    }\r
+\r
+    return 0;\r
+}\r
+\r
+double UnitsConverter::convert(double inputValue) const {\r
     double result =\r
         inputValue + conversionRate_.sourceOffset; // Reset the input to the target zero index.\r
     // Convert the quantity to from the source scale to the target scale.\r
@@ -523,7 +599,7 @@ double UnitConverter::convert(double inputValue) const {
     return result;\r
 }\r
 \r
-double UnitConverter::convertInverse(double inputValue) const {\r
+double UnitsConverter::convertInverse(double inputValue) const {\r
     double result = inputValue;\r
     if (conversionRate_.reciprocal) {\r
         if (result == 0) {\r
@@ -540,6 +616,17 @@ double UnitConverter::convertInverse(double inputValue) const {
     return result;\r
 }\r
 \r
+ConversionInfo UnitsConverter::getConversionInfo() const {\r
+    ConversionInfo result;\r
+    result.conversionRate = conversionRate_.factorNum / conversionRate_.factorDen;\r
+    result.offset =\r
+        (conversionRate_.sourceOffset * (conversionRate_.factorNum / conversionRate_.factorDen)) -\r
+        conversionRate_.targetOffset;\r
+    result.reciprocal = conversionRate_.reciprocal;\r
+\r
+    return result;\r
+}\r
+\r
 } // namespace units\r
 U_NAMESPACE_END\r
 \r
index 87bd967..3a6300a 100644 (file)
@@ -20,13 +20,16 @@ namespace units {
 \r
 /* Internal Structure */\r
 \r
+// Constants corresponding to unitConstants in CLDR's units.xml.\r
 enum Constants {\r
-    CONSTANT_FT2M,    // ft2m stands for foot to meter.\r
-    CONSTANT_PI,      // PI\r
-    CONSTANT_GRAVITY, // Gravity\r
-    CONSTANT_G,\r
+    CONSTANT_FT2M,       // ft_to_m\r
+    CONSTANT_PI,         // PI\r
+    CONSTANT_GRAVITY,    // Gravity of earth (9.80665 m/s^2), "g".\r
+    CONSTANT_G,          // Newtonian constant of gravitation, "G".\r
     CONSTANT_GAL_IMP2M3, // Gallon imp to m3\r
     CONSTANT_LB2KG,      // Pound to Kilogram\r
+    CONSTANT_GLUCOSE_MOLAR_MASS,\r
+    CONSTANT_ITEM_PER_MOLE,\r
 \r
     // Must be the last element.\r
     CONSTANTS_COUNT\r
@@ -36,6 +39,7 @@ enum Constants {
 // resources file. A unit test checks that all constants in the resource\r
 // file are at least recognised by the code. Derived constants' values or\r
 // hard-coded derivations are not checked.\r
+// In ICU4J, these constants live in UnitConverter.Factor.getConversionRate().\r
 static const double constantsValues[CONSTANTS_COUNT] = {\r
     0.3048,                    // CONSTANT_FT2M\r
     411557987.0 / 131002976.0, // CONSTANT_PI\r
@@ -43,6 +47,8 @@ static const double constantsValues[CONSTANTS_COUNT] = {
     6.67408E-11,               // CONSTANT_G\r
     0.00454609,                // CONSTANT_GAL_IMP2M3\r
     0.45359237,                // CONSTANT_LB2KG\r
+    180.1557,                  // CONSTANT_GLUCOSE_MOLAR_MASS\r
+    6.02214076E+23,            // CONSTANT_ITEM_PER_MOLE\r
 };\r
 \r
 typedef enum Signum {\r
@@ -56,7 +62,9 @@ struct U_I18N_API Factor {
     double factorDen = 1;\r
     double offset = 0;\r
     bool reciprocal = false;\r
-    int32_t constants[CONSTANTS_COUNT] = {};\r
+\r
+    // Exponents for the symbolic constants\r
+    int32_t constantExponents[CONSTANTS_COUNT] = {};\r
 \r
     void multiplyBy(const Factor &rhs);\r
     void divideBy(const Factor &rhs);\r
@@ -64,14 +72,22 @@ struct U_I18N_API Factor {
     // Apply the power to the factor.\r
     void power(int32_t power);\r
 \r
-    // Flip the `Factor`, for example, factor= 2/3, flippedFactor = 3/2\r
-    void flip();\r
+    // Apply SI or binary prefix to the Factor.\r
+    void applyPrefix(UMeasurePrefix unitPrefix);\r
 \r
-    // Apply SI prefix to the `Factor`\r
-    void applySiPrefix(UMeasureSIPrefix siPrefix);\r
+    // Does an in-place substition of the "symbolic constants" based on\r
+    // constantExponents (resetting the exponents).\r
+    //\r
+    // In ICU4J, see UnitConverter.Factor.getConversionRate().\r
     void substituteConstants();\r
 };\r
 \r
+struct U_I18N_API ConversionInfo {\r
+    double conversionRate;\r
+    double offset;\r
+    bool reciprocal;\r
+};\r
+\r
 /*\r
  * Adds a single factor element to the `Factor`. e.g "ft3m", "2.333" or "cup2m3". But not "cup2m3^3".\r
  */\r
@@ -127,23 +143,47 @@ Convertibility U_I18N_API extractConvertibility(const MeasureUnitImpl &source,
  *    Only works with SINGLE and COMPOUND units. If one of the units is a\r
  *    MIXED unit, an error will occur. For more information, see UMeasureUnitComplexity.\r
  */\r
-class U_I18N_API UnitConverter : public UMemory {\r
+class U_I18N_API UnitsConverter : public UMemory {\r
   public:\r
     /**\r
      * Constructor of `UnitConverter`.\r
      * NOTE:\r
      *   - source and target must be under the same category\r
      *      - e.g. meter to mile --> both of them are length units.\r
+     * NOTE:\r
+     *    This constructor creates an instance of `ConversionRates` internally.\r
+     *\r
+     * @param sourceIdentifier represents the source unit identifier.\r
+     * @param targetIdentifier represents the target unit identifier.\r
+     * @param status\r
+     */\r
+    UnitsConverter(StringPiece sourceIdentifier, StringPiece targetIdentifier, UErrorCode &status);\r
+\r
+    /**\r
+     * Constructor of `UnitConverter`.\r
+     * NOTE:\r
+     *   - source and target must be under the same category\r
+     *      - e.g. meter to mile --> both of them are length units.\r
      *\r
      * @param source represents the source unit.\r
      * @param target represents the target unit.\r
      * @param ratesInfo Contains all the needed conversion rates.\r
      * @param status\r
      */\r
-    UnitConverter(const MeasureUnitImpl &source, const MeasureUnitImpl &target,\r
+    UnitsConverter(const MeasureUnitImpl &source, const MeasureUnitImpl &target,\r
                   const ConversionRates &ratesInfo, UErrorCode &status);\r
 \r
     /**\r
+     * Compares two single units and returns 1 if the first one is greater, -1 if the second\r
+     * one is greater and 0 if they are equal.\r
+     *\r
+     * NOTE:\r
+     *  Compares only single units that are convertible.\r
+     */\r
+    static int32_t compareTwoUnits(const MeasureUnitImpl &firstUnit, const MeasureUnitImpl &SecondUnit,\r
+                                   const ConversionRates &ratesInfo, UErrorCode &status);\r
+\r
+    /**\r
      * Convert a measurement expressed in the source unit to a measurement\r
      * expressed in the target unit.\r
      *\r
@@ -161,8 +201,15 @@ class U_I18N_API UnitConverter : public UMemory {
      */\r
     double convertInverse(double inputValue) const;\r
 \r
+    ConversionInfo getConversionInfo() const;\r
+\r
   private:\r
     ConversionRate conversionRate_;\r
+\r
+    /**\r
+     * Initialises the object.\r
+     */ \r
+    void init(const ConversionRates &ratesInfo, UErrorCode &status);\r
 };\r
 \r
 } // namespace units\r
index 87d349e..8e189d0 100644 (file)
@@ -282,6 +282,10 @@ int32_t getPreferenceMetadataIndex(const MaybeStackVector<UnitPreferenceMetadata
     if (U_FAILURE(status)) { return -1; }\r
     if (idx >= 0) { return idx; }\r
     if (!foundCategory) {\r
+        // TODO: failures can happen if units::getUnitCategory returns a category\r
+        // that does not appear in unitPreferenceData. Do we want a unit test that\r
+        // checks unitPreferenceData has full coverage of categories? Or just trust\r
+        // CLDR?\r
         status = U_ILLEGAL_ARGUMENT_ERROR;\r
         return -1;\r
     }\r
@@ -360,29 +364,6 @@ int32_t UnitPreferenceMetadata::compareTo(const UnitPreferenceMetadata &other, b
     return cmp;\r
 }\r
 \r
-CharString U_I18N_API getUnitCategory(const char *baseUnitIdentifier, UErrorCode &status) {\r
-    CharString result;\r
-    LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));\r
-    LocalUResourceBundlePointer unitQuantities(\r
-        ures_getByKey(unitsBundle.getAlias(), "unitQuantities", NULL, &status));\r
-    int32_t categoryLength;\r
-    if (U_FAILURE(status)) { return result; }\r
-    const UChar *uCategory =\r
-        ures_getStringByKey(unitQuantities.getAlias(), baseUnitIdentifier, &categoryLength, &status);\r
-    if (U_FAILURE(status)) {\r
-        // TODO(CLDR-13787,hugovdm): special-casing the consumption-inverse\r
-        // case. Once CLDR-13787 is clarified, this should be generalised (or\r
-        // possibly removed):\r
-        if (uprv_strcmp(baseUnitIdentifier, "meter-per-cubic-meter") == 0) {\r
-            status = U_ZERO_ERROR;\r
-            result.append("consumption-inverse", status);\r
-            return result;\r
-        }\r
-    }\r
-    result.appendInvariantChars(uCategory, categoryLength, status);\r
-    return result;\r
-}\r
-\r
 // TODO: this may be unnecessary. Fold into ConversionRates class? Or move to anonymous namespace?\r
 void U_I18N_API getAllConversionRates(MaybeStackVector<ConversionRateInfo> &result, UErrorCode &status) {\r
     LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));\r
@@ -415,7 +396,11 @@ void U_I18N_API UnitPreferences::getPreferencesFor(StringPiece category, StringP
                                                    const UnitPreference *const *&outPreferences,\r
                                                    int32_t &preferenceCount, UErrorCode &status) const {\r
     int32_t idx = getPreferenceMetadataIndex(&metadata_, category, usage, region, status);\r
-    if (U_FAILURE(status)) { return; }\r
+    if (U_FAILURE(status)) {\r
+        outPreferences = nullptr;\r
+        preferenceCount = 0;\r
+        return;\r
+    }\r
     U_ASSERT(idx >= 0); // Failures should have been taken care of by `status`.\r
     const UnitPreferenceMetadata *m = metadata_[idx];\r
     outPreferences = unitPrefs_.getAlias() + m->prefsOffset;\r
index 1dd37fc..cc67d53 100644 (file)
@@ -18,22 +18,6 @@ U_NAMESPACE_BEGIN
 namespace units {\r
 \r
 /**\r
- * Looks up the unit category of a base unit identifier.\r
- *\r
- * Only supports base units, other units must be resolved to base units before\r
- * passing to this function.\r
- *\r
- * Categories are found in `unitQuantities` in the `units` resource (see\r
- * `units.txt`).\r
- *\r
- * TODO(hugovdm): if we give units_data.cpp access to the functionality of\r
- * `extractCompoundBaseUnit` which is currently in units_converter.cpp, we could\r
- * support all units for which there is a category. Does it make sense to move\r
- * that function to units_data.cpp?\r
- */\r
-CharString U_I18N_API getUnitCategory(const char *baseUnitIdentifier, UErrorCode &status);\r
-\r
-/**\r
  * Encapsulates "convertUnits" information from units resources, specifying how\r
  * to convert from one unit to another.\r
  *\r
index a78f5c7..f0a339e 100644 (file)
@@ -43,8 +43,23 @@ Precision UnitsRouter::parseSkeletonToPrecision(icu::UnicodeString precisionSkel
     return result;\r
 }\r
 \r
-UnitsRouter::UnitsRouter(MeasureUnit inputUnit, StringPiece region, StringPiece usage,\r
+UnitsRouter::UnitsRouter(StringPiece inputUnitIdentifier, StringPiece region, StringPiece usage,\r
                          UErrorCode &status) {\r
+    this->init(MeasureUnit::forIdentifier(inputUnitIdentifier, status), region, usage, status);\r
+}\r
+\r
+UnitsRouter::UnitsRouter(const MeasureUnit &inputUnit, StringPiece region, StringPiece usage,\r
+                         UErrorCode &status) {\r
+    this->init(std::move(inputUnit), region, usage, status);\r
+}\r
+\r
+void UnitsRouter::init(const MeasureUnit &inputUnit, StringPiece region, StringPiece usage,\r
+                       UErrorCode &status) {\r
+\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
+\r
     // TODO: do we want to pass in ConversionRates and UnitPreferences instead\r
     // of loading in each UnitsRouter instance? (Or make global?)\r
     ConversionRates conversionRates(status);\r
@@ -53,13 +68,18 @@ UnitsRouter::UnitsRouter(MeasureUnit inputUnit, StringPiece region, StringPiece
     MeasureUnitImpl inputUnitImpl = MeasureUnitImpl::forMeasureUnitMaybeCopy(inputUnit, status);\r
     MeasureUnit baseUnit =\r
         (extractCompoundBaseUnit(inputUnitImpl, conversionRates, status)).build(status);\r
-    CharString category = getUnitCategory(baseUnit.getIdentifier(), status);\r
+    CharString category = getUnitQuantity(baseUnit.getIdentifier(), status);\r
+    if (U_FAILURE(status)) {\r
+        return;\r
+    }\r
 \r
     const UnitPreference *const *unitPreferences;\r
-    int32_t preferencesCount;\r
-    prefs.getPreferencesFor(category.data(), usage, region, unitPreferences, preferencesCount, status);\r
+    int32_t preferencesCount = 0;\r
+    prefs.getPreferencesFor(category.toStringPiece(), usage, region, unitPreferences, preferencesCount,\r
+                            status);\r
 \r
     for (int i = 0; i < preferencesCount; ++i) {\r
+        U_ASSERT(unitPreferences[i] != nullptr);\r
         const auto &preference = *unitPreferences[i];\r
 \r
         MeasureUnitImpl complexTargetUnitImpl =\r
index 973953d..245c090 100644 (file)
@@ -120,7 +120,9 @@ namespace units {
  */\r
 class U_I18N_API UnitsRouter {\r
   public:\r
-    UnitsRouter(MeasureUnit inputUnit, StringPiece locale, StringPiece usage, UErrorCode &status);\r
+    UnitsRouter(StringPiece inputUnitIdentifier, StringPiece locale, StringPiece usage,\r
+                UErrorCode &status);\r
+    UnitsRouter(const MeasureUnit &inputUnit, StringPiece locale, StringPiece usage, UErrorCode &status);\r
 \r
     /**\r
      * Performs locale and usage sensitive unit conversion.\r
@@ -152,6 +154,8 @@ class U_I18N_API UnitsRouter {
 \r
     static number::Precision parseSkeletonToPrecision(icu::UnicodeString precisionSkeleton,\r
                                                       UErrorCode &status);\r
+\r
+    void init(const MeasureUnit &inputUnit, StringPiece locale, StringPiece usage, UErrorCode &status);\r
 };\r
 \r
 } // namespace units\r
index daa26db..f8dab54 100644 (file)
@@ -4061,7 +4061,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch  *strsrch,
         // * do NOT require that match limit be on a breakIter boundary\r
 \r
         //  Advance the match end position to the first acceptable match boundary.\r
-        //    This advances the index over any combining charcters.\r
+        //    This advances the index over any combining characters.\r
         mLimit = maxLimit;\r
         if (minLimit < maxLimit) {\r
             // When the last CE's low index is same with its high index, the CE is likely\r
index 54946c3..44f0968 100644 (file)
@@ -15,7 +15,7 @@
 *   created on: 2009Jan05  (refactoring earlier files)\r
 *   created by: Andy Heninger\r
 *\r
-*   Internal classes for compililing confusable data into its binary (runtime) form.\r
+*   Internal classes for compiling confusable data into its binary (runtime) form.\r
 */\r
 \r
 #include "unicode/utypes.h"\r
index 028b0d0..f762fdc 100644 (file)
@@ -157,7 +157,7 @@ public:
 //\r
 //    String Table:\r
 //       The strings table contains all of the value strings (those of length two or greater)\r
-//       concatentated together into one long UChar (UTF-16) array.\r
+//       concatenated together into one long UChar (UTF-16) array.\r
 //\r
 //       There is no nul character or other mark between adjacent strings.\r
 //\r
index bdda560..fc31da7 100644 (file)
@@ -376,7 +376,7 @@ static void getDefaultTZName(const UnicodeString &tzid, UBool isDST, UnicodeStri
  * dow      day of week in BYDAY, or 0 when not found\r
  * wim      day of week ordinal number in BYDAY, or 0 when not found\r
  * dom      an array of day of month\r
- * domCount number of availble days in dom (domCount is specifying the size of dom on input)\r
+ * domCount number of available days in dom (domCount is specifying the size of dom on input)\r
  * until    time defined by UNTIL attribute or MIN_MILLIS if not available\r
  */\r
 static void parseRRULE(const UnicodeString& rrule, int32_t& month, int32_t& dow, int32_t& wim,\r
@@ -1217,6 +1217,12 @@ VTimeZone::getOffset(UDate date, UBool local, int32_t& rawOffset,
     return tz->getOffset(date, local, rawOffset, dstOffset, status);\r
 }\r
 \r
+void VTimeZone::getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingTimeOpt,\r
+                                   UTimeZoneLocalOption duplicatedTimeOpt,\r
+                                   int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const {\r
+    tz->getOffsetFromLocal(date, nonExistingTimeOpt, duplicatedTimeOpt, rawOffset, dstOffset, status);\r
+}\r
+\r
 void\r
 VTimeZone::setRawOffset(int32_t offsetMillis) {\r
     tz->setRawOffset(offsetMillis);\r
@@ -2649,7 +2655,7 @@ VTimeZone::endZoneProps(VTZWriter& writer, UBool isDst, UErrorCode& status) cons
 }\r
 \r
 /*\r
- * Write the beggining part of RRULE line\r
+ * Write the beginning part of RRULE line\r
  */\r
 void\r
 VTimeZone::beginRRULE(VTZWriter& writer, int32_t month, UErrorCode& status) const {\r
index cf440f8..6339381 100644 (file)
@@ -136,7 +136,7 @@ U_CAPI void U_EXPORT2
 vzone_write(VZone* zone, UChar* & result, int32_t & resultLength, UErrorCode& status);\r
 \r
 /**\r
- * Writes RFC2445 VTIMEZONE data for this time zone applicalbe\r
+ * Writes RFC2445 VTIMEZONE data for this time zone applicable\r
  * for dates after the specified start time.\r
  * @param zone, the vzone to use\r
  * @param start The start date.\r
@@ -148,7 +148,7 @@ U_CAPI void U_EXPORT2
 vzone_writeFromStart(VZone* zone, UDate start, UChar* & result, int32_t & resultLength, UErrorCode& status);\r
 \r
 /**\r
- * Writes RFC2445 VTIMEZONE data applicalbe for the specified date.\r
+ * Writes RFC2445 VTIMEZONE data applicable for the specified date.\r
  * Some common iCalendar implementations can only handle a single time\r
  * zone property or a pair of standard and daylight time properties using\r
  * BYDAY rule with day of week (such as BYDAY=1SUN).  This method produce\r
index b5d2eda..c507752 100644 (file)
@@ -193,6 +193,7 @@ Win32DateFormat::~Win32DateFormat()
 \r
 Win32DateFormat &Win32DateFormat::operator=(const Win32DateFormat &other)\r
 {\r
+    if (this == &other) { return *this; }  // self-assignment: no-op\r
     // The following handles fCalendar\r
     DateFormat::operator=(other);\r
 \r
index 260d3f1..51f54a5 100644 (file)
@@ -268,6 +268,7 @@ Win32NumberFormat::~Win32NumberFormat()
 \r
 Win32NumberFormat &Win32NumberFormat::operator=(const Win32NumberFormat &other)\r
 {\r
+    if (this == &other) { return *this; }  // self-assignment: no-op\r
     NumberFormat::operator=(other);\r
 \r
     this->fCurrency          = other.fCurrency;\r
index 2f8db38..1171cbe 100644 (file)
@@ -145,7 +145,7 @@ static UBool getWindowsTimeZoneInfo(TIME_ZONE_INFORMATION *zoneInfo, const UChar
 }\r
 \r
 /*\r
- * Given the timezone icuid, fill in zoneInfo by calling auxillary functions that creates a timezone and extract the \r
+ * Given the timezone icuid, fill in zoneInfo by calling auxiliary functions that creates a timezone and extract the \r
  * information to put into zoneInfo. This includes bias and standard time date and daylight saving date.\r
  */\r
 U_CAPI UBool U_EXPORT2\r
index eb6563d..7dd49d3 100644 (file)
@@ -50,7 +50,7 @@ public:
     static const UChar* U_EXPORT2 getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status);\r
 \r
     /*\r
-     * Conveninent method returning CLDR canonical ID for the given time zone\r
+     * Convenient method returning CLDR canonical ID for the given time zone\r
      */\r
     static const UChar* U_EXPORT2 getCanonicalCLDRID(const TimeZone& tz);\r
 \r
index 4552a5e..1e2072a 100644 (file)
@@ -60,7 +60,7 @@
     </ClCompile>\r
     <Link>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuio68d.dll</OutputFile>\r
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuio69d.dll</OutputFile>\r
       <ProgramDatabaseFile>..\..\$(IcuLibOutputDir)\icuiod.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuiod.lib</ImportLibrary>\r
       <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
@@ -73,7 +73,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuio68.dll</OutputFile>\r
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuio69.dll</OutputFile>\r
       <ProgramDatabaseFile>..\..\$(IcuLibOutputDir)\icuio.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuio.lib</ImportLibrary>\r
       <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
index 664d0db..bd571aa 100644 (file)
@@ -51,7 +51,7 @@
     wastes a lot of time and space.\r
  * Test stdin and stdout with the u_f* functions\r
  * Testing should be done for reading and writing multi-byte encodings,\r
-    and make sure that a character that is contained across buffer boundries\r
+    and make sure that a character that is contained across buffer boundaries\r
     works even for incomplete characters.\r
  * Make sure that the last character is flushed when the file/string is closed.\r
  * snprintf should follow the C99 standard for the return value, which is\r
index fbeea23..b99de08 100644 (file)
@@ -140,7 +140,7 @@ public:
      *\r
      * @param limit is the limit index to add to the array.\r
      *\r
-     * @return the run index where the limit index was stored, or -1 if the limit index cannt be stored.\r
+     * @return the run index where the limit index was stored, or -1 if the limit index cannot be stored.\r
      *\r
      * @see init\r
      * @see grow\r
@@ -310,7 +310,7 @@ public:
     virtual ~FontRuns();\r
 \r
     /**\r
-     * Get the <code>LEFontInstance</code> object assoicated with the given run\r
+     * Get the <code>LEFontInstance</code> object associated with the given run\r
      * of text. Use <code>RunArray::getLimit(run)</code> to get the corresponding\r
      * limit index.\r
      *\r
@@ -447,7 +447,7 @@ public:
     virtual ~LocaleRuns();\r
 \r
     /**\r
-     * Get the <code>Locale</code> object assoicated with the given run\r
+     * Get the <code>Locale</code> object associated with the given run\r
      * of text. Use <code>RunArray::getLimit(run)</code> to get the corresponding\r
      * limit index.\r
      *\r
@@ -585,7 +585,7 @@ public:
     virtual ~ValueRuns();\r
 \r
     /**\r
-     * Get the integer value assoicated with the given run\r
+     * Get the integer value associated with the given run\r
      * of text. Use <code>RunArray::getLimit(run)</code> to get the corresponding\r
      * limit index.\r
      *\r
index 04f5628..20ae732 100644 (file)
@@ -164,11 +164,6 @@ U_CAPI UBiDiDirection U_EXPORT2
 pl_getTextDirection(pl_paragraph *paragraph);\r
 \r
 /**\r
- * Get the max ascent value for all the fonts\r
- * in the paragraph.\r
- *\r
- * @param paragraph the <code>pl_paragraph</code>\r
- *\r
  * Return the max ascent value for all the fonts\r
  * in the paragraph.\r
  *\r
index eef27fb..c5cdec9 100644 (file)
@@ -138,7 +138,7 @@ pl_getFontRunLimit(const pl_fontRuns *fontRuns,
                    le_int32 run);\r
 \r
 /**\r
- * Get the <code>le_font</code> object assoicated with the given run\r
+ * Get the <code>le_font</code> object associated with the given run\r
  * of text. Use <code>pl_getFontRunLimit(run)</code> to get the corresponding\r
  * limit index.\r
  *\r
@@ -271,7 +271,7 @@ pl_getValueRunLimit(const pl_valueRuns *valueRuns,
                      le_int32 run);\r
 \r
 /**\r
- * Get the value assoicated with the given run * of text. Use\r
+ * Get the value associated with the given run * of text. Use\r
  * <code>pl_getValueRunLimit(run)</code> to get the corresponding\r
  * limit index.\r
  *\r
@@ -403,7 +403,7 @@ pl_getLocaleRunLimit(const pl_localeRuns *localeRuns,
                      le_int32 run);\r
 \r
 /**\r
- * Get the <code>le_font</code> object assoicated with the given run\r
+ * Get the <code>le_font</code> object associated with the given run\r
  * of text. Use <code>pl_getLocaleRunLimit(run)</code> to get the corresponding\r
  * limit index.\r
  *\r
index 69bab91..c6f5327 100644 (file)
@@ -54,7 +54,7 @@
       <CompileAs>Default</CompileAs>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\bin\iculx68.dll</OutputFile>\r
+      <OutputFile>..\..\bin\iculx69.dll</OutputFile>\r
       <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>.\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ProgramDatabaseFile>.\..\..\lib\iculx.pdb</ProgramDatabaseFile>\r
@@ -79,7 +79,7 @@
       <CompileAs>Default</CompileAs>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\bin\iculx68d.dll</OutputFile>\r
+      <OutputFile>..\..\bin\iculx69d.dll</OutputFile>\r
       <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>.\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <CompileAs>Default</CompileAs>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\bin64\iculx68.dll</OutputFile>\r
+      <OutputFile>..\..\bin64\iculx69.dll</OutputFile>\r
       <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>.\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ProgramDatabaseFile>.\..\..\lib64\iculx.pdb</ProgramDatabaseFile>\r
       <CompileAs>Default</CompileAs>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\bin64\iculx68d.dll</OutputFile>\r
+      <OutputFile>..\..\bin64\iculx69d.dll</OutputFile>\r
       <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>.\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
index 582b484..b3fc673 100644 (file)
@@ -251,7 +251,7 @@ public:
     virtual ~ULocRuns();\r
 \r
     /**\r
-     * Get the name of the locale assoicated with the given run\r
+     * Get the name of the locale associated with the given run\r
      * of text. Use <code>RunArray::getLimit(run)</code> to get the corresponding\r
      * limit index.\r
      *\r
index c7b0d19..7c8c4b0 100644 (file)
@@ -56,7 +56,7 @@
       <SetChecksum>true</SetChecksum>\r
       <TurnOffAssemblyGeneration>true</TurnOffAssemblyGeneration>\r
       <!-- Note: stubdata is somewhat odd in that it doesn't suffix the Debug output DLL/LIB with a "d" like common/i18n/etc. -->\r
-      <OutputFile>..\..\$(IcuBinOutputDir)\icudt68.dll</OutputFile>\r
+      <OutputFile>..\..\$(IcuBinOutputDir)\icudt69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icudt.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icudt.lib</ImportLibrary>\r
     </Link>\r
index 7fc10a0..0e3d51b 100644 (file)
@@ -1174,7 +1174,7 @@ void TestSortKey()
     free(sortk2);\r
     free(sortk3);\r
 \r
-    log_verbose("Use secondary comparision level testing ...\n");\r
+    log_verbose("Use secondary comparison level testing ...\n");\r
     ucol_setStrength(col, UCOL_SECONDARY);\r
     sortklen=ucol_getSortKey(col, test1, u_strlen(test1),  NULL, 0);\r
     sortk1=(uint8_t*)malloc(sizeof(uint8_t) * (sortklen+1));\r
index 8a25aa8..9ce0edc 100644 (file)
@@ -49,6 +49,7 @@
 \r
 #if !UCONFIG_NO_FILE_IO\r
 static void TestBreakIteratorSafeClone(void);\r
+static void TestBreakIteratorClone(void);\r
 #endif\r
 static void TestBreakIteratorRules(void);\r
 static void TestBreakIteratorRuleError(void);\r
@@ -66,6 +67,7 @@ void addBrkIterAPITest(TestNode** root)
 #if !UCONFIG_NO_FILE_IO\r
     addTest(root, &TestBreakIteratorCAPI, "tstxtbd/cbiapts/TestBreakIteratorCAPI");\r
     addTest(root, &TestBreakIteratorSafeClone, "tstxtbd/cbiapts/TestBreakIteratorSafeClone");\r
+    addTest(root, &TestBreakIteratorClone, "tstxtbd/cbiapts/TestBreakIteratorClone");\r
     addTest(root, &TestBreakIteratorUText, "tstxtbd/cbiapts/TestBreakIteratorUText");\r
 #endif\r
     addTest(root, &TestBreakIteratorRules, "tstxtbd/cbiapts/TestBreakIteratorRules");\r
@@ -515,6 +517,88 @@ static void TestBreakIteratorSafeClone(void)
         ubrk_close(someIterators[i]);\r
     }\r
 }\r
+\r
+static void TestBreakIteratorClone(void)\r
+{\r
+    const UChar text[] = u"He's from Africa. Mr. Livingston, I presume? Yeah";\r
+    UBreakIterator * someIterators [CLONETEST_ITERATOR_COUNT];\r
+\r
+    UBreakIterator * brk;\r
+    UErrorCode status = U_ZERO_ERROR;\r
+    int32_t start,pos;\r
+    int32_t i;\r
+\r
+    /*Testing ubrk_clone */\r
+\r
+    /* US & Thai - rule-based & dictionary based */\r
+    someIterators[0] = ubrk_open(UBRK_WORD, "en_US", text, u_strlen(text), &status);\r
+    if(!someIterators[0] || U_FAILURE(status)) {\r
+      log_data_err("Couldn't open en_US word break iterator - %s\n", u_errorName(status));\r
+      return;\r
+    }\r
+\r
+    someIterators[1] = ubrk_open(UBRK_WORD, "th_TH", text, u_strlen(text), &status);\r
+    if(!someIterators[1] || U_FAILURE(status)) {\r
+      log_data_err("Couldn't open th_TH word break iterator - %s\n", u_errorName(status));\r
+      return;\r
+    }\r
+\r
+    /* test each type of iterator */\r
+    for (i = 0; i < CLONETEST_ITERATOR_COUNT; i++)\r
+    {\r
+        /* error status - should return 0 & keep error the same */\r
+        status = U_MEMORY_ALLOCATION_ERROR;\r
+        if (NULL != ubrk_clone(someIterators[i], &status) || status != U_MEMORY_ALLOCATION_ERROR)\r
+        {\r
+            log_err("FAIL: Cloned Iterator failed to deal correctly with incoming error status\n");\r
+        }\r
+\r
+        status = U_ZERO_ERROR;\r
+\r
+        /* Do these cloned Iterators work at all - make a first & next call */\r
+        brk = ubrk_clone(someIterators[i], &status);\r
+\r
+        start = ubrk_first(brk);\r
+        if(start!=0)\r
+            log_err("error ubrk_start(clone) did not return 0, but %i\n", start);\r
+        pos=ubrk_next(brk);\r
+        if(pos!=4)\r
+            log_err("error ubrk_next(clone) did not return 4, but %i\n", pos);\r
+\r
+        ubrk_close(brk);\r
+\r
+        pos = ubrk_next(someIterators[i]);\r
+        if (pos != 4) {\r
+            log_err("error ubrk_next(iter) did not return 4, but %i\n", pos);\r
+        }\r
+\r
+        brk = ubrk_clone(someIterators[i], &status);\r
+        // The text position should be kept in the new clone.\r
+        start = ubrk_current(brk);\r
+        if (start != 4) {\r
+            log_err("error ubrk_current(clone) did not return 4, but %i\n", start);\r
+        }\r
+\r
+        pos = ubrk_next(brk);\r
+        if (pos != 5) {\r
+            log_err("error ubrk_next(clone) did not return 5, but %i\n", pos);\r
+        }\r
+        start = ubrk_current(brk);\r
+        if (start != 5) {\r
+            log_err("error ubrk_current(clone) did not return 5, but %i\n", start);\r
+        }\r
+\r
+        start = ubrk_current(someIterators[i]);\r
+        if (start != 4) {\r
+            log_err("error ubrk_current(iter) did not keep the same position of 4,"\r
+                    " but %i after advancing the position in its clone.\n", start);\r
+        }\r
+\r
+        ubrk_close(brk);\r
+\r
+        ubrk_close(someIterators[i]);\r
+    }\r
+}\r
 #endif\r
 \r
 \r
index 6e8bdf0..6c85bfc 100644 (file)
@@ -41,6 +41,7 @@ void TestGetWindowsTimeZoneID(void);
 void TestGetTimeZoneIDByWindowsID(void);\r
 void TestJpnCalAddSetNextEra(void);\r
 void TestUcalOpenBufferRead(void);\r
+void TestGetTimeZoneOffsetFromLocal(void);\r
 \r
 void addCalTest(TestNode** root);\r
 \r
@@ -65,6 +66,7 @@ void addCalTest(TestNode** root)
     addTest(root, &TestGetTimeZoneIDByWindowsID, "tsformat/ccaltst/TestGetTimeZoneIDByWindowsID");\r
     addTest(root, &TestJpnCalAddSetNextEra, "tsformat/ccaltst/TestJpnCalAddSetNextEra");\r
     addTest(root, &TestUcalOpenBufferRead, "tsformat/ccaltst/TestUcalOpenBufferRead");\r
+    addTest(root, &TestGetTimeZoneOffsetFromLocal, "tsformat/ccaltst/TestGetTimeZoneOffsetFromLocal");\r
 }\r
 \r
 /* "GMT" */\r
@@ -1027,7 +1029,7 @@ static void TestAddRollExtensive()
     checkDate(cal, y, m, d);\r
     ucal_roll(cal, (UCalendarDateFields)-1, 10, &status);\r
     if(status==U_ILLEGAL_ARGUMENT_ERROR)\r
-        log_verbose("Pass: illegal arguement error as expected\n");\r
+        log_verbose("Pass: illegal argument error as expected\n");\r
     else{\r
         log_err("Fail: no illegal argument error got..: %s\n", u_errorName(status));\r
         return;\r
@@ -2553,4 +2555,220 @@ void TestUcalOpenBufferRead() {
     ucal_close(cal);\r
 }\r
 \r
+\r
+/*\r
+ * Testing ucal_getTimeZoneOffsetFromLocal\r
+ */\r
+void\r
+TestGetTimeZoneOffsetFromLocal() {\r
+    static const UChar utc[] = u"Etc/GMT";\r
+\r
+    const int32_t HOUR = 60*60*1000;\r
+    const int32_t MINUTE = 60*1000;\r
+\r
+    const int32_t DATES[][6] = {\r
+        {2006, UCAL_APRIL, 2, 1, 30, 1*HOUR+30*MINUTE},\r
+        {2006, UCAL_APRIL, 2, 2, 00, 2*HOUR},\r
+        {2006, UCAL_APRIL, 2, 2, 30, 2*HOUR+30*MINUTE},\r
+        {2006, UCAL_APRIL, 2, 3, 00, 3*HOUR},\r
+        {2006, UCAL_APRIL, 2, 3, 30, 3*HOUR+30*MINUTE},\r
+        {2006, UCAL_OCTOBER, 29, 0, 30, 0*HOUR+30*MINUTE},\r
+        {2006, UCAL_OCTOBER, 29, 1, 00, 1*HOUR},\r
+        {2006, UCAL_OCTOBER, 29, 1, 30, 1*HOUR+30*MINUTE},\r
+        {2006, UCAL_OCTOBER, 29, 2, 00, 2*HOUR},\r
+        {2006, UCAL_OCTOBER, 29, 2, 30, 2*HOUR+30*MINUTE},\r
+    };\r
+\r
+    // Expected offsets by\r
+    // void U_ucal_getTimeZoneOffsetFromLocal(\r
+    //   const UCalendar* cal,\r
+    //   UTimeZoneLocalOption nonExistingTimeOpt,\r
+    //   UTimeZoneLocalOption duplicatedTimeOpt,\r
+    //   int32_t* rawOffset, int32_t* dstOffset, UErrorCode* status);\r
+    // with nonExistingTimeOpt=UCAL_TZ_LOCAL_STANDARD and\r
+    // duplicatedTimeOpt=UCAL_TZ_LOCAL_STANDARD\r
+    const int32_t OFFSETS2[][2] = {\r
+        // April 2, 2006\r
+        {-8*HOUR, 0},\r
+        {-8*HOUR, 0},\r
+        {-8*HOUR, 0},\r
+        {-8*HOUR, 1*HOUR},\r
+        {-8*HOUR, 1*HOUR},\r
+\r
+        // Oct 29, 2006\r
+        {-8*HOUR, 1*HOUR},\r
+        {-8*HOUR, 0},\r
+        {-8*HOUR, 0},\r
+        {-8*HOUR, 0},\r
+        {-8*HOUR, 0},\r
+    };\r
+\r
+    // Expected offsets by\r
+    // void U_ucal_getTimeZoneOffsetFromLocal(\r
+    //   const UCalendar* cal,\r
+    //   UTimeZoneLocalOption nonExistingTimeOpt,\r
+    //   UTimeZoneLocalOption duplicatedTimeOpt,\r
+    //   int32_t* rawOffset, int32_t* dstOffset, UErrorCode* status);\r
+    // with nonExistingTimeOpt=UCAL_TZ_LOCAL_DAYLIGHT and\r
+    // duplicatedTimeOpt=UCAL_TZ_LOCAL_DAYLIGHT\r
+    const int32_t OFFSETS3[][2] = {\r
+        // April 2, 2006\r
+        {-8*HOUR, 0},\r
+        {-8*HOUR, 1*HOUR},\r
+        {-8*HOUR, 1*HOUR},\r
+        {-8*HOUR, 1*HOUR},\r
+        {-8*HOUR, 1*HOUR},\r
+\r
+        // October 29, 2006\r
+        {-8*HOUR, 1*HOUR},\r
+        {-8*HOUR, 1*HOUR},\r
+        {-8*HOUR, 1*HOUR},\r
+        {-8*HOUR, 0},\r
+        {-8*HOUR, 0},\r
+    };\r
+\r
+    UErrorCode status = U_ZERO_ERROR;\r
+\r
+    int32_t rawOffset, dstOffset;\r
+    UCalendar *cal = ucal_open(utc, -1, "en", UCAL_GREGORIAN, &status);\r
+    if (U_FAILURE(status)) {\r
+        log_data_err("ucal_open: %s", u_errorName(status));\r
+        return;\r
+    }\r
+\r
+    // Calculate millis\r
+    UDate MILLIS[UPRV_LENGTHOF(DATES)];\r
+    for (int32_t i = 0; i < UPRV_LENGTHOF(DATES); i++) {\r
+        ucal_setDateTime(cal, DATES[i][0], DATES[i][1], DATES[i][2],\r
+                         DATES[i][3], DATES[i][4], 0, &status);\r
+        MILLIS[i] = ucal_getMillis(cal, &status);\r
+        if (U_FAILURE(status)) {\r
+            log_data_err("ucal_getMillis failed");\r
+            return;\r
+        }\r
+    }\r
+    ucal_setTimeZone(cal, AMERICA_LOS_ANGELES, -1, &status);\r
+\r
+    // Test void ucal_getTimeZoneOffsetFromLocal(\r
+    // const UCalendar* cal,\r
+    // UTimeZoneLocalOption nonExistingTimeOpt,\r
+    // UTimeZoneLocalOption duplicatedTimeOpt,\r
+    // int32_t* rawOffset, int32_t* dstOffset, UErrorCode* status);\r
+    // with nonExistingTimeOpt=UCAL_TZ_LOCAL_STANDARD and\r
+    // duplicatedTimeOpt=UCAL_TZ_LOCAL_STANDARD\r
+    for (int m = 0; m < UPRV_LENGTHOF(DATES); m++) {\r
+        status = U_ZERO_ERROR;\r
+        ucal_setMillis(cal, MILLIS[m], &status);\r
+        if (U_FAILURE(status)) {\r
+            log_data_err("ucal_setMillis: %s\n", u_errorName(status));\r
+        }\r
+\r
+        ucal_getTimeZoneOffsetFromLocal(cal, UCAL_TZ_LOCAL_STANDARD_FORMER, UCAL_TZ_LOCAL_STANDARD_LATTER,\r
+            &rawOffset, &dstOffset, &status);\r
+        if (U_FAILURE(status)) {\r
+            log_err("ERROR: ucal_getTimeZoneOffsetFromLocal((%d-%d-%d %d:%d:0),"\r
+                    "UCAL_TZ_LOCAL_STANDARD_FORMER, UCAL_TZ_LOCAL_STANDARD_LATTER: %s\n",\r
+                    DATES[m][0], DATES[m][1], DATES[m][2], DATES[m][3], DATES[m][4],\r
+                    u_errorName(status));\r
+        } else if (rawOffset != OFFSETS2[m][0] || dstOffset != OFFSETS2[m][1]) {\r
+            log_err("Bad offset returned at (%d-%d-%d %d:%d:0) "\r
+                    "(wall/UCAL_TZ_LOCAL_STANDARD_FORMER/UCAL_TZ_LOCAL_STANDARD_LATTER) \n- Got: %d / %d "\r
+                    " Expected %d / %d\n",\r
+                    DATES[m][0], DATES[m][1], DATES[m][2], DATES[m][3], DATES[m][4],\r
+                    rawOffset, dstOffset, OFFSETS2[m][0], OFFSETS2[m][1]);\r
+        }\r
+    }\r
+\r
+    // Test void ucal_getTimeZoneOffsetFromLocal(\r
+    // const UCalendar* cal,\r
+    // UTimeZoneLocalOption nonExistingTimeOpt,\r
+    // UTimeZoneLocalOption duplicatedTimeOpt,\r
+    // int32_t* rawOffset, int32_t* dstOffset, UErrorCode* status);\r
+    // with nonExistingTimeOpt=UCAL_TZ_LOCAL_DAYLIGHT and\r
+    // duplicatedTimeOpt=UCAL_TZ_LOCAL_DAYLIGHT\r
+    for (int m = 0; m < UPRV_LENGTHOF(DATES); m++) {\r
+        status = U_ZERO_ERROR;\r
+        ucal_setMillis(cal, MILLIS[m], &status);\r
+        if (U_FAILURE(status)) {\r
+            log_data_err("ucal_setMillis: %s\n", u_errorName(status));\r
+        }\r
+\r
+        ucal_getTimeZoneOffsetFromLocal(cal, UCAL_TZ_LOCAL_DAYLIGHT_LATTER, UCAL_TZ_LOCAL_DAYLIGHT_FORMER,\r
+            &rawOffset, &dstOffset, &status);\r
+        if (U_FAILURE(status)) {\r
+            log_err("ERROR: ucal_getTimeZoneOffsetFromLocal((%d-%d-%d %d:%d:0),"\r
+                    "UCAL_TZ_LOCAL_DAYLIGHT_LATTER, UCAL_TZ_LOCAL_DAYLIGHT_FORMER: %s\n",\r
+                    DATES[m][0], DATES[m][1], DATES[m][2], DATES[m][3], DATES[m][4],\r
+                    u_errorName(status));\r
+        } else if (rawOffset != OFFSETS3[m][0] || dstOffset != OFFSETS3[m][1]) {\r
+            log_err("Bad offset returned at (%d-%d-%d %d:%d:0) "\r
+                    "(wall/UCAL_TZ_LOCAL_DAYLIGHT_LATTER/UCAL_TZ_LOCAL_DAYLIGHT_FORMER) \n- Got: %d / %d "\r
+                    " Expected %d / %d\n",\r
+                    DATES[m][0], DATES[m][1], DATES[m][2], DATES[m][3], DATES[m][4],\r
+                    rawOffset, dstOffset, OFFSETS3[m][0], OFFSETS3[m][1]);\r
+        }\r
+    }\r
+\r
+    // Test void ucal_getTimeZoneOffsetFromLocal(\r
+    // const UCalendar* cal,\r
+    // UTimeZoneLocalOption nonExistingTimeOpt,\r
+    // UTimeZoneLocalOption duplicatedTimeOpt,\r
+    // int32_t* rawOffset, int32_t* dstOffset, UErrorCode* status);\r
+    // with nonExistingTimeOpt=UCAL_TZ_LOCAL_FORMER and\r
+    // duplicatedTimeOpt=UCAL_TZ_LOCAL_LATTER\r
+    for (int m = 0; m < UPRV_LENGTHOF(DATES); m++) {\r
+        status = U_ZERO_ERROR;\r
+        ucal_setMillis(cal, MILLIS[m], &status);\r
+        if (U_FAILURE(status)) {\r
+            log_data_err("ucal_setMillis: %s\n", u_errorName(status));\r
+        }\r
+\r
+        ucal_getTimeZoneOffsetFromLocal(cal, UCAL_TZ_LOCAL_FORMER, UCAL_TZ_LOCAL_LATTER,\r
+            &rawOffset, &dstOffset, &status);\r
+        if (U_FAILURE(status)) {\r
+            log_err("ERROR: ucal_getTimeZoneOffsetFromLocal((%d-%d-%d %d:%d:0),"\r
+                    "UCAL_TZ_LOCAL_FORMER, UCAL_TZ_LOCAL_LATTER: %s\n",\r
+                    DATES[m][0], DATES[m][1], DATES[m][2], DATES[m][3], DATES[m][4],\r
+                    u_errorName(status));\r
+        } else if (rawOffset != OFFSETS2[m][0] || dstOffset != OFFSETS2[m][1]) {\r
+            log_err("Bad offset returned at (%d-%d-%d %d:%d:0) "\r
+                    "(wall/UCAL_TZ_LOCAL_FORMER/UCAL_TZ_LOCAL_LATTER) \n- Got: %d / %d "\r
+                    " Expected %d / %d\n",\r
+                    DATES[m][0], DATES[m][1], DATES[m][2], DATES[m][3], DATES[m][4],\r
+                    rawOffset, dstOffset, OFFSETS2[m][0], OFFSETS2[m][1]);\r
+        }\r
+    }\r
+\r
+    // Test void ucal_getTimeZoneOffsetFromLocal(\r
+    // const UCalendar* cal,\r
+    // UTimeZoneLocalOption nonExistingTimeOpt,\r
+    // UTimeZoneLocalOption duplicatedTimeOpt,\r
+    // int32_t* rawOffset, int32_t* dstOffset, UErrorCode* status);\r
+    // with nonExistingTimeOpt=UCAL_TZ_LOCAL_LATTER and\r
+    // duplicatedTimeOpt=UCAL_TZ_LOCAL_FORMER\r
+    for (int m = 0; m < UPRV_LENGTHOF(DATES); m++) {\r
+        status = U_ZERO_ERROR;\r
+        ucal_setMillis(cal, MILLIS[m], &status);\r
+        if (U_FAILURE(status)) {\r
+            log_data_err("ucal_setMillis: %s\n", u_errorName(status));\r
+        }\r
+\r
+        ucal_getTimeZoneOffsetFromLocal(cal, UCAL_TZ_LOCAL_LATTER, UCAL_TZ_LOCAL_FORMER,\r
+            &rawOffset, &dstOffset, &status);\r
+        if (U_FAILURE(status)) {\r
+            log_err("ERROR: ucal_getTimeZoneOffsetFromLocal((%d-%d-%d %d:%d:0),"\r
+                    "UCAL_TZ_LOCAL_LATTER, UCAL_TZ_LOCAL_FORMER: %s\n",\r
+                    DATES[m][0], DATES[m][1], DATES[m][2], DATES[m][3], DATES[m][4],\r
+                    u_errorName(status));\r
+        } else if (rawOffset != OFFSETS3[m][0] || dstOffset != OFFSETS3[m][1]) {\r
+            log_err("Bad offset returned at (%d-%d-%d %d:%d:0) "\r
+                    "(wall/UCAL_TZ_LOCAL_LATTER/UCAL_TZ_LOCAL_FORMER) \n- Got: %d / %d "\r
+                    " Expected %d / %d\n",\r
+                    DATES[m][0], DATES[m][1], DATES[m][2], DATES[m][3], DATES[m][4],\r
+                    rawOffset, dstOffset, OFFSETS3[m][0], OFFSETS3[m][1]);\r
+        }\r
+    }\r
+    ucal_close(cal);\r
+}\r
+\r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
index fb553f2..80995de 100644 (file)
@@ -28,7 +28,7 @@
 #include "unicode/uformattedvalue.h"\r
 \r
 \r
-/* Internal fucntion used by all the test format files */\r
+/* Internal function used by all the test format files */\r
 UChar* myDateFormat(UDateFormat *dat, UDate d); \r
 \r
 \r
index c65eb87..9827487 100644 (file)
@@ -11,6 +11,7 @@
 *******************************************************************************\r
 */\r
 \r
+#include <stdbool.h>\r
 #include "cintltst.h"\r
 #include "uhash.h"\r
 #include "unicode/ctest.h"\r
@@ -22,6 +23,7 @@
  *********************************************************************/\r
 \r
 static void TestBasic(void);\r
+static void TestAllowZero(void);\r
 static void TestOtherAPI(void);\r
 static void hashIChars(void);\r
 \r
@@ -87,6 +89,7 @@ _compareLong(int32_t a, int32_t b) {
 void addHashtableTest(TestNode** root) {\r
    \r
     addTest(root, &TestBasic,   "tsutil/chashtst/TestBasic");\r
+    addTest(root, &TestAllowZero, "tsutil/chashtst/TestAllowZero");\r
     addTest(root, &TestOtherAPI, "tsutil/chashtst/TestOtherAPI");\r
     addTest(root, &hashIChars, "tsutil/chashtst/hashIChars");\r
     \r
@@ -133,6 +136,9 @@ static void TestBasic(void) {
     _get(hash, omega, 48);\r
     _get(hash, two, 200);\r
 \r
+    // puti(key, value==0) removes the key's element.\r
+    _put(hash, two, 0, 200);\r
+\r
     if(_compareChars((void*)one, (void*)three) == TRUE ||\r
         _compareChars((void*)one, (void*)one2) != TRUE ||\r
         _compareChars((void*)one, (void*)one) != TRUE ||\r
@@ -145,9 +151,56 @@ static void TestBasic(void) {
         _compareIChars((void*)one, NULL) == TRUE  )  {\r
         log_err("FAIL: compareIChars failed\n");\r
     }\r
-     \r
+\r
     uhash_close(hash);\r
+}\r
 \r
+static void TestAllowZero() {\r
+    UErrorCode status = U_ZERO_ERROR;\r
+    UHashtable *hash = uhash_open(hashChars, isEqualChars, NULL,  &status);\r
+    if (U_FAILURE(status)) {\r
+        log_err("FAIL: uhash_open failed with %s and returned 0x%08x\n",\r
+                u_errorName(status), hash);\r
+        return;\r
+    }\r
+    if (hash == NULL) {\r
+        log_err("FAIL: uhash_open returned NULL\n");\r
+        return;\r
+    }\r
+    log_verbose("Ok: uhash_open returned 0x%08X\n", hash);\r
+\r
+    int32_t oldValue = uhash_putiAllowZero(hash, (char *)"one", 1, &status);\r
+    UBool found = false;\r
+    if (U_FAILURE(status) || oldValue != 0 || !uhash_containsKey(hash, "one") ||\r
+            uhash_geti(hash, "one") != 1 ||\r
+            uhash_getiAndFound(hash, "one", &found) != 1 || !found) {\r
+        log_err("FAIL: uhash_putiAllowZero(one, 1)");\r
+    }\r
+    oldValue = uhash_putiAllowZero(hash, (char *)"zero", 0, &status);\r
+    found = false;\r
+    if (U_FAILURE(status) || oldValue != 0 || !uhash_containsKey(hash, "zero") ||\r
+            uhash_geti(hash, "zero") != 0 ||\r
+            uhash_getiAndFound(hash, "zero", &found) != 0 || !found) {\r
+        log_err("FAIL: uhash_putiAllowZero(zero, 0)");\r
+    }\r
+    // Overwrite "one" to 0.\r
+    oldValue = uhash_putiAllowZero(hash, (char *)"one", 0, &status);\r
+    found = false;\r
+    if (U_FAILURE(status) || oldValue != 1 || !uhash_containsKey(hash, "one") ||\r
+            uhash_geti(hash, "one") != 0 ||\r
+            uhash_getiAndFound(hash, "one", &found) != 0 || !found) {\r
+        log_err("FAIL: uhash_putiAllowZero(one, 0)");\r
+    }\r
+    // Remove "zero" using puti(zero, 0).\r
+    oldValue = uhash_puti(hash, (char *)"zero", 0, &status);\r
+    found = true;\r
+    if (U_FAILURE(status) || oldValue != 0 || uhash_containsKey(hash, "zero") ||\r
+            uhash_geti(hash, "zero") != 0 ||\r
+            uhash_getiAndFound(hash, "zero", &found) != 0 || found) {\r
+        log_err("FAIL: uhash_puti(zero, 0)");\r
+    }\r
+\r
+    uhash_close(hash);\r
 }\r
 \r
 static void TestOtherAPI(void){\r
@@ -343,30 +396,46 @@ static void _put(UHashtable* hash,
     int32_t oldValue =\r
         uhash_puti(hash, (void*) key, value, &status);\r
     if (U_FAILURE(status)) {\r
-        log_err("FAIL: uhash_put(%s) failed with %s and returned %ld\n",\r
+        log_err("FAIL: uhash_puti(%s) failed with %s and returned %ld\n",\r
                 key, u_errorName(status), oldValue);\r
     } else if (oldValue != expectedOldValue) {\r
-        log_err("FAIL: uhash_put(%s) returned old value %ld; expected %ld\n",\r
+        log_err("FAIL: uhash_puti(%s) returned old value %ld; expected %ld\n",\r
                 key, oldValue, expectedOldValue);\r
     } else {\r
-        log_verbose("Ok: uhash_put(%s, %d) returned old value %ld\n",\r
+        log_verbose("Ok: uhash_puti(%s, %d) returned old value %ld\n",\r
                     key, value, oldValue);\r
     }\r
+    int32_t newValue = uhash_geti(hash, key);\r
+    if (newValue != value) {\r
+        log_err("FAIL: uhash_puti(%s) failed to set the intended value %ld: "\r
+                "uhash_geti() returns %ld\n",\r
+                key, value, newValue);\r
+    }\r
+    UBool contained = uhash_containsKey(hash, key);\r
+    if (value == 0) {\r
+        if (contained) {\r
+            log_err("FAIL: uhash_puti(%s, zero) failed to remove the key item: "\r
+                    "uhash_containsKey() returns true\n",\r
+                    key);\r
+        }\r
+    } else {\r
+        if (!contained) {\r
+            log_err("FAIL: uhash_puti(%s, not zero) appears to have removed the key item: "\r
+                    "uhash_containsKey() returns false\n",\r
+                    key);\r
+        }\r
+    }\r
 }\r
 \r
 static void _get(UHashtable* hash,\r
           const char* key,\r
           int32_t expectedValue) {\r
-    UErrorCode status = U_ZERO_ERROR;\r
     int32_t value = uhash_geti(hash, key);\r
-    if (U_FAILURE(status)) {\r
-        log_err("FAIL: uhash_get(%s) failed with %s and returned %ld\n",\r
-                key, u_errorName(status), value);\r
-    } else if (value != expectedValue) {\r
-        log_err("FAIL: uhash_get(%s) returned %ld; expected %ld\n",\r
+    if (value != expectedValue) {\r
+        log_err("FAIL: uhash_geti(%s) returned %ld; expected %ld\n",\r
                 key, value, expectedValue);\r
     } else {\r
-        log_verbose("Ok: uhash_get(%s) returned value %ld\n",\r
+        log_verbose("Ok: uhash_geti(%s) returned value %ld\n",\r
                     key, value);\r
     }\r
 }\r
@@ -376,11 +445,15 @@ static void _remove(UHashtable* hash,
              int32_t expectedValue) {\r
     int32_t value = uhash_removei(hash, key);\r
     if (value != expectedValue) {\r
-        log_err("FAIL: uhash_remove(%s) returned %ld; expected %ld\n",\r
+        log_err("FAIL: uhash_removei(%s) returned %ld; expected %ld\n",\r
                 key, value, expectedValue);\r
     } else {\r
-        log_verbose("Ok: uhash_remove(%s) returned old value %ld\n",\r
+        log_verbose("Ok: uhash_removei(%s) returned old value %ld\n",\r
                     key, value);\r
     }\r
+    if (uhash_containsKey(hash, key)) {\r
+        log_err("FAIL: uhash_removei(%s) failed to remove the key item: "\r
+                "uhash_containsKey() returns false\n",\r
+                key);\r
+    }\r
 }\r
-\r
index 04b19fa..5fd82d5 100644 (file)
@@ -210,7 +210,7 @@ int main(int argc, const char* const argv[])
         root = NULL;\r
         addAllTests(&root);\r
 \r
-        /*  Tests acutally run HERE.   TODO:  separate command line option parsing & setting from test execution!! */\r
+        /*  Tests actually run HERE.   TODO:  separate command line option parsing & setting from test execution!! */\r
         nerrors = runTestRequest(root, argc, argv);\r
 \r
         setTestOption(REPEAT_TESTS_OPTION, DECREMENT_OPTION_VALUE);\r
index bffa41b..b440567 100644 (file)
@@ -280,6 +280,7 @@ void addLocaleTest(TestNode** root)
     TESTCASE(TestBug20370);\r
     TESTCASE(TestBug20321UnicodeLocaleKey);\r
     TESTCASE(TestUsingDefaultWarning);\r
+    TESTCASE(TestBug21449InfiniteLoop);\r
 }\r
 \r
 \r
@@ -4108,6 +4109,10 @@ const char* const full_data[][3] = {
     "nn_Latn_NO",\r
     "nn"\r
   }, {\r
+    "no",\r
+    "no_Latn_NO",\r
+    "no"\r
+  }, {\r
     "nr",\r
     "nr_Latn_ZA",\r
     "nr"\r
@@ -6164,7 +6169,7 @@ const char* const locale_to_langtag[][3] = {
     {"it@collation=badcollationtype;colStrength=identical;cu=usd-eur", "it-u-cu-usd-eur-ks-identic",  NULL},\r
     {"en_US_POSIX", "en-US-u-va-posix", "en-US-u-va-posix"},\r
     {"en_US_POSIX@calendar=japanese;currency=EUR","en-US-u-ca-japanese-cu-eur-va-posix", "en-US-u-ca-japanese-cu-eur-va-posix"},\r
-    {"@x=elmer",    "x-elmer",      "x-elmer"},\r
+    {"@x=elmer",    "und-x-elmer",      "und-x-elmer"},\r
     {"en@x=elmer",  "en-x-elmer",   "en-x-elmer"},\r
     {"@x=elmer;a=exta", "und-a-exta-x-elmer",   "und-a-exta-x-elmer"},\r
     {"en_US@attribute=attr1-attr2;calendar=gregorian", "en-US-u-attr1-attr2-ca-gregory", "en-US-u-attr1-attr2-ca-gregory"},\r
@@ -6978,11 +6983,12 @@ static void TestUsingDefaultWarning() {
         log_err("ERROR: in uloc_getDisplayKeywordValue %s %s return len:%d %s with status %d %s\n",\r
                 keyword_value, keyword, length, errorOutputBuff, status, myErrorName(status));\r
       }\r
-}      \r
+}\r
+\r
 // Test case for ICU-20575\r
 // This test checks if the environment variable LANG is set, \r
 // and if so ensures that both C and C.UTF-8 cause ICU's default locale to be en_US_POSIX.\r
-static void TestCDefaultLocale(){\r
+static void TestCDefaultLocale() {\r
     const char *defaultLocale = uloc_getDefault();\r
     char *env_var = getenv("LANG");\r
     if (env_var == NULL) {\r
@@ -6993,3 +6999,13 @@ static void TestCDefaultLocale(){
       log_err("The default locale for LANG=%s should be en_US_POSIX, not %s\n", env_var, defaultLocale);\r
     }\r
 }\r
+\r
+// Test case for ICU-21449\r
+static void TestBug21449InfiniteLoop() {\r
+    UErrorCode status = U_ZERO_ERROR;\r
+    const char* invalidLocaleId = RES_PATH_SEPARATOR_S;\r
+\r
+    // The issue causes an infinite loop to occur when looking up a non-existent resource for the invalid locale ID,\r
+    // so the test is considered passed if the call to the API below returns anything at all.\r
+    uloc_getDisplayLanguage(invalidLocaleId, invalidLocaleId, NULL, 0, &status);\r
+}\r
index 8741f44..997bba6 100644 (file)
@@ -142,6 +142,7 @@ static void TestToUnicodeLocaleType(void);
 static void TestToLegacyType(void);\r
 static void TestBug20149(void);\r
 static void TestCDefaultLocale(void);\r
+static void TestBug21449InfiniteLoop(void);\r
 \r
 \r
 /**\r
index 3e845d6..5d93053 100644 (file)
@@ -3522,7 +3522,7 @@ TestJ5223(void)
   ucol_setAttribute(coll, UCOL_STRENGTH, UCOL_PRIMARY, &status);\r
   ucol_setAttribute(coll, UCOL_NORMALIZATION_MODE, UCOL_ON, &status);\r
   if (U_FAILURE(status)) {\r
-    log_err("Failed setting atributes\n");\r
+    log_err("Failed setting attributes\n");\r
     return;\r
   }\r
   sortkey_length = ucol_getSortKey(coll, ustr, ustr_length, NULL, 0);\r
@@ -4007,7 +4007,7 @@ TestOutOfBuffer5468(void)
     ucol_setAttribute(coll, UCOL_STRENGTH, UCOL_PRIMARY, &status);\r
     ucol_setAttribute(coll, UCOL_NORMALIZATION_MODE, UCOL_ON, &status);\r
     if (U_FAILURE(status)) {\r
-      log_err("Failed setting atributes\n");\r
+      log_err("Failed setting attributes\n");\r
       return;\r
     }\r
 \r
index b2a9cc9..030ef53 100644 (file)
@@ -93,7 +93,7 @@ static void TestPatterns(void)
         }\r
         u_uastrcpy(unewpat, newpat[i]);\r
         if(u_strcmp(unewp, unewpat) != 0)\r
-            log_err("FAIL: Pattern  %s should be transmute to %s; %s seen instead\n", pat[i], newpat[i],  austrdup(unewp) );\r
+            log_err("FAIL: Pattern  %s should be transmuted to %s; %s seen instead\n", pat[i], newpat[i],  austrdup(unewp) );\r
 \r
         lneed=0;\r
         lneed=unum_format(fmt, 0, NULL, lneed, NULL, &status);\r
@@ -131,7 +131,7 @@ static void TestQuotes(void)
     u_uastrcpy(pat, "a'fo''o'b#");\r
     fmt =unum_open(UNUM_IGNORE,pat, u_strlen(pat), "en_US",NULL, &status);\r
     if(U_FAILURE(status)){\r
-        log_err_status(status, "Error in number format costruction using pattern \"a'fo''o'b#\" -> %s\n", u_errorName(status));\r
+        log_err_status(status, "Error in number format construction using pattern \"a'fo''o'b#\" -> %s\n", u_errorName(status));\r
     }\r
     lneed=0;\r
     lneed=unum_format(fmt, 123, NULL, lneed, NULL, &status);\r
@@ -160,7 +160,7 @@ static void TestQuotes(void)
 \r
     fmt =unum_open(UNUM_IGNORE,pat, u_strlen(pat), "en_US",NULL, &status);\r
     if(U_FAILURE(status)){\r
-        log_err("Error in number format costruction using pattern \"a''b#\"\n");\r
+        log_err("Error in number format construction using pattern \"a''b#\"\n");\r
     }\r
     lneed=0;\r
     lneed=unum_format(fmt, 123, NULL, lneed, NULL, &status);\r
@@ -968,7 +968,12 @@ static void TestRounding5350(void)
     roundingTest2(nnf, -0.125, UNUM_ROUND_FLOOR, "-0.13");\r
     roundingTest2(nnf, -0.125, UNUM_ROUND_DOWN, "-0.12");\r
     roundingTest2(nnf, -0.125, UNUM_ROUND_UP, "-0.13");\r
-    roundingTest2(nnf, 0.125, UNUM_FOUND_HALFEVEN, "0.12");\r
+    roundingTest2(nnf, 0.125, UNUM_ROUND_HALFEVEN, "0.12");\r
+    roundingTest2(nnf, 0.135, UNUM_ROUND_HALF_ODD, "0.13");\r
+    roundingTest2(nnf, 0.135, UNUM_ROUND_HALF_CEILING, "0.14");\r
+    roundingTest2(nnf, -0.135, UNUM_ROUND_HALF_CEILING, "-0.13");\r
+    roundingTest2(nnf, 0.135, UNUM_ROUND_HALF_FLOOR, "0.13");\r
+    roundingTest2(nnf, -0.135, UNUM_ROUND_HALF_FLOOR, "-0.14");\r
     roundingTest2(nnf, 0.135, UNUM_ROUND_HALFDOWN, "0.13");\r
     roundingTest2(nnf, 0.125, UNUM_ROUND_HALFUP, "0.13");\r
     roundingTest2(nnf, 0.135, UNUM_FOUND_HALFEVEN, "0.14");\r
@@ -984,6 +989,9 @@ static void TestRounding5350(void)
     roundingTest2(nnf, 1.0000001, UNUM_ROUND_DOWN, "1");\r
     roundingTest2(nnf, 1.0000001, UNUM_ROUND_UP, "1.01");\r
     roundingTest2(nnf, 1.0000001, UNUM_FOUND_HALFEVEN, "1");\r
+    roundingTest2(nnf, 1.0000001, UNUM_ROUND_HALF_ODD, "1");\r
+    roundingTest2(nnf, 1.0000001, UNUM_ROUND_HALF_CEILING, "1");\r
+    roundingTest2(nnf, 1.0000001, UNUM_ROUND_HALF_FLOOR, "1");\r
     roundingTest2(nnf, 1.0000001, UNUM_ROUND_HALFDOWN, "1");\r
     roundingTest2(nnf, 1.0000001, UNUM_ROUND_HALFUP, "1");\r
 \r
@@ -992,6 +1000,9 @@ static void TestRounding5350(void)
     roundingTest2(nnf, -1.0000001, UNUM_ROUND_DOWN, "-1");\r
     roundingTest2(nnf, -1.0000001, UNUM_ROUND_UP, "-1.01");\r
     roundingTest2(nnf, -1.0000001, UNUM_FOUND_HALFEVEN, "-1");\r
+    roundingTest2(nnf, -1.0000001, UNUM_ROUND_HALF_ODD, "-1");\r
+    roundingTest2(nnf, -1.0000001, UNUM_ROUND_HALF_CEILING, "-1");\r
+    roundingTest2(nnf, -1.0000001, UNUM_ROUND_HALF_FLOOR, "-1");\r
     roundingTest2(nnf, -1.0000001, UNUM_ROUND_HALFDOWN, "-1");\r
     roundingTest2(nnf, -1.0000001, UNUM_ROUND_HALFUP, "-1");\r
 \r
index ed80107..1deb449 100644 (file)
@@ -75,6 +75,7 @@ static void TestSetMaxFracAndRoundIncr(void);
 static void TestIgnorePadding(void);\r
 static void TestSciNotationMaxFracCap(void);\r
 static void TestMinIntMinFracZero(void);\r
+static void Test21479_ExactCurrency(void);\r
 \r
 #define TESTCASE(x) addTest(root, &x, "tsformat/cnumtst/" #x)\r
 \r
@@ -116,6 +117,7 @@ void addNumForTest(TestNode** root)
     TESTCASE(TestIgnorePadding);\r
     TESTCASE(TestSciNotationMaxFracCap);\r
     TESTCASE(TestMinIntMinFracZero);\r
+    TESTCASE(Test21479_ExactCurrency);\r
 }\r
 \r
 /* test Parse int 64 */\r
@@ -3576,4 +3578,23 @@ static void TestMinIntMinFracZero(void) {
     }\r
 }\r
 \r
+static void Test21479_ExactCurrency(void) {\r
+    UErrorCode status = U_ZERO_ERROR;\r
+    UNumberFormat* nf = unum_open(UNUM_CURRENCY, NULL, 0, "en_US", NULL, &status);\r
+    if ( U_FAILURE(status) ) {\r
+        log_data_err("unum_open UNUM_CURRENCY for en_US fails with %s\n", u_errorName(status));\r
+        goto cleanup;\r
+    }\r
+    unum_setTextAttribute(nf, UNUM_CURRENCY_CODE, u"EUR", -1, &status);\r
+    UChar result[40];\r
+    unum_formatDecimal(nf, "987654321000000000000001", -1, result, 40, NULL, &status);\r
+    if (!assertSuccess("Formatting currency decimal", &status)) {\r
+        goto cleanup;\r
+    }\r
+    assertUEquals("", u"€987,654,321,000,000,000,000,001.00", result);\r
+\r
+    cleanup:\r
+    unum_close(nf);\r
+}\r
+\r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
index 128c9de..4d132c2 100644 (file)
@@ -267,8 +267,8 @@ static const char* norwayNames[] = {
 \r
 static const char* norwayLocales[] = {\r
     "nn_NO",\r
-    "nb_NO",\r
-    "nb",\r
+    "no",\r
+    "no",\r
     "nn_NO",\r
     "nn",\r
     "nb_NO",\r
@@ -2181,7 +2181,7 @@ static void TestFallback()
         UResourceBundle* myResB = ures_open(NULL,"no_NO_NY",&err);\r
         UResourceBundle* resLocID = ures_getByKey(myResB, "Version", NULL, &err);\r
         const UChar* version = NULL;\r
-        static const UChar versionStr[] = u"38.1"; // 38.1 in nn_NO or in a parent bundle/root\r
+        static const UChar versionStr[] = u"39"; // 39 in nn_NO or in a parent bundle/root\r
 \r
         if(U_FAILURE(err)) {\r
             log_data_err("Expected success when trying to test no_NO_NY aliased to nn_NO for Version "\r
@@ -2319,16 +2319,12 @@ static void TestResourceLevelAliasing(void) {
       \r
       /* test indexed aliasing */\r
       \r
-      tb = ures_getByKey(aliasB, "zoneTests", tb, &status);\r
-      tb = ures_getByKey(tb, "zoneAlias2", tb, &status);\r
-      string = tres_getString(tb, -1, NULL, &strLen, &status);\r
-      \r
       en = ures_findResource("/ICUDATA-zone/en/zoneStrings/3/0", en, &status);\r
-      sequence = tres_getString(en, -1, NULL, &seqLen, &status);\r
       \r
-      if(U_FAILURE(status) || seqLen != strLen || u_strncmp(sequence, string, seqLen) != 0) {\r
-        log_err("Referencing alias didn't get the right string (5)\n");\r
+      if(status != U_MISSING_RESOURCE_ERROR) {\r
+        log_err("Index lookup in a table resource didn't get U_MISSING_RESOURCE_ERROR!\n");\r
       }\r
+      status  = U_ZERO_ERROR;\r
     }\r
     /* test getting aliased string by index */\r
     {\r
@@ -2373,7 +2369,7 @@ static void TestResourceLevelAliasing(void) {
                 }\r
                 uBufferLen = u_unescape(strings[i], uBuffer, 256);\r
                 if(result==NULL || resultLen != uBufferLen || u_strncmp(result, uBuffer, resultLen) != 0) {\r
-                  log_err("(2) Didn't get correct string while accesing alias table by index (%s)\n", strings[i]);\r
+                  log_err("(2) Didn't get correct string while accessing alias table by index (%s)\n", strings[i]);\r
                 }\r
             }\r
             for(i = 0; i < UPRV_LENGTHOF(strings); i++) {\r
@@ -2400,7 +2396,7 @@ static void TestResourceLevelAliasing(void) {
                 }\r
                 uBufferLen = u_unescape(strings[i], uBuffer, 256);\r
                 if(result==NULL || resultLen != uBufferLen || u_strncmp(result, uBuffer, resultLen) != 0) {\r
-                  log_err("Didn't get correct string while accesing alias by index in an array (%s)\n", strings[i]);\r
+                  log_err("Didn't get correct string while accessing alias by index in an array (%s)\n", strings[i]);\r
                 }\r
             }\r
             for(i = 0; i < UPRV_LENGTHOF(strings); i++) {\r
index 9da856d..617b3f9 100644 (file)
@@ -2557,7 +2557,7 @@ TestSBCS() {
     {\r
     static const uint8_t input1[]={ 0xA1 };\r
     const char* illegalsource=(const char*)input1;\r
-    TestNextUCharError(cnv, illegalsource, illegalsource+sizeof(illegalsource), U_INVALID_CHAR_FOUND, "source has a illegal characte");\r
+    TestNextUCharError(cnv, illegalsource, illegalsource+sizeof(illegalsource), U_INVALID_CHAR_FOUND, "source has a illegal character");\r
     }\r
    */\r
     ucnv_close(cnv);\r
index 5c09bfd..8120f39 100644 (file)
@@ -96,17 +96,18 @@ static void TestFormattedValue() {
     if (assertSuccessCheck("Should format without error", &ec, TRUE)) {\r
         const UFormattedValue* fv = unumrf_resultAsValue(uresult, &ec);\r
         assertSuccess("Should convert without error", &ec);\r
-        static const UFieldPosition expectedFieldPositions[] = {\r
-            // field, begin index, end index\r
-            {UNUM_INTEGER_FIELD, 0, 2},\r
-            {UNUM_COMPACT_FIELD, 2, 3},\r
-            {UNUM_INTEGER_FIELD, 6, 9},\r
-            {UNUM_COMPACT_FIELD, 9, 10}};\r
-        checkFormattedValue(\r
+        static const UFieldPositionWithCategory expectedFieldPositions[] = {\r
+            // category, field, begin index, end index\r
+            {UFIELD_CATEGORY_NUMBER_RANGE_SPAN, 0, 0, 3},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD, 0, 2},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_COMPACT_FIELD, 2, 3},\r
+            {UFIELD_CATEGORY_NUMBER_RANGE_SPAN, 1, 6, 10},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD, 6, 9},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_COMPACT_FIELD, 9, 10}};\r
+        checkMixedFormattedValue(\r
             "FormattedNumber as FormattedValue",\r
             fv,\r
             u"55K – 150K",\r
-            UFIELD_CATEGORY_NUMBER,\r
             expectedFieldPositions,\r
             UPRV_LENGTHOF(expectedFieldPositions));\r
     }\r
index ea9c21a..5eeb8c0 100644 (file)
@@ -211,6 +211,45 @@ static void TestAPI() {
     uset_retainAll(set2, set);\r
     expect(set2, "ghi", "abcdef{bc}", NULL);\r
 \r
+    // ICU 69 added some missing functions for parity with C++ and Java.\r
+    uset_applyPattern(set, u"[abcdef{ch}{sch}]", -1, 0, &ec);\r
+    if(U_FAILURE(ec)) {\r
+        log_err("uset_openPattern([abcdef{ch}{sch}]) failed - %s\n", u_errorName(ec));\r
+        return;\r
+    }\r
+    expect(set, "abcdef{ch}{sch}", "", NULL);\r
+\r
+    uset_removeAllCodePoints(set, u"ce", 2);\r
+    expect(set, "abdf{ch}{sch}", "ce", NULL);\r
+\r
+    uset_complementRange(set, u'b', u'f');\r
+    expect(set, "ace{ch}{sch}", "bdf", NULL);\r
+\r
+    uset_complementString(set, u"ch", -1);\r
+    expect(set, "ace{sch}", "bdf{ch}", NULL);\r
+\r
+    uset_complementString(set, u"xy", -1);\r
+    expect(set, "ace{sch}{xy}", "bdf{ch}", NULL);\r
+\r
+    uset_complementAllCodePoints(set, u"abef", 4);\r
+    expect(set, "bcf{sch}{xy}", "ade{ch}", NULL);\r
+\r
+    uset_retainAllCodePoints(set, u"abef", -1);\r
+    expect(set, "bf", "acde{ch}{sch}{xy}", NULL);\r
+\r
+    uset_applyPattern(set, u"[abcdef{ch}{sch}]", -1, 0, &ec);\r
+    if(U_FAILURE(ec)) {\r
+        log_err("uset_openPattern([abcdef{ch}{sch}]) failed - %s\n", u_errorName(ec));\r
+        return;\r
+    }\r
+    expect(set, "abcdef{ch}{sch}", "", NULL);\r
+\r
+    uset_retainString(set, u"sch", 3);\r
+    expect(set, "{sch}", "abcdef{ch}", NULL);\r
+\r
+    uset_retainString(set, u"ch", 3);\r
+    expect(set, "", "abcdef{ch}{sch}", NULL);\r
+\r
     uset_close(set);\r
     uset_close(set2);\r
 }\r
index 644f9e1..710de8e 100644 (file)
@@ -58,6 +58,8 @@ group: c_strings
     # We must not use tolower and toupper because they are system-locale-sensitive (Turkish i).\r
     strlen strchr strrchr strstr strcmp strncmp strcpy strncpy strcat strncat\r
     memchr memcmp memcpy memmove memset\r
+    # BSD version of memcmp().\r
+    bcmp\r
     # Additional symbols in an optimized build.\r
     __strcpy_chk __strncpy_chk __strcat_chk __strncat_chk\r
     __rawmemchr __memcpy_chk __memmove_chk __memset_chk\r
diff --git a/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz b/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz
new file mode 100644 (file)
index 0000000..41efe80
Binary files /dev/null and b/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz differ
index fd011e7..3143f13 100644 (file)
 ##\r
 ##    .. etc.  Anything other than zero is an error. (except for the deprecation tests, where '1' is the correct value)\r
 ##\r
+##  If the header test is run for a particular UCONFIG_NO_XXX=1 variation (see uconfig.h)\r
+##  then invoke the test with 'make UCONFIG_NO="-DUCONFIG_NO_XXX=1 check'.\r
+##  For standard header test run the UCONFIG_NO variable will evaluate to empty string.\r
+##\r
 ##  If a header fails the C compile test it is likely because the header is a\r
 ##  C++ header and it isn't properly guarded by the U_SHOW_CPLUSPLUS_API macro.\r
 ##\r
@@ -48,7 +52,7 @@ headertest:
                echo "$(NAME.headers) unicode/$$incfile" ; \\r
                echo "#include <unicode/$$incfile>" > $$stub ; \\r
                echo 'void junk(){}' >> $$stub ; \\r
-               $(COMPILE.headers) $(cppflags) $(FLAGS.headers) $$stub || FAIL=1 ; \\r
+               $(COMPILE.headers) $(cppflags) $(FLAGS.headers) $(UCONFIG_NO) $$stub || FAIL=1 ; \\r
                rm -f $$stub; \\r
        done ; \\r
        exit $$FAIL\r
@@ -121,7 +125,7 @@ cppguardtest:
                        echo '#if !defined(U_SHOW_CPLUSPLUS_API)' >> $$stub ; \\r
                        echo "#error The header '$$incfile' refers to the macro U_SHOW_CPLUSPLUS_API (defined in utypes.h) but either does not include utypes.h or does so incorrectly." >> $$stub ; \\r
                        echo '#endif' >> $$stub ; \\r
-                       $(COMPILE.cc) $(cppflags) $$stub || FAIL=1 ; \\r
+                       $(COMPILE.cc) $(cppflags) $(UCONFIG_NO) $$stub || FAIL=1 ; \\r
                        rm -f $$stub; \\r
                else \\r
                        echo "$@ skipping unicode/$$incfile" ; \\r
index 86445aa..f4c9eaa 100644 (file)
@@ -1173,7 +1173,7 @@ void CollationAPITest::TestSortKey()
     doAssert(memcmp(tempkey, sortkey3, keylength) == 0,\r
         "Test3 string should have the same collation key and sort key");\r
 \r
-    logln("Use secondary comparision level testing ...\n");\r
+    logln("Use secondary comparison level testing ...\n");\r
     col->setStrength(Collator::SECONDARY);\r
 \r
     col->getCollationKey(test1, u_strlen(test1), key1, status);\r
index 12a181c..13a4261 100644 (file)
@@ -56,6 +56,7 @@ public:
     void TestTruncatingIteratorFromLinearMatchLong();\r
     void TestIteratorFromBytes();\r
     void TestFailedIterator();\r
+    void TestDelta();\r
 \r
     void checkData(const StringAndValue data[], int32_t dataLength);\r
     void checkData(const StringAndValue data[], int32_t dataLength, UStringTrieBuildOption buildOption);\r
@@ -110,6 +111,7 @@ void BytesTrieTest::runIndexedTest(int32_t index, UBool exec, const char *&name,
     TESTCASE_AUTO(TestTruncatingIteratorFromLinearMatchLong);\r
     TESTCASE_AUTO(TestIteratorFromBytes);\r
     TESTCASE_AUTO(TestFailedIterator);\r
+    TESTCASE_AUTO(TestDelta);\r
     TESTCASE_AUTO_END;\r
 }\r
 \r
@@ -599,6 +601,45 @@ void BytesTrieTest::TestFailedIterator() {
     }\r
 }\r
 \r
+void BytesTrieTest::TestDelta() {\r
+    char intBytes0[5];\r
+    char intBytes1[5];\r
+    static constexpr int32_t sampleDeltas[] = {\r
+        -1, 0, 1, 2, 3, 0xa5, 0xbe, 0xbf,\r
+        -2, 0xc0, 0xc1, 0xeee, 0x1234, 0x2ffe, 0x2fff,\r
+        -3, 0x3000, 0x3001, 0x3003, 0x50005, 0xdfffe, 0xdffff,\r
+        -4, 0xe0000, 0xe0001, 0xef0123, 0xfffffe, 0xffffff,\r
+        -5, 0x1000000, 0x1000001, 0x7fffffff\r
+    };\r
+    int32_t expectedLength = 0;\r
+    for (int32_t delta : sampleDeltas) {\r
+        if (delta < 0) {\r
+            expectedLength = -delta;\r
+            continue;\r
+        }\r
+        // Encoding twice into differently-initialized arrays\r
+        // catches bytes that are not written to.\r
+        memset(intBytes0, 0, sizeof(intBytes0));\r
+        memset(intBytes1, 1, sizeof(intBytes1));\r
+        int32_t length0 = BytesTrieBuilder::internalEncodeDelta(delta, intBytes0);\r
+        int32_t length1 = BytesTrieBuilder::internalEncodeDelta(delta, intBytes1);\r
+        assertTrue(UnicodeString(u"non-zero length to encode delta ") + delta, length0 > 0);\r
+        assertEquals(UnicodeString(u"consistent length to encode delta ") + delta, length0, length1);\r
+        assertEquals(UnicodeString(u"expected length to encode delta ") + delta,\r
+                     expectedLength, length0);\r
+        for (int32_t i = 0; i < length0; ++i) {\r
+            uint8_t b0 = intBytes0[i];\r
+            uint8_t b1 = intBytes1[i];\r
+            assertEquals(UnicodeString(u"differently encoded delta ") + delta +\r
+                            u" at byte index " + i, b0, b1);\r
+        }\r
+        const uint8_t *start = (const uint8_t *)intBytes0;\r
+        const uint8_t *pos = BytesTrie::jumpByDelta(start);\r
+        assertEquals(UnicodeString(u"roundtrip for delta ") + delta,\r
+                     delta, (int32_t)(pos - start) - length0);\r
+    }\r
+}\r
+\r
 void BytesTrieTest::checkData(const StringAndValue data[], int32_t dataLength) {\r
     logln("checkData(dataLength=%d, fast)", (int)dataLength);\r
     checkData(data, dataLength, USTRINGTRIE_BUILD_FAST);\r
index 19a2653..f326230 100644 (file)
@@ -78,6 +78,7 @@ public:
     void TestRootElements();\r
     void TestTailoredElements();\r
     void TestDataDriven();\r
+    void TestLongLocale();\r
 \r
 private:\r
     void checkFCD(const char *name, CollationIterator &ci, CodePointIterator &cpi);\r
@@ -148,6 +149,7 @@ void CollationTest::runIndexedTest(int32_t index, UBool exec, const char *&name,
     TESTCASE_AUTO(TestRootElements);\r
     TESTCASE_AUTO(TestTailoredElements);\r
     TESTCASE_AUTO(TestDataDriven);\r
+    TESTCASE_AUTO(TestLongLocale);\r
     TESTCASE_AUTO_END;\r
 }\r
 \r
@@ -1852,4 +1854,12 @@ void CollationTest::TestDataDriven() {
     }\r
 }\r
 \r
+void CollationTest::TestLongLocale() {\r
+    IcuTestErrorCode errorCode(*this, "TestLongLocale");\r
+    Locale longLocale("sie__1G_C_CEIE_CEZCX_CSUE_E_EIESZNI2_GB_LM_LMCSUE_LMCSX_"\r
+                      "LVARIANT_MMCSIE_STEU_SU1GCEIE_SU6G_SU6SU6G_U_UBGE_UC_"\r
+                      "UCEZCSI_UCIE_UZSIU_VARIANT_X@collation=bcs-ukvsz");\r
+    LocalPointer<Collator> coll(Collator::createInstance(longLocale, errorCode));\r
+}\r
+\r
 #endif  // !UCONFIG_NO_COLLATION\r
index 6593518..57d6005 100644 (file)
@@ -1167,7 +1167,7 @@ void IntlTestDecimalFormatAPI::testInvalidObject() {
         assertEquals(WHERE, U_MEMORY_ALLOCATION_ERROR, status);\r
 \r
         // Two invalid objects should not be equal.\r
-        // (Also verify that nullptr isn't t dereferenced in the comparision operator.)\r
+        // (Also verify that nullptr isn't t dereferenced in the comparison operator.)\r
         assertTrue(WHERE, dfBogus != dfBogus2);\r
 \r
         // Verify the comparison operator works for two valid objects.\r
index 984df31..ae42f3c 100644 (file)
 \r
 void DateIntervalFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) {\r
     if (exec) logln("TestSuite DateIntervalFormat");\r
-    switch (index) {\r
-        TESTCASE(0, testAPI);\r
-        TESTCASE(1, testFormat);\r
-        TESTCASE(2, testFormatUserDII);\r
-        TESTCASE(3, testSetIntervalPatternNoSideEffect);\r
-        TESTCASE(4, testYearFormats);\r
-        TESTCASE(5, testStress);\r
-        TESTCASE(6, testTicket11583_2);\r
-        TESTCASE(7, testTicket11985);\r
-        TESTCASE(8, testTicket11669);\r
-        TESTCASE(9, testTicket12065);\r
-        TESTCASE(10, testFormattedDateInterval);\r
-        TESTCASE(11, testCreateInstanceForAllLocales);\r
-        TESTCASE(12, testTicket20707);\r
-        TESTCASE(13, testFormatMillisecond);\r
-        TESTCASE(14, testHourMetacharacters);\r
-        TESTCASE(15, testContext);\r
-        default: name = ""; break;\r
-    }\r
+    TESTCASE_AUTO_BEGIN;\r
+    TESTCASE_AUTO(testAPI);\r
+    TESTCASE_AUTO(testFormat);\r
+    TESTCASE_AUTO(testFormatUserDII);\r
+    TESTCASE_AUTO(testSetIntervalPatternNoSideEffect);\r
+    TESTCASE_AUTO(testYearFormats);\r
+    TESTCASE_AUTO(testStress);\r
+    TESTCASE_AUTO(testTicket11583_2);\r
+    TESTCASE_AUTO(testTicket11985);\r
+    TESTCASE_AUTO(testTicket11669);\r
+    TESTCASE_AUTO(testTicket12065);\r
+    TESTCASE_AUTO(testFormattedDateInterval);\r
+    TESTCASE_AUTO(testCreateInstanceForAllLocales);\r
+    TESTCASE_AUTO(testTicket20707);\r
+    TESTCASE_AUTO(testFormatMillisecond);\r
+    TESTCASE_AUTO(testHourMetacharacters);\r
+    TESTCASE_AUTO(testContext);\r
+    TESTCASE_AUTO(testTicket21222GregorianEraDiff);\r
+    TESTCASE_AUTO(testTicket21222ROCEraDiff);\r
+    TESTCASE_AUTO(testTicket21222JapaneseEraDiff);\r
+    TESTCASE_AUTO_END;\r
 }\r
 \r
 /**\r
@@ -252,7 +254,7 @@ void DateIntervalFormatTest::testAPI() {
 \r
     // ====== test constructor/copy constructor and assignment\r
     /* they are protected, no test\r
-    logln("Testing DateIntervalFormat constructor and assigment operator");\r
+    logln("Testing DateIntervalFormat constructor and assignment operator");\r
     status = U_ZERO_ERROR;\r
 \r
     DateFormat* constFmt = dtitvfmt->getDateFormat()->clone();\r
@@ -835,7 +837,7 @@ void DateIntervalFormatTest::testFormat() {
         "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "MMMMy", "2007\\u5e7410\\u6708\\u81f311\\u6708",\r
 \r
 \r
-        "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmv", "2007/10/10\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10 \\u2013 2007/11/10\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",\r
+        "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmv", "2007/10/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10 \\u2013 2007/11/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",\r
 \r
         "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c",\r
 \r
@@ -864,9 +866,9 @@ void DateIntervalFormatTest::testFormat() {
         "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMM", "11\\u6708", // (fixed expected result per ticket:6626: and others)\r
 \r
 \r
-        "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmz", "2007/11/10GMT-8 \\u4e0a\\u534810:10 \\u2013 2007/11/20GMT-8 \\u4e0a\\u534810:10",\r
+        "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmz", "2007/11/10 GMT-8 \\u4e0a\\u534810:10 \\u2013 2007/11/20 GMT-8 \\u4e0a\\u534810:10",\r
 \r
-        "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "h", "2007/11/10\\u4e0a\\u534810\\u65f6 \\u2013 2007/11/20\\u4e0a\\u534810\\u65f6",\r
+        "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "h", "2007/11/10 \\u4e0a\\u534810\\u65f6 \\u2013 2007/11/20 \\u4e0a\\u534810\\u65f6",\r
 \r
         "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEEEdMMMMy", "2007\\u5e741\\u670810\\u65e5\\u661f\\u671f\\u4e09", // (fixed expected result per ticket:6626:)\r
 \r
@@ -2135,4 +2137,212 @@ void DateIntervalFormatTest::testTicket20707() {
     }\r
 }\r
 \r
+void DateIntervalFormatTest::getCategoryAndField(\r
+        const FormattedDateInterval& formatted,\r
+        std::vector<int32_t>& categories,\r
+        std::vector<int32_t>& fields,\r
+        IcuTestErrorCode& status) {\r
+    categories.clear();\r
+    fields.clear();\r
+    ConstrainedFieldPosition cfpos;\r
+    while (formatted.nextPosition(cfpos, status)) {\r
+        categories.push_back(cfpos.getCategory());\r
+        fields.push_back(cfpos.getField());\r
+    }\r
+}\r
+\r
+void DateIntervalFormatTest::verifyCategoryAndField(\r
+        const FormattedDateInterval& formatted,\r
+        const std::vector<int32_t>& categories,\r
+        const std::vector<int32_t>& fields,\r
+        IcuTestErrorCode& status) {\r
+    ConstrainedFieldPosition cfpos;\r
+    int32_t i = 0;\r
+    while (formatted.nextPosition(cfpos, status)) {\r
+        assertEquals("Category", cfpos.getCategory(), categories[i]);\r
+        assertEquals("Field", cfpos.getField(), fields[i]);\r
+        i++;\r
+    }\r
+}\r
+\r
+void DateIntervalFormatTest::testTicket21222GregorianEraDiff() {\r
+    IcuTestErrorCode status(*this, "testTicket21222GregorianEraDiff");\r
+\r
+    LocalPointer<Calendar> cal(Calendar::createInstance(*TimeZone::getGMT(), status));\r
+    if (U_FAILURE(status)) {\r
+        errln("Failure encountered: %s", u_errorName(status));\r
+        return;\r
+    }\r
+    std::vector<int32_t> expectedCategory;\r
+    std::vector<int32_t> expectedField;\r
+\r
+    // Test Gregorian calendar\r
+    LocalPointer<DateIntervalFormat> g(\r
+        DateIntervalFormat::createInstance(\r
+            u"h", Locale("en"), status));\r
+    if (U_FAILURE(status)) {\r
+        errln("Failure encountered: %s", u_errorName(status));\r
+        return;\r
+    }\r
+    g->setTimeZone(*(TimeZone::getGMT()));\r
+    cal->setTime(Calendar::getNow(), status);\r
+    cal->set(123, UCAL_APRIL, 5, 6, 0);\r
+    FormattedDateInterval formatted;\r
+\r
+    UDate date0123Apr5AD = cal->getTime(status);\r
+\r
+    cal->set(UCAL_YEAR, 124);\r
+    UDate date0124Apr5AD = cal->getTime(status);\r
+\r
+    cal->set(UCAL_ERA, 0);\r
+    UDate date0124Apr5BC = cal->getTime(status);\r
+\r
+    cal->set(UCAL_YEAR, 123);\r
+    UDate date0123Apr5BC = cal->getTime(status);\r
+\r
+    DateInterval bothAD(date0123Apr5AD, date0124Apr5AD);\r
+    DateInterval bothBC(date0124Apr5BC, date0123Apr5BC);\r
+    DateInterval BCtoAD(date0123Apr5BC, date0124Apr5AD);\r
+\r
+    formatted = g->formatToValue(bothAD, status);\r
+    assertEquals("Gregorian - calendar both dates in AD",\r
+                 u"4/5/123, 6 AM \u2013 4/5/124, 6 AM",\r
+                 formatted.toString(status));\r
+\r
+    formatted = g->formatToValue(bothBC, status);\r
+    assertEquals("Gregorian - calendar both dates in BC",\r
+                 u"4/5/124, 6 AM \u2013 4/5/123, 6 AM",\r
+                 formatted.toString(status));\r
+\r
+    formatted = g->formatToValue(BCtoAD, status);\r
+    assertEquals("Gregorian - BC to AD",\r
+                 u"4 5, 123 BC, 6 AM \u2013 4 5, 124 AD, 6 AM",\r
+                 formatted.toString(status));\r
+}\r
+\r
+void DateIntervalFormatTest::testTicket21222ROCEraDiff() {\r
+    IcuTestErrorCode status(*this, "testTicket21222ROCEraDiff");\r
+\r
+    LocalPointer<Calendar> cal(Calendar::createInstance(*TimeZone::getGMT(), status));\r
+    if (U_FAILURE(status)) {\r
+        errln("Failure encountered: %s", u_errorName(status));\r
+        return;\r
+    }\r
+    std::vector<int32_t> expectedCategory;\r
+    std::vector<int32_t> expectedField;\r
+\r
+    // Test roc calendar\r
+    LocalPointer<DateIntervalFormat> roc(\r
+        DateIntervalFormat::createInstance(\r
+            u"h", Locale("zh-Hant-TW@calendar=roc"), status));\r
+    if (U_FAILURE(status)) {\r
+        errln("Failure encountered: %s", u_errorName(status));\r
+        return;\r
+    }\r
+    roc->setTimeZone(*(TimeZone::getGMT()));\r
+\r
+    FormattedDateInterval formatted;\r
+    // set date1910Jan2 to 1910/1/2 AD which is prior to MG\r
+    cal->set(1910, UCAL_JANUARY, 2, 6, 0);\r
+    UDate date1910Jan2 = cal->getTime(status);\r
+\r
+    // set date1911Jan2 to 1911/1/2 AD which is also prior to MG\r
+    cal->set(UCAL_YEAR, 1911);\r
+    UDate date1911Jan2 = cal->getTime(status);\r
+\r
+    // set date1912Jan2 to 1912/1/2 AD which is after MG\r
+    cal->set(UCAL_YEAR, 1912);\r
+    UDate date1912Jan2 = cal->getTime(status);\r
+\r
+    // set date1913Jan2 to 1913/1/2 AD which is also after MG\r
+    cal->set(UCAL_YEAR, 1913);\r
+    UDate date1913Jan2 = cal->getTime(status);\r
+\r
+    DateInterval bothBeforeMG(date1910Jan2, date1911Jan2);\r
+    DateInterval beforeAfterMG(date1911Jan2, date1913Jan2);\r
+    DateInterval bothAfterMG(date1912Jan2, date1913Jan2);\r
+\r
+    formatted = roc->formatToValue(bothAfterMG, status);\r
+    assertEquals("roc calendar - both dates in MG Era",\r
+                 u"民國1/1/2 6 上午 – 民國2/1/2 6 上午",\r
+                 formatted.toString(status));\r
+    getCategoryAndField(formatted, expectedCategory,\r
+                        expectedField, status);\r
+\r
+    formatted = roc->formatToValue(beforeAfterMG, status);\r
+    assertEquals("roc calendar - prior MG Era and in MG Era",\r
+                 u"民國前1年1月2日 6 上午 – 民國2年1月2日 6 上午",\r
+                 formatted.toString(status));\r
+    verifyCategoryAndField(formatted, expectedCategory, expectedField, status);\r
+\r
+    formatted = roc->formatToValue(bothBeforeMG, status);\r
+    assertEquals("roc calendar - both dates prior MG Era",\r
+                 u"民國前2/1/2 6 上午 – 民國前1/1/2 6 上午",\r
+                 formatted.toString(status));\r
+    verifyCategoryAndField(formatted, expectedCategory, expectedField, status);\r
+}\r
+\r
+void DateIntervalFormatTest::testTicket21222JapaneseEraDiff() {\r
+    IcuTestErrorCode status(*this, "testTicket21222JapaneseEraDiff");\r
+\r
+    LocalPointer<Calendar> cal(Calendar::createInstance(*TimeZone::getGMT(), status));\r
+    if (U_FAILURE(status)) {\r
+        errln("Failure encountered: %s", u_errorName(status));\r
+        return;\r
+    }\r
+    std::vector<int32_t> expectedCategory;\r
+    std::vector<int32_t> expectedField;\r
+\r
+    // Test roc calendar\r
+    // Test Japanese calendar\r
+    LocalPointer<DateIntervalFormat> japanese(\r
+        DateIntervalFormat::createInstance(\r
+            u"h", Locale("ja@calendar=japanese"), status));\r
+    if (U_FAILURE(status)) {\r
+        errln("Failure encountered: %s", u_errorName(status));\r
+        return;\r
+    }\r
+    japanese->setTimeZone(*(TimeZone::getGMT()));\r
+\r
+    FormattedDateInterval formatted;\r
+\r
+    cal->set(2019, UCAL_MARCH, 2, 6, 0);\r
+    UDate date2019Mar2 = cal->getTime(status);\r
+\r
+    cal->set(UCAL_MONTH, UCAL_APRIL);\r
+    cal->set(UCAL_DAY_OF_MONTH, 3);\r
+    UDate date2019Apr3 = cal->getTime(status);\r
+\r
+    cal->set(UCAL_MONTH, UCAL_MAY);\r
+    cal->set(UCAL_DAY_OF_MONTH, 4);\r
+    UDate date2019May4 = cal->getTime(status);\r
+\r
+    cal->set(UCAL_MONTH, UCAL_JUNE);\r
+    cal->set(UCAL_DAY_OF_MONTH, 5);\r
+    UDate date2019Jun5 = cal->getTime(status);\r
+\r
+    DateInterval bothBeforeReiwa(date2019Mar2, date2019Apr3);\r
+    DateInterval beforeAfterReiwa(date2019Mar2, date2019May4);\r
+    DateInterval bothAfterReiwa(date2019May4, date2019Jun5);\r
+\r
+    formatted = japanese->formatToValue(bothAfterReiwa, status);\r
+    assertEquals("japanese calendar - both dates in Reiwa",\r
+                 u"R1/5/4 午前6時~R1/6/5 午前6時",\r
+                 formatted.toString(status));\r
+    getCategoryAndField(formatted, expectedCategory,\r
+                        expectedField, status);\r
+\r
+    formatted = japanese->formatToValue(bothBeforeReiwa, status);\r
+    assertEquals("japanese calendar - both dates before Reiwa",\r
+                 u"H31/3/2 午前6時~H31/4/3 午前6時",\r
+                 formatted.toString(status));\r
+    verifyCategoryAndField(formatted, expectedCategory, expectedField, status);\r
+\r
+    formatted = japanese->formatToValue(beforeAfterReiwa, status);\r
+    assertEquals("japanese calendar - date before and in Reiwa",\r
+                 u"平成31年3月2日 午前6時~令和元年5月4日 午前6時",\r
+                 formatted.toString(status));\r
+    verifyCategoryAndField(formatted, expectedCategory, expectedField, status);\r
+}\r
+\r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
index 932aed1..e6938b2 100644 (file)
 #include "intltest.h"\r
 #include "itformat.h"\r
 \r
+U_NAMESPACE_BEGIN\r
+class FormattedDateInterval;\r
+U_NAMESPACE_END\r
+\r
 /**\r
  * Test basic functionality of various API functions\r
  **/\r
@@ -81,6 +85,9 @@ public:
     void testCreateInstanceForAllLocales();\r
 \r
     void testTicket20707();\r
+    void testTicket21222GregorianEraDiff();\r
+    void testTicket21222ROCEraDiff();\r
+    void testTicket21222JapaneseEraDiff();\r
 \r
 private:\r
     /**\r
@@ -99,6 +106,19 @@ private:
      */\r
     void stress(const char** data, int32_t data_length, const Locale& loc,\r
                 const char* locName);\r
+\r
+    void getCategoryAndField(\r
+        const FormattedDateInterval& formatted,\r
+        std::vector<int32_t>& categories,\r
+        std::vector<int32_t>& fields,\r
+        IcuTestErrorCode& status);\r
+\r
+    void verifyCategoryAndField(\r
+        const FormattedDateInterval& formatted,\r
+        const std::vector<int32_t>& categories,\r
+        const std::vector<int32_t>& fields,\r
+        IcuTestErrorCode& status);\r
+\r
 };\r
 \r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
index 64d8df8..242affb 100644 (file)
@@ -242,7 +242,7 @@ void IntlTestWithFieldPosition::checkMixedFormattedValue(
 \r
     // Check nextPosition constrained over each category one at a time\r
     for (int32_t category=0; category<UFIELD_CATEGORY_COUNT+1; category++) {\r
-        if (category == UFIELD_CATEGORY_COUNT+1) {\r
+        if (category == UFIELD_CATEGORY_COUNT) {\r
             category = UFIELD_CATEGORY_LIST_SPAN;\r
         }\r
         cfpos.reset();\r
index f83b0b6..519f8a2 100644 (file)
@@ -1974,6 +1974,8 @@ UBool IntlTest::assertEquals(const char* message,
 UBool IntlTest::assertEquals(const char* message,\r
                              const char* expected,\r
                              const char* actual) {\r
+    U_ASSERT(expected != nullptr);\r
+    U_ASSERT(actual != nullptr);\r
     if (uprv_strcmp(expected, actual) != 0) {\r
         errln((UnicodeString)"FAIL: " + message + "; got \"" +\r
               actual +\r
index f7e22f1..05d8b55 100644 (file)
@@ -77,6 +77,7 @@ void IntlTestRBNF::runIndexedTest(int32_t index, UBool exec, const char* &name,
         TESTCASE(25, TestCompactDecimalFormatStyle);\r
         TESTCASE(26, TestParseFailure);\r
         TESTCASE(27, TestMinMaxIntegerDigitsIgnored);\r
+        TESTCASE(28, TestNorwegianSpellout);\r
 #else\r
         TESTCASE(0, TestRBNFDisabled);\r
 #endif\r
@@ -1522,8 +1523,8 @@ IntlTestRBNF::TestPortugueseSpellout()
             { "1,000", "mil" },\r
             { "2,000", "dois mil" },\r
             { "3,004", "tr\\u00EAs mil e quatro" },\r
-            { "4,567", "quatro mil quinhentos e sessenta e sete" },\r
-            { "15,943", "quinze mil novecentos e quarenta e tr\\u00EAs" },\r
+            { "4,567", "quatro mil quinhentos e sessenta e sete" },\r
+            { "15,943", "quinze mil novecentos e quarenta e tr\\u00EAs" },\r
             { "-36", "menos trinta e seis" },\r
             { "234.567", "duzentos e trinta e quatro v\\u00EDrgula cinco seis sete" },\r
             { NULL, NULL}\r
@@ -1605,6 +1606,38 @@ IntlTestRBNF::TestThaiSpellout()
 }\r
 \r
 void\r
+IntlTestRBNF::TestNorwegianSpellout()\r
+{\r
+    UErrorCode status = U_ZERO_ERROR;\r
+    RuleBasedNumberFormat* noFormatter\r
+        = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale("no"), status);\r
+    RuleBasedNumberFormat* nbFormatter\r
+        = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale("nb"), status);\r
+\r
+    if (U_FAILURE(status)) {\r
+        errcheckln(status, "FAIL: could not construct formatter - %s", u_errorName(status));\r
+    } else {\r
+        static const char* testDataDefault[][2] = {\r
+            { "1", "\\u00E9n" },\r
+            { "2", "to" },\r
+            { "3", "tre" },\r
+            { "4", "fire" },\r
+            { "101", "hundre og \\u00E9n" },\r
+            { "123", "hundre og tjue\\u00ADtre" },\r
+            { "1,001", "tusen og \\u00E9n" },\r
+            { "1,100", "tusen hundre" },\r
+            { "6.789", "seks komma sju \\u00E5tte ni" },\r
+            { "-5.678", "minus fem komma seks sju \\u00E5tte" },\r
+            { NULL, NULL }\r
+        };\r
+        doTest(noFormatter, testDataDefault, TRUE);\r
+        doTest(nbFormatter, testDataDefault, TRUE);\r
+    }\r
+    delete nbFormatter;\r
+    delete noFormatter;\r
+}\r
+\r
+void\r
 IntlTestRBNF::TestSwedishSpellout()\r
 {\r
     UErrorCode status = U_ZERO_ERROR;\r
index bd3395b..a900bf3 100644 (file)
@@ -102,6 +102,11 @@ class IntlTestRBNF : public IntlTest {
   void TestThaiSpellout();\r
 \r
   /**\r
+   * Perform a simple spot check on the Norwegian (no,nb) spellout rules\r
+   */\r
+  void TestNorwegianSpellout();\r
+\r
+  /**\r
    * Perform a simple spot check on the Swedish spellout rules\r
    */\r
   void TestSwedishSpellout();\r
index c323698..fc6d31d 100644 (file)
@@ -45,7 +45,6 @@ void ListFormatterTest::runIndexedTest(int32_t index, UBool exec,
     TESTCASE_AUTO(TestFieldPositionIteratorWith3ItemsPatternShift);\r
     TESTCASE_AUTO(TestFormattedValue);\r
     TESTCASE_AUTO(TestDifferentStyles);\r
-    TESTCASE_AUTO(TestBadStylesFail);\r
     TESTCASE_AUTO(TestCreateStyled);\r
     TESTCASE_AUTO(TestContextual);\r
     TESTCASE_AUTO(TestNextPosition);\r
@@ -276,8 +275,11 @@ void ListFormatterTest::RunTestFieldPositionIteratorWithNItemsPatternShift(
         const char16_t *expectedFormatted,\r
         const char* testName) {\r
     IcuTestErrorCode errorCode(*this, testName);\r
-    LocalPointer<ListFormatter> formatter(\r
-        ListFormatter::createInstance(Locale("ur", "IN"), "unit-narrow", errorCode));\r
+    LocalPointer<ListFormatter> formatter(ListFormatter::createInstance(\r
+        Locale("ur", "IN"),\r
+        ULISTFMT_TYPE_UNITS,\r
+        ULISTFMT_WIDTH_NARROW,\r
+        errorCode));\r
     if (U_FAILURE(errorCode)) {\r
         dataerrln(\r
             "ListFormatter::createInstance(Locale(\"ur\", \"IN\"), \"unit-narrow\", errorCode) failed in "\r
@@ -608,16 +610,22 @@ void ListFormatterTest::TestFormattedValue() {
     }\r
 }\r
 \r
-void ListFormatterTest::DoTheRealListStyleTesting(Locale locale,\r
-        UnicodeString items[], int itemCount,\r
-        const char* style, const char* expected, IcuTestErrorCode status) {\r
+void ListFormatterTest::DoTheRealListStyleTesting(\r
+        Locale locale,\r
+        UnicodeString items[],\r
+        int itemCount,\r
+        UListFormatterType type,\r
+        UListFormatterWidth width,\r
+        const char* expected,\r
+        IcuTestErrorCode status) {\r
 \r
     LocalPointer<ListFormatter> formatter(\r
-            ListFormatter::createInstance(locale, style, status));\r
+            ListFormatter::createInstance(locale, type, width, status));\r
 \r
     UnicodeString actualResult;\r
     formatter->format(items, itemCount, actualResult, status);\r
-    assertEquals(style, UnicodeString(expected), actualResult);\r
+    assertEquals(Int64ToUnicodeString(type) + "-" + Int64ToUnicodeString(width),\r
+        UnicodeString(expected), actualResult);\r
 }\r
 \r
 void ListFormatterTest::TestDifferentStyles() {\r
@@ -625,24 +633,11 @@ void ListFormatterTest::TestDifferentStyles() {
     UnicodeString input[4] = { u"rouge", u"jaune", u"bleu", u"vert" };\r
     IcuTestErrorCode status(*this, "TestDifferentStyles()");\r
 \r
-    DoTheRealListStyleTesting(locale, input, 4, "standard", "rouge, jaune, bleu et vert", status);\r
-    DoTheRealListStyleTesting(locale, input, 4, "or", "rouge, jaune, bleu ou vert", status);\r
-    DoTheRealListStyleTesting(locale, input, 4, "unit", "rouge, jaune, bleu et vert", status);\r
-    DoTheRealListStyleTesting(locale, input, 4, "unit-narrow", "rouge jaune bleu vert", status);\r
-    DoTheRealListStyleTesting(locale, input, 4, "unit-short", "rouge, jaune, bleu et vert", status);\r
-}\r
-\r
-void ListFormatterTest::TestBadStylesFail() {\r
-    Locale locale("fr");\r
-    const char * badStyles[4] = { "", "duration", "duration-short", "something-clearly-wrong" };\r
-    IcuTestErrorCode status(*this, "TestBadStylesFail()");\r
-\r
-    for (int i = 0; i < 4; ++i) {\r
-      LocalPointer<ListFormatter> formatter(ListFormatter::createInstance(locale, badStyles[i], status));\r
-      if (!status.expectErrorAndReset(U_MISSING_RESOURCE_ERROR, "style \"%s\"", badStyles[i])) {\r
-        // Do nothing, expectErrorAndReset already reports the error\r
-      }\r
-    }\r
+    DoTheRealListStyleTesting(locale, input, 4, ULISTFMT_TYPE_AND, ULISTFMT_WIDTH_WIDE, "rouge, jaune, bleu et vert", status);\r
+    DoTheRealListStyleTesting(locale, input, 4, ULISTFMT_TYPE_OR, ULISTFMT_WIDTH_WIDE, "rouge, jaune, bleu ou vert", status);\r
+    DoTheRealListStyleTesting(locale, input, 4, ULISTFMT_TYPE_UNITS, ULISTFMT_WIDTH_WIDE, "rouge, jaune, bleu et vert", status);\r
+    DoTheRealListStyleTesting(locale, input, 4, ULISTFMT_TYPE_UNITS, ULISTFMT_WIDTH_NARROW, "rouge jaune bleu vert", status);\r
+    DoTheRealListStyleTesting(locale, input, 4, ULISTFMT_TYPE_UNITS, ULISTFMT_WIDTH_SHORT, "rouge, jaune, bleu et vert", status);\r
 }\r
 \r
 void ListFormatterTest::TestCreateStyled() {\r
index 3e6c4e7..42ec828 100644 (file)
@@ -52,7 +52,6 @@ class ListFormatterTest : public IntlTestWithFieldPosition {
     void TestFieldPositionIteratorWith3ItemsPatternShift();\r
     void TestFormattedValue();\r
     void TestDifferentStyles();\r
-    void TestBadStylesFail();\r
     void TestCreateStyled();\r
     void TestContextual();\r
     void TestNextPosition();\r
@@ -111,8 +110,9 @@ class ListFormatterTest : public IntlTestWithFieldPosition {
     void DoTheRealListStyleTesting(\r
         Locale locale,\r
         UnicodeString items[],\r
-        int32_t itemCount,\r
-        const char* style,\r
+        int itemCount,\r
+        UListFormatterType type,\r
+        UListFormatterWidth width,\r
         const char* expected,\r
         IcuTestErrorCode status);\r
 \r
index f1f3d36..21e8709 100644 (file)
@@ -1375,7 +1375,7 @@ void LocaleBuilderTest::TestSetExtensionValidateTIllFormed() {
         "9-",\r
         "-9",\r
         "-z",\r
-        // "Latn", // Per 2019-01-23 ICUTC, still accept 4alpha. See ICU-20321\r
+        "Latn",\r
         "Latn-",\r
         "en-",\r
         "nob-",\r
@@ -1400,6 +1400,8 @@ void LocaleBuilderTest::TestSetExtensionValidateTIllFormed() {
         "gab-Thai-TH-0bde-z9-abcde123-a1-",\r
         "gab-Thai-TH-0bde-z9-abcde123-a1-a",\r
         "gab-Thai-TH-0bde-z9-abcde123-a1-ab",\r
+        // ICU-21408\r
+        "root",\r
     };\r
     for (const char* ill : illFormed) {\r
         UErrorCode status = U_ZERO_ERROR;\r
index 789ea2a..3c156cb 100644 (file)
@@ -437,8 +437,8 @@ void LocaleMatcherTest::testMatch() {
     double matchEnHantTw = matcher.internalMatch(en_Hant_TW, zh_Hant, errorCode);\r
     assertTrue("zh_Hant should be closer to und_TW than to en_Hant_TW",\r
                matchEnHantTw < matchZhHant);\r
-    assertTrue("zh should be closer to und_TW than to en_Hant_TW",\r
-               matchEnHantTw < matchZh);\r
+    assertTrue("zh should not match und_TW or en_Hant_TW",\r
+               matchZh == 0.0 && matchEnHantTw == 0.0); // with changes in CLDR-1435\r
 }\r
 \r
 void LocaleMatcherTest::testResolvedLocale() {\r
index 09fd106..668080a 100644 (file)
@@ -408,7 +408,7 @@ void LocaleDisplayNamesTest::TestRootEtc() {
   UnicodeString temp;\r
   LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS());\r
   const char *locname = "@collation=phonebook";\r
-  const char *target = "Root (Phonebook Sort Order)";\r
+  const char *target = "root (Phonebook Sort Order)";\r
   ldn->localeDisplayName(locname, temp);\r
   test_assert_equal(target, temp);\r
 \r
index 32a48b7..5c4026e 100644 (file)
@@ -918,8 +918,8 @@ LocaleTest::TestGetLangsAndCountries()
       ;\r
 \r
     /* TODO: Change this test to be more like the cloctst version? */\r
-    if (testCount != 597)\r
-        errln("Expected getISOLanguages() to return 597 languages; it returned %d", testCount);\r
+    if (testCount != 594)\r
+        errln("Expected getISOLanguages() to return 594 languages; it returned %d", testCount);\r
     else {\r
         for (i = 0; i < 15; i++) {\r
             int32_t j;\r
@@ -949,8 +949,8 @@ LocaleTest::TestGetLangsAndCountries()
     for(testCount=0;test[testCount];testCount++)\r
       ;\r
 \r
-    if (testCount != 249){\r
-        errln("Expected getISOCountries to return 249 countries; it returned %d", testCount);\r
+    if (testCount != 253){\r
+        errln("Expected getISOCountries to return 253 countries; it returned %d", testCount);\r
     }else {\r
         for (i = 0; i < spot2Len; i++) {\r
             int32_t j;\r
@@ -2053,6 +2053,10 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
             "nn_Latn_NO",\r
             "nn"\r
         }, {\r
+            "no",\r
+            "no_Latn_NO",\r
+            "no"\r
+        }, {\r
             "nr",\r
             "nr_Latn_ZA",\r
             "nr"\r
@@ -4736,15 +4740,17 @@ void LocaleTest::TestCanonicalization(void)
         { "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin" },\r
         { "en_US_POSIX", "en_US_POSIX", "en_US_POSIX" }, \r
         { "hy_AM_REVISED", "hy_AM_REVISED", "hy_AM_REVISED" }, \r
-        { "no_NO_NY", "no_NO_NY", "nb_NO_NY" /* not: "nn_NO" [alan ICU3.0] */ },\r
-        { "no@ny", "no@ny", "nb__NY" /* not: "nn" [alan ICU3.0] */ }, /* POSIX ID */\r
-        { "no-no.utf32@B", "no_NO.utf32@B", "nb_NO_B" /* not: "nb_NO_B" [alan ICU3.0] */ }, /* POSIX ID */\r
+        { "no_NO_NY", "no_NO_NY", "no_NO_NY" /* not: "nn_NO" [alan ICU3.0] */ },\r
+        { "no@ny", "no@ny", "no__NY" /* not: "nn" [alan ICU3.0] */ }, /* POSIX ID */\r
+        { "no-no.utf32@B", "no_NO.utf32@B", "no_NO_B" }, /* POSIX ID */\r
         { "qz-qz@Euro", "qz_QZ@Euro", "qz_QZ_EURO" }, /* qz-qz uses private use iso codes */\r
         // NOTE: uloc_getName() works on en-BOONT, but Locale() parser considers it BOGUS\r
         // TODO: unify this behavior\r
         { "en-BOONT", "en__BOONT", "en__BOONT" }, /* registered name */\r
         { "de-1901", "de__1901", "de__1901" }, /* registered name */\r
         { "de-1906", "de__1906", "de__1906" }, /* registered name */\r
+        // New in CLDR 39 / ICU 69\r
+        { "nb", "nb", "nb" },\r
 \r
         /* posix behavior that used to be performed by getName */\r
         { "mr.utf8", "mr.utf8", "mr" },\r
@@ -4752,7 +4758,7 @@ void LocaleTest::TestCanonicalization(void)
         { "x-piglatin_ML.MBE", "x-piglatin_ML.MBE", "x-piglatin_ML" },\r
         { "i-cherokee_US.utf7", "i-cherokee_US.utf7", "i-cherokee_US" },\r
         { "x-filfli_MT_FILFLA.gb-18030", "x-filfli_MT_FILFLA.gb-18030", "x-filfli_MT_FILFLA" },\r
-        { "no-no-ny.utf8@B", "no_NO_NY.utf8@B", "nb_NO_B_NY" /* not: "nn_NO" [alan ICU3.0] */ }, /* @ ignored unless variant is empty */\r
+        { "no-no-ny.utf8@B", "no_NO_NY.utf8@B", "no_NO_B_NY" /* not: "nn_NO" [alan ICU3.0] */ }, /* @ ignored unless variant is empty */\r
 \r
         /* fleshing out canonicalization */\r
         /* trim space and sort keywords, ';' is separator so not present at end in canonical form */\r
@@ -4764,7 +4770,7 @@ void LocaleTest::TestCanonicalization(void)
           "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR",\r
           "en_Hant_IL_GIRL_VALLEY@calendar=Japanese;currency=EUR" },\r
         /* norwegian is just too weird, if we handle things in their full generality */\r
-        { "no-Hant-GB_NY@currency=$$$", "no_Hant_GB_NY@currency=$$$", "nb_Hant_GB_NY@currency=$$$" /* not: "nn_Hant_GB@currency=$$$" [alan ICU3.0] */ },\r
+        { "no-Hant-GB_NY@currency=$$$", "no_Hant_GB_NY@currency=$$$", "no_Hant_GB_NY@currency=$$$" /* not: "nn_Hant_GB@currency=$$$" [alan ICU3.0] */ },\r
 \r
         /* test cases reflecting internal resource bundle usage */\r
         { "root@kw=foo", "root@kw=foo", "root@kw=foo" },\r
@@ -4916,6 +4922,70 @@ void LocaleTest::TestCanonicalize(void)
 \r
         // ICU-21344\r
         { "ku-Arab-NT", "ku-Arab-IQ"},\r
+\r
+        // ICU-21402\r
+        { "und-u-rg-no23", "und-u-rg-no50"},\r
+        { "und-u-rg-cn11", "und-u-rg-cnbj"},\r
+        { "und-u-rg-cz10a", "und-u-rg-cz110"},\r
+        { "und-u-rg-fra", "und-u-rg-frges"},\r
+        { "und-u-rg-frg", "und-u-rg-frges"},\r
+        { "und-u-rg-lud", "und-u-rg-lucl"},\r
+\r
+        { "und-NO-u-sd-no23", "und-NO-u-sd-no50"},\r
+        { "und-CN-u-sd-cn11", "und-CN-u-sd-cnbj"},\r
+        { "und-CZ-u-sd-cz10a", "und-CZ-u-sd-cz110"},\r
+        { "und-FR-u-sd-fra", "und-FR-u-sd-frges"},\r
+        { "und-FR-u-sd-frg", "und-FR-u-sd-frges"},\r
+        { "und-LU-u-sd-lud", "und-LU-u-sd-lucl"},\r
+\r
+        // ICU-21550\r
+        { "und-u-rg-fi01", "und-u-rg-axzzzz"},\r
+        { "und-u-rg-frcp", "und-u-rg-cpzzzz"},\r
+        { "und-u-rg-frpm", "und-u-rg-pmzzzz"},\r
+        { "und-u-rg-usvi", "und-u-rg-vizzzz"},\r
+        { "und-u-rg-cn91", "und-u-rg-hkzzzz"},\r
+        { "und-u-rg-nlaw", "und-u-rg-awzzzz"},\r
+\r
+        { "und-NO-u-sd-frre", "und-NO-u-sd-rezzzz"},\r
+        { "und-CN-u-sd-nlcw", "und-CN-u-sd-cwzzzz"},\r
+        { "und-CZ-u-sd-usgu", "und-CZ-u-sd-guzzzz"},\r
+        { "und-FR-u-sd-shta", "und-FR-u-sd-tazzzz"},\r
+        { "und-FR-u-sd-cn71", "und-FR-u-sd-twzzzz"},\r
+\r
+\r
+        // ICU-21401\r
+        { "cel-gaulish", "xtg"},\r
+\r
+        // ICU-21406\r
+        // Inside T extension\r
+        //  Case of Script and Region\r
+        { "ja-kana-jp-t-it-latn-it", "ja-Kana-JP-t-it-latn-it"},\r
+        { "und-t-zh-hani-tw", "und-t-zh-hani-tw"},\r
+        { "und-cyrl-t-und-Latn", "und-Cyrl-t-und-latn"},\r
+        //  Order of singleton\r
+        { "und-u-ca-roc-t-zh", "und-t-zh-u-ca-roc"},\r
+        //  Variant subtags are alphabetically ordered.\r
+        { "sl-t-sl-rozaj-biske-1994", "sl-t-sl-1994-biske-rozaj"},\r
+        // tfield subtags are alphabetically ordered.\r
+        // (Also tests subtag case normalisation.)\r
+        { "DE-T-lv-M0-DIN", "de-t-lv-m0-din"},\r
+        { "DE-T-M0-DIN-K0-QWERTZ", "de-t-k0-qwertz-m0-din"},\r
+        { "DE-T-lv-M0-DIN-K0-QWERTZ", "de-t-lv-k0-qwertz-m0-din"},\r
+        // "true" tvalue subtags aren't removed.\r
+        // (UTS 35 version 36, §3.2.1 claims otherwise, but tkey must be followed by\r
+        // tvalue, so that's likely a spec bug in UTS 35.)\r
+        { "en-t-m0-true", "en-t-m0-true"},\r
+        // tlang subtags are canonicalised.\r
+        { "en-t-iw", "en-t-he"},\r
+        { "en-t-hy-latn-SU", "en-t-hy-latn-am"},\r
+        { "ru-t-ru-cyrl-SU", "ru-t-ru-cyrl-ru"},\r
+        { "fr-t-fr-172", "fr-t-fr-ru"},\r
+        { "und-t-no-latn-BOKMAL", "und-t-nb-latn" },\r
+        { "und-t-sgn-qAAi-NL", "und-t-dse-zinh" },\r
+        // alias of tvalue should be replaced\r
+        { "en-t-m0-NaMeS", "en-t-m0-prprname" },\r
+        { "en-t-s0-ascii-d0-NaMe", "en-t-d0-charname-s0-ascii" },\r
+\r
     };\r
     int32_t i;\r
     for (i=0; i < UPRV_LENGTHOF(testCases); i++) {\r
@@ -5535,6 +5605,31 @@ void LocaleTest::TestForLanguageTag() {
     Locale result_ext = Locale::forLanguageTag(tag_ext, status);\r
     status.errIfFailureAndReset("\"%s\"", tag_ext);\r
     assertEquals(tag_ext, loc_ext.getName(), result_ext.getName());\r
+\r
+    static const struct {\r
+        const char *inputTag;    /* input */\r
+        const char *expectedID; /* expected forLanguageTag().getName() result */\r
+    } testCases[] = {\r
+      // ICU-21433\r
+      {"und-1994-biske-rozaj", "__1994_BISKE_ROZAJ"},\r
+      {"de-1994-biske-rozaj", "de__1994_BISKE_ROZAJ"},\r
+      {"und-x-private", "@x=private"},\r
+      {"de-1994-biske-rozaj-x-private", "de__1994_BISKE_ROZAJ@x=private"},\r
+      {"und-1994-biske-rozaj-x-private", "__1994_BISKE_ROZAJ@x=private"},\r
+    };\r
+    int32_t i;\r
+    for (i=0; i < UPRV_LENGTHOF(testCases); i++) {\r
+        UErrorCode status = U_ZERO_ERROR;\r
+        std::string otag = testCases[i].inputTag;\r
+        std::string tag = Locale::forLanguageTag(otag.c_str(), status).getName();\r
+        if (tag != testCases[i].expectedID) {\r
+            errcheckln(status, "FAIL: %s should be toLanguageTag to %s but got %s - %s",\r
+                       otag.c_str(),\r
+                       testCases[i].expectedID,\r
+                       tag.c_str(),\r
+                       u_errorName(status));\r
+        }\r
+    }\r
 }\r
 \r
 void LocaleTest::TestToLanguageTag() {\r
@@ -5594,6 +5689,33 @@ void LocaleTest::TestToLanguageTag() {
     std::string result_bogus = loc_bogus.toLanguageTag<std::string>(status);\r
     assertEquals("bogus", U_ILLEGAL_ARGUMENT_ERROR, status.reset());\r
     assertTrue(result_bogus.c_str(), result_bogus.empty());\r
+\r
+    static const struct {\r
+        const char *localeID;    /* input */\r
+        const char *expectedID; /* expected toLanguageTag() result */\r
+    } testCases[] = {\r
+      /* ICU-21414 */\r
+      {"und-x-abc-private", "und-x-abc-private"},\r
+      {"und-x-private", "und-x-private"},\r
+      {"und-u-ca-roc-x-private", "und-u-ca-roc-x-private"},\r
+      {"und-US-x-private", "und-US-x-private"},\r
+      {"und-Latn-x-private", "und-Latn-x-private"},\r
+      {"und-1994-biske-rozaj", "und-1994-biske-rozaj"},\r
+      {"und-1994-biske-rozaj-x-private", "und-1994-biske-rozaj-x-private"},\r
+    };\r
+    int32_t i;\r
+    for (i=0; i < UPRV_LENGTHOF(testCases); i++) {\r
+        UErrorCode status = U_ZERO_ERROR;\r
+        std::string otag = testCases[i].localeID;\r
+        std::string tag = Locale::forLanguageTag(otag.c_str(), status).toLanguageTag<std::string>(status);\r
+        if (tag != testCases[i].expectedID) {\r
+            errcheckln(status, "FAIL: %s should be toLanguageTag to %s but got %s - %s",\r
+                       otag.c_str(),\r
+                       testCases[i].expectedID,\r
+                       tag.c_str(),\r
+                       u_errorName(status));\r
+        }\r
+    }\r
 }\r
 \r
 /* ICU-20310 */\r
index b0a6266..9955c8f 100644 (file)
@@ -19,6 +19,7 @@
 \r
 #include "charstr.h"\r
 #include "cstr.h"\r
+#include "cstring.h"\r
 #include "measunit_impl.h"\r
 #include "unicode/decimfmt.h"\r
 #include "unicode/measfmt.h"\r
@@ -56,6 +57,7 @@ private:
     void TestCompatible64();\r
     void TestCompatible65();\r
     void TestCompatible68();\r
+    void TestCompatible69();\r
     void TestGetAvailable();\r
     void TestExamplesInDocs();\r
     void TestFormatPeriodEn();\r
@@ -83,6 +85,9 @@ private:
     void TestNumericTimeSomeSpecialFormats();\r
     void TestIdentifiers();\r
     void TestInvalidIdentifiers();\r
+    void TestIdentifierDetails();\r
+    void TestPrefixes();\r
+    void TestParseBuiltIns();\r
     void TestParseToBuiltIn();\r
     void TestKilogramIdentifier();\r
     void TestCompoundUnitOperations();\r
@@ -152,7 +157,7 @@ private:
         int32_t end);\r
     void verifySingleUnit(\r
         const MeasureUnit& unit,\r
-        UMeasureSIPrefix siPrefix,\r
+        UMeasurePrefix unitPrefix,\r
         int8_t power,\r
         const char* identifier);\r
     void verifyCompoundUnit(\r
@@ -185,6 +190,7 @@ void MeasureFormatTest::runIndexedTest(
     TESTCASE_AUTO(TestCompatible64);\r
     TESTCASE_AUTO(TestCompatible65);\r
     TESTCASE_AUTO(TestCompatible68);\r
+    TESTCASE_AUTO(TestCompatible69);\r
     TESTCASE_AUTO(TestGetAvailable);\r
     TESTCASE_AUTO(TestExamplesInDocs);\r
     TESTCASE_AUTO(TestFormatPeriodEn);\r
@@ -212,6 +218,9 @@ void MeasureFormatTest::runIndexedTest(
     TESTCASE_AUTO(TestNumericTimeSomeSpecialFormats);\r
     TESTCASE_AUTO(TestIdentifiers);\r
     TESTCASE_AUTO(TestInvalidIdentifiers);\r
+    TESTCASE_AUTO(TestIdentifierDetails);\r
+    TESTCASE_AUTO(TestPrefixes);\r
+    TESTCASE_AUTO(TestParseBuiltIns);\r
     TESTCASE_AUTO(TestParseToBuiltIn);\r
     TESTCASE_AUTO(TestKilogramIdentifier);\r
     TESTCASE_AUTO(TestCompoundUnitOperations);\r
@@ -2295,6 +2304,383 @@ void MeasureFormatTest::TestCompatible68() {
     assertSuccess("", status);\r
 }\r
 \r
+void MeasureFormatTest::TestCompatible69() {\r
+    UErrorCode status = U_ZERO_ERROR;\r
+    LocalPointer<MeasureUnit> measureUnit;\r
+    MeasureUnit measureUnitValue;\r
+    measureUnit.adoptInstead(MeasureUnit::createGForce(status));\r
+    measureUnitValue = MeasureUnit::getGForce();\r
+    measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));\r
+    measureUnitValue = MeasureUnit::getMeterPerSecondSquared();\r
+    measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));\r
+    measureUnitValue = MeasureUnit::getArcMinute();\r
+    measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));\r
+    measureUnitValue = MeasureUnit::getArcSecond();\r
+    measureUnit.adoptInstead(MeasureUnit::createDegree(status));\r
+    measureUnitValue = MeasureUnit::getDegree();\r
+    measureUnit.adoptInstead(MeasureUnit::createRadian(status));\r
+    measureUnitValue = MeasureUnit::getRadian();\r
+    measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));\r
+    measureUnitValue = MeasureUnit::getRevolutionAngle();\r
+    measureUnit.adoptInstead(MeasureUnit::createAcre(status));\r
+    measureUnitValue = MeasureUnit::getAcre();\r
+    measureUnit.adoptInstead(MeasureUnit::createDunam(status));\r
+    measureUnitValue = MeasureUnit::getDunam();\r
+    measureUnit.adoptInstead(MeasureUnit::createHectare(status));\r
+    measureUnitValue = MeasureUnit::getHectare();\r
+    measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));\r
+    measureUnitValue = MeasureUnit::getSquareCentimeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));\r
+    measureUnitValue = MeasureUnit::getSquareFoot();\r
+    measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));\r
+    measureUnitValue = MeasureUnit::getSquareInch();\r
+    measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));\r
+    measureUnitValue = MeasureUnit::getSquareKilometer();\r
+    measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));\r
+    measureUnitValue = MeasureUnit::getSquareMeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));\r
+    measureUnitValue = MeasureUnit::getSquareMile();\r
+    measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));\r
+    measureUnitValue = MeasureUnit::getSquareYard();\r
+    measureUnit.adoptInstead(MeasureUnit::createKarat(status));\r
+    measureUnitValue = MeasureUnit::getKarat();\r
+    measureUnit.adoptInstead(MeasureUnit::createMilligramOfglucosePerDeciliter(status));\r
+    measureUnitValue = MeasureUnit::getMilligramOfglucosePerDeciliter();\r
+    measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));\r
+    measureUnitValue = MeasureUnit::getMilligramPerDeciliter();\r
+    measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));\r
+    measureUnitValue = MeasureUnit::getMillimolePerLiter();\r
+    measureUnit.adoptInstead(MeasureUnit::createMole(status));\r
+    measureUnitValue = MeasureUnit::getMole();\r
+    measureUnit.adoptInstead(MeasureUnit::createPercent(status));\r
+    measureUnitValue = MeasureUnit::getPercent();\r
+    measureUnit.adoptInstead(MeasureUnit::createPermille(status));\r
+    measureUnitValue = MeasureUnit::getPermille();\r
+    measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));\r
+    measureUnitValue = MeasureUnit::getPartPerMillion();\r
+    measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));\r
+    measureUnitValue = MeasureUnit::getPermyriad();\r
+    measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));\r
+    measureUnitValue = MeasureUnit::getLiterPer100Kilometers();\r
+    measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));\r
+    measureUnitValue = MeasureUnit::getLiterPerKilometer();\r
+    measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));\r
+    measureUnitValue = MeasureUnit::getMilePerGallon();\r
+    measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));\r
+    measureUnitValue = MeasureUnit::getMilePerGallonImperial();\r
+    measureUnit.adoptInstead(MeasureUnit::createBit(status));\r
+    measureUnitValue = MeasureUnit::getBit();\r
+    measureUnit.adoptInstead(MeasureUnit::createByte(status));\r
+    measureUnitValue = MeasureUnit::getByte();\r
+    measureUnit.adoptInstead(MeasureUnit::createGigabit(status));\r
+    measureUnitValue = MeasureUnit::getGigabit();\r
+    measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));\r
+    measureUnitValue = MeasureUnit::getGigabyte();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilobit(status));\r
+    measureUnitValue = MeasureUnit::getKilobit();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));\r
+    measureUnitValue = MeasureUnit::getKilobyte();\r
+    measureUnit.adoptInstead(MeasureUnit::createMegabit(status));\r
+    measureUnitValue = MeasureUnit::getMegabit();\r
+    measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));\r
+    measureUnitValue = MeasureUnit::getMegabyte();\r
+    measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));\r
+    measureUnitValue = MeasureUnit::getPetabyte();\r
+    measureUnit.adoptInstead(MeasureUnit::createTerabit(status));\r
+    measureUnitValue = MeasureUnit::getTerabit();\r
+    measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));\r
+    measureUnitValue = MeasureUnit::getTerabyte();\r
+    measureUnit.adoptInstead(MeasureUnit::createCentury(status));\r
+    measureUnitValue = MeasureUnit::getCentury();\r
+    measureUnit.adoptInstead(MeasureUnit::createDay(status));\r
+    measureUnitValue = MeasureUnit::getDay();\r
+    measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));\r
+    measureUnitValue = MeasureUnit::getDayPerson();\r
+    measureUnit.adoptInstead(MeasureUnit::createDecade(status));\r
+    measureUnitValue = MeasureUnit::getDecade();\r
+    measureUnit.adoptInstead(MeasureUnit::createHour(status));\r
+    measureUnitValue = MeasureUnit::getHour();\r
+    measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));\r
+    measureUnitValue = MeasureUnit::getMicrosecond();\r
+    measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));\r
+    measureUnitValue = MeasureUnit::getMillisecond();\r
+    measureUnit.adoptInstead(MeasureUnit::createMinute(status));\r
+    measureUnitValue = MeasureUnit::getMinute();\r
+    measureUnit.adoptInstead(MeasureUnit::createMonth(status));\r
+    measureUnitValue = MeasureUnit::getMonth();\r
+    measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));\r
+    measureUnitValue = MeasureUnit::getMonthPerson();\r
+    measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));\r
+    measureUnitValue = MeasureUnit::getNanosecond();\r
+    measureUnit.adoptInstead(MeasureUnit::createSecond(status));\r
+    measureUnitValue = MeasureUnit::getSecond();\r
+    measureUnit.adoptInstead(MeasureUnit::createWeek(status));\r
+    measureUnitValue = MeasureUnit::getWeek();\r
+    measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));\r
+    measureUnitValue = MeasureUnit::getWeekPerson();\r
+    measureUnit.adoptInstead(MeasureUnit::createYear(status));\r
+    measureUnitValue = MeasureUnit::getYear();\r
+    measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));\r
+    measureUnitValue = MeasureUnit::getYearPerson();\r
+    measureUnit.adoptInstead(MeasureUnit::createAmpere(status));\r
+    measureUnitValue = MeasureUnit::getAmpere();\r
+    measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));\r
+    measureUnitValue = MeasureUnit::getMilliampere();\r
+    measureUnit.adoptInstead(MeasureUnit::createOhm(status));\r
+    measureUnitValue = MeasureUnit::getOhm();\r
+    measureUnit.adoptInstead(MeasureUnit::createVolt(status));\r
+    measureUnitValue = MeasureUnit::getVolt();\r
+    measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));\r
+    measureUnitValue = MeasureUnit::getBritishThermalUnit();\r
+    measureUnit.adoptInstead(MeasureUnit::createCalorie(status));\r
+    measureUnitValue = MeasureUnit::getCalorie();\r
+    measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));\r
+    measureUnitValue = MeasureUnit::getElectronvolt();\r
+    measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));\r
+    measureUnitValue = MeasureUnit::getFoodcalorie();\r
+    measureUnit.adoptInstead(MeasureUnit::createJoule(status));\r
+    measureUnitValue = MeasureUnit::getJoule();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));\r
+    measureUnitValue = MeasureUnit::getKilocalorie();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));\r
+    measureUnitValue = MeasureUnit::getKilojoule();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));\r
+    measureUnitValue = MeasureUnit::getKilowattHour();\r
+    measureUnit.adoptInstead(MeasureUnit::createThermUs(status));\r
+    measureUnitValue = MeasureUnit::getThermUs();\r
+    measureUnit.adoptInstead(MeasureUnit::createNewton(status));\r
+    measureUnitValue = MeasureUnit::getNewton();\r
+    measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));\r
+    measureUnitValue = MeasureUnit::getPoundForce();\r
+    measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));\r
+    measureUnitValue = MeasureUnit::getGigahertz();\r
+    measureUnit.adoptInstead(MeasureUnit::createHertz(status));\r
+    measureUnitValue = MeasureUnit::getHertz();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));\r
+    measureUnitValue = MeasureUnit::getKilohertz();\r
+    measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));\r
+    measureUnitValue = MeasureUnit::getMegahertz();\r
+    measureUnit.adoptInstead(MeasureUnit::createDot(status));\r
+    measureUnitValue = MeasureUnit::getDot();\r
+    measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));\r
+    measureUnitValue = MeasureUnit::getDotPerCentimeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));\r
+    measureUnitValue = MeasureUnit::getDotPerInch();\r
+    measureUnit.adoptInstead(MeasureUnit::createEm(status));\r
+    measureUnitValue = MeasureUnit::getEm();\r
+    measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));\r
+    measureUnitValue = MeasureUnit::getMegapixel();\r
+    measureUnit.adoptInstead(MeasureUnit::createPixel(status));\r
+    measureUnitValue = MeasureUnit::getPixel();\r
+    measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));\r
+    measureUnitValue = MeasureUnit::getPixelPerCentimeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));\r
+    measureUnitValue = MeasureUnit::getPixelPerInch();\r
+    measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));\r
+    measureUnitValue = MeasureUnit::getAstronomicalUnit();\r
+    measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));\r
+    measureUnitValue = MeasureUnit::getCentimeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));\r
+    measureUnitValue = MeasureUnit::getDecimeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status));\r
+    measureUnitValue = MeasureUnit::getEarthRadius();\r
+    measureUnit.adoptInstead(MeasureUnit::createFathom(status));\r
+    measureUnitValue = MeasureUnit::getFathom();\r
+    measureUnit.adoptInstead(MeasureUnit::createFoot(status));\r
+    measureUnitValue = MeasureUnit::getFoot();\r
+    measureUnit.adoptInstead(MeasureUnit::createFurlong(status));\r
+    measureUnitValue = MeasureUnit::getFurlong();\r
+    measureUnit.adoptInstead(MeasureUnit::createInch(status));\r
+    measureUnitValue = MeasureUnit::getInch();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilometer(status));\r
+    measureUnitValue = MeasureUnit::getKilometer();\r
+    measureUnit.adoptInstead(MeasureUnit::createLightYear(status));\r
+    measureUnitValue = MeasureUnit::getLightYear();\r
+    measureUnit.adoptInstead(MeasureUnit::createMeter(status));\r
+    measureUnitValue = MeasureUnit::getMeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));\r
+    measureUnitValue = MeasureUnit::getMicrometer();\r
+    measureUnit.adoptInstead(MeasureUnit::createMile(status));\r
+    measureUnitValue = MeasureUnit::getMile();\r
+    measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));\r
+    measureUnitValue = MeasureUnit::getMileScandinavian();\r
+    measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));\r
+    measureUnitValue = MeasureUnit::getMillimeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createNanometer(status));\r
+    measureUnitValue = MeasureUnit::getNanometer();\r
+    measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));\r
+    measureUnitValue = MeasureUnit::getNauticalMile();\r
+    measureUnit.adoptInstead(MeasureUnit::createParsec(status));\r
+    measureUnitValue = MeasureUnit::getParsec();\r
+    measureUnit.adoptInstead(MeasureUnit::createPicometer(status));\r
+    measureUnitValue = MeasureUnit::getPicometer();\r
+    measureUnit.adoptInstead(MeasureUnit::createPoint(status));\r
+    measureUnitValue = MeasureUnit::getPoint();\r
+    measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));\r
+    measureUnitValue = MeasureUnit::getSolarRadius();\r
+    measureUnit.adoptInstead(MeasureUnit::createYard(status));\r
+    measureUnitValue = MeasureUnit::getYard();\r
+    measureUnit.adoptInstead(MeasureUnit::createCandela(status));\r
+    measureUnitValue = MeasureUnit::getCandela();\r
+    measureUnit.adoptInstead(MeasureUnit::createLumen(status));\r
+    measureUnitValue = MeasureUnit::getLumen();\r
+    measureUnit.adoptInstead(MeasureUnit::createLux(status));\r
+    measureUnitValue = MeasureUnit::getLux();\r
+    measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));\r
+    measureUnitValue = MeasureUnit::getSolarLuminosity();\r
+    measureUnit.adoptInstead(MeasureUnit::createCarat(status));\r
+    measureUnitValue = MeasureUnit::getCarat();\r
+    measureUnit.adoptInstead(MeasureUnit::createDalton(status));\r
+    measureUnitValue = MeasureUnit::getDalton();\r
+    measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));\r
+    measureUnitValue = MeasureUnit::getEarthMass();\r
+    measureUnit.adoptInstead(MeasureUnit::createGrain(status));\r
+    measureUnitValue = MeasureUnit::getGrain();\r
+    measureUnit.adoptInstead(MeasureUnit::createGram(status));\r
+    measureUnitValue = MeasureUnit::getGram();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilogram(status));\r
+    measureUnitValue = MeasureUnit::getKilogram();\r
+    measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));\r
+    measureUnitValue = MeasureUnit::getMetricTon();\r
+    measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));\r
+    measureUnitValue = MeasureUnit::getMicrogram();\r
+    measureUnit.adoptInstead(MeasureUnit::createMilligram(status));\r
+    measureUnitValue = MeasureUnit::getMilligram();\r
+    measureUnit.adoptInstead(MeasureUnit::createOunce(status));\r
+    measureUnitValue = MeasureUnit::getOunce();\r
+    measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));\r
+    measureUnitValue = MeasureUnit::getOunceTroy();\r
+    measureUnit.adoptInstead(MeasureUnit::createPound(status));\r
+    measureUnitValue = MeasureUnit::getPound();\r
+    measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));\r
+    measureUnitValue = MeasureUnit::getSolarMass();\r
+    measureUnit.adoptInstead(MeasureUnit::createStone(status));\r
+    measureUnitValue = MeasureUnit::getStone();\r
+    measureUnit.adoptInstead(MeasureUnit::createTon(status));\r
+    measureUnitValue = MeasureUnit::getTon();\r
+    measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));\r
+    measureUnitValue = MeasureUnit::getGigawatt();\r
+    measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));\r
+    measureUnitValue = MeasureUnit::getHorsepower();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));\r
+    measureUnitValue = MeasureUnit::getKilowatt();\r
+    measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));\r
+    measureUnitValue = MeasureUnit::getMegawatt();\r
+    measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));\r
+    measureUnitValue = MeasureUnit::getMilliwatt();\r
+    measureUnit.adoptInstead(MeasureUnit::createWatt(status));\r
+    measureUnitValue = MeasureUnit::getWatt();\r
+    measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));\r
+    measureUnitValue = MeasureUnit::getAtmosphere();\r
+    measureUnit.adoptInstead(MeasureUnit::createBar(status));\r
+    measureUnitValue = MeasureUnit::getBar();\r
+    measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));\r
+    measureUnitValue = MeasureUnit::getHectopascal();\r
+    measureUnit.adoptInstead(MeasureUnit::createInchHg(status));\r
+    measureUnitValue = MeasureUnit::getInchHg();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));\r
+    measureUnitValue = MeasureUnit::getKilopascal();\r
+    measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));\r
+    measureUnitValue = MeasureUnit::getMegapascal();\r
+    measureUnit.adoptInstead(MeasureUnit::createMillibar(status));\r
+    measureUnitValue = MeasureUnit::getMillibar();\r
+    measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));\r
+    measureUnitValue = MeasureUnit::getMillimeterOfMercury();\r
+    measureUnit.adoptInstead(MeasureUnit::createPascal(status));\r
+    measureUnitValue = MeasureUnit::getPascal();\r
+    measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));\r
+    measureUnitValue = MeasureUnit::getPoundPerSquareInch();\r
+    measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));\r
+    measureUnitValue = MeasureUnit::getKilometerPerHour();\r
+    measureUnit.adoptInstead(MeasureUnit::createKnot(status));\r
+    measureUnitValue = MeasureUnit::getKnot();\r
+    measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));\r
+    measureUnitValue = MeasureUnit::getMeterPerSecond();\r
+    measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));\r
+    measureUnitValue = MeasureUnit::getMilePerHour();\r
+    measureUnit.adoptInstead(MeasureUnit::createCelsius(status));\r
+    measureUnitValue = MeasureUnit::getCelsius();\r
+    measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));\r
+    measureUnitValue = MeasureUnit::getFahrenheit();\r
+    measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));\r
+    measureUnitValue = MeasureUnit::getGenericTemperature();\r
+    measureUnit.adoptInstead(MeasureUnit::createKelvin(status));\r
+    measureUnitValue = MeasureUnit::getKelvin();\r
+    measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));\r
+    measureUnitValue = MeasureUnit::getNewtonMeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));\r
+    measureUnitValue = MeasureUnit::getPoundFoot();\r
+    measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));\r
+    measureUnitValue = MeasureUnit::getAcreFoot();\r
+    measureUnit.adoptInstead(MeasureUnit::createBarrel(status));\r
+    measureUnitValue = MeasureUnit::getBarrel();\r
+    measureUnit.adoptInstead(MeasureUnit::createBushel(status));\r
+    measureUnitValue = MeasureUnit::getBushel();\r
+    measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));\r
+    measureUnitValue = MeasureUnit::getCentiliter();\r
+    measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));\r
+    measureUnitValue = MeasureUnit::getCubicCentimeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));\r
+    measureUnitValue = MeasureUnit::getCubicFoot();\r
+    measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));\r
+    measureUnitValue = MeasureUnit::getCubicInch();\r
+    measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));\r
+    measureUnitValue = MeasureUnit::getCubicKilometer();\r
+    measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));\r
+    measureUnitValue = MeasureUnit::getCubicMeter();\r
+    measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));\r
+    measureUnitValue = MeasureUnit::getCubicMile();\r
+    measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));\r
+    measureUnitValue = MeasureUnit::getCubicYard();\r
+    measureUnit.adoptInstead(MeasureUnit::createCup(status));\r
+    measureUnitValue = MeasureUnit::getCup();\r
+    measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));\r
+    measureUnitValue = MeasureUnit::getCupMetric();\r
+    measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));\r
+    measureUnitValue = MeasureUnit::getDeciliter();\r
+    measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status));\r
+    measureUnitValue = MeasureUnit::getDessertSpoon();\r
+    measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status));\r
+    measureUnitValue = MeasureUnit::getDessertSpoonImperial();\r
+    measureUnit.adoptInstead(MeasureUnit::createDram(status));\r
+    measureUnitValue = MeasureUnit::getDram();\r
+    measureUnit.adoptInstead(MeasureUnit::createDrop(status));\r
+    measureUnitValue = MeasureUnit::getDrop();\r
+    measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));\r
+    measureUnitValue = MeasureUnit::getFluidOunce();\r
+    measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));\r
+    measureUnitValue = MeasureUnit::getFluidOunceImperial();\r
+    measureUnit.adoptInstead(MeasureUnit::createGallon(status));\r
+    measureUnitValue = MeasureUnit::getGallon();\r
+    measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));\r
+    measureUnitValue = MeasureUnit::getGallonImperial();\r
+    measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));\r
+    measureUnitValue = MeasureUnit::getHectoliter();\r
+    measureUnit.adoptInstead(MeasureUnit::createJigger(status));\r
+    measureUnitValue = MeasureUnit::getJigger();\r
+    measureUnit.adoptInstead(MeasureUnit::createLiter(status));\r
+    measureUnitValue = MeasureUnit::getLiter();\r
+    measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));\r
+    measureUnitValue = MeasureUnit::getMegaliter();\r
+    measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));\r
+    measureUnitValue = MeasureUnit::getMilliliter();\r
+    measureUnit.adoptInstead(MeasureUnit::createPinch(status));\r
+    measureUnitValue = MeasureUnit::getPinch();\r
+    measureUnit.adoptInstead(MeasureUnit::createPint(status));\r
+    measureUnitValue = MeasureUnit::getPint();\r
+    measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));\r
+    measureUnitValue = MeasureUnit::getPintMetric();\r
+    measureUnit.adoptInstead(MeasureUnit::createQuart(status));\r
+    measureUnitValue = MeasureUnit::getQuart();\r
+    measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status));\r
+    measureUnitValue = MeasureUnit::getQuartImperial();\r
+    measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));\r
+    measureUnitValue = MeasureUnit::getTablespoon();\r
+    measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));\r
+    measureUnitValue = MeasureUnit::getTeaspoon();\r
+    assertSuccess("", status);\r
+}\r
+\r
 void MeasureFormatTest::TestBasic() {\r
     UErrorCode status = U_ZERO_ERROR;\r
     MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status);\r
@@ -3662,8 +4048,53 @@ void MeasureFormatTest::TestIdentifiers() {
         {"pow2-foot-and-pow2-mile", "square-foot-and-square-mile"},\r
         {"gram-square-gram-per-dekagram", "cubic-gram-per-dekagram"},\r
         {"kilogram-per-meter-per-second", "kilogram-per-meter-second"},\r
-\r
-        // TODO(ICU-21284): Add more test cases once the proper ranking is available.\r
+        {"kilometer-per-second-per-megaparsec", "kilometer-per-megaparsec-second"},\r
+\r
+        // Correct order of units, as per unitQuantities in CLDR's units.xml\r
+        {"newton-meter", "newton-meter"},\r
+        {"meter-newton", "newton-meter"},\r
+        {"pound-force-foot", "pound-force-foot"},\r
+        {"foot-pound-force", "pound-force-foot"},\r
+        {"kilowatt-hour", "kilowatt-hour"},\r
+        {"hour-kilowatt", "kilowatt-hour"},\r
+\r
+        // Testing prefixes are parsed and produced correctly (ensures no\r
+        // collisions in the enum values)\r
+        {"yoctofoot", "yoctofoot"},\r
+        {"zeptofoot", "zeptofoot"},\r
+        {"attofoot", "attofoot"},\r
+        {"femtofoot", "femtofoot"},\r
+        {"picofoot", "picofoot"},\r
+        {"nanofoot", "nanofoot"},\r
+        {"microfoot", "microfoot"},\r
+        {"millifoot", "millifoot"},\r
+        {"centifoot", "centifoot"},\r
+        {"decifoot", "decifoot"},\r
+        {"foot", "foot"},\r
+        {"dekafoot", "dekafoot"},\r
+        {"hectofoot", "hectofoot"},\r
+        {"kilofoot", "kilofoot"},\r
+        {"megafoot", "megafoot"},\r
+        {"gigafoot", "gigafoot"},\r
+        {"terafoot", "terafoot"},\r
+        {"petafoot", "petafoot"},\r
+        {"exafoot", "exafoot"},\r
+        {"zettafoot", "zettafoot"},\r
+        {"yottafoot", "yottafoot"},\r
+        {"kibibyte", "kibibyte"},\r
+        {"mebibyte", "mebibyte"},\r
+        {"gibibyte", "gibibyte"},\r
+        {"tebibyte", "tebibyte"},\r
+        {"pebibyte", "pebibyte"},\r
+        {"exbibyte", "exbibyte"},\r
+        {"zebibyte", "zebibyte"},\r
+        {"yobibyte", "yobibyte"},\r
+\r
+        // Testing sort order of prefixes.\r
+        //\r
+        // TODO(icu-units#70): revisit when fixing normalization. For now we're\r
+        // just checking some consistency between C&J.\r
+        {"megafoot-mebifoot-kibifoot-kilofoot", "kibifoot-mebifoot-kilofoot-megafoot"},\r
     };\r
     for (const auto &cas : cases) {\r
         status.setScope(cas.id);\r
@@ -3722,6 +4153,108 @@ void MeasureFormatTest::TestInvalidIdentifiers() {
     }\r
 }\r
 \r
+void MeasureFormatTest::TestIdentifierDetails() {\r
+    IcuTestErrorCode status(*this, "TestIdentifierDetails()");\r
+\r
+    MeasureUnit joule = MeasureUnit::forIdentifier("joule", status);\r
+    status.assertSuccess();\r
+    assertEquals("Initial joule", "joule", joule.getIdentifier());\r
+\r
+    static_assert(UMEASURE_PREFIX_INTERNAL_MAX_SI < 99, "Tests assume there is no prefix 99.");\r
+    static_assert(UMEASURE_PREFIX_INTERNAL_MAX_BIN < 99, "Tests assume there is no prefix 99.");\r
+    MeasureUnit unit = joule.withPrefix((UMeasurePrefix)99, status);\r
+    if (!status.expectErrorAndReset(U_UNSUPPORTED_ERROR)) {\r
+        errln("Invalid prefix should result in an error.");\r
+    }\r
+    assertEquals("Invalid prefix results in no identifier", "", unit.getIdentifier());\r
+\r
+    unit = joule.withPrefix(UMEASURE_PREFIX_HECTO, status);\r
+    status.assertSuccess();\r
+    assertEquals("foo identifier", "hectojoule", unit.getIdentifier());\r
+\r
+    unit = unit.withPrefix(UMEASURE_PREFIX_EXBI, status);\r
+    status.assertSuccess();\r
+    assertEquals("foo identifier", "exbijoule", unit.getIdentifier());\r
+}\r
+\r
+void MeasureFormatTest::TestPrefixes() {\r
+    IcuTestErrorCode status(*this, "TestPrefixes()");\r
+    const struct TestCase {\r
+        UMeasurePrefix prefix;\r
+        int32_t expectedBase;\r
+        int32_t expectedPower;\r
+    } cases[] = {\r
+        {UMEASURE_PREFIX_YOCTO, 10, -24},\r
+        {UMEASURE_PREFIX_ZEPTO, 10, -21},\r
+        {UMEASURE_PREFIX_ATTO, 10, -18},\r
+        {UMEASURE_PREFIX_FEMTO, 10, -15},\r
+        {UMEASURE_PREFIX_PICO, 10, -12},\r
+        {UMEASURE_PREFIX_NANO, 10, -9},\r
+        {UMEASURE_PREFIX_MICRO, 10, -6},\r
+        {UMEASURE_PREFIX_MILLI, 10, -3},\r
+        {UMEASURE_PREFIX_CENTI, 10, -2},\r
+        {UMEASURE_PREFIX_DECI, 10, -1},\r
+        {UMEASURE_PREFIX_ONE, 10, 0},\r
+        {UMEASURE_PREFIX_DEKA, 10, 1},\r
+        {UMEASURE_PREFIX_HECTO, 10, 2},\r
+        {UMEASURE_PREFIX_KILO, 10, 3},\r
+        {UMEASURE_PREFIX_MEGA, 10, 6},\r
+        {UMEASURE_PREFIX_GIGA, 10, 9},\r
+        {UMEASURE_PREFIX_TERA, 10, 12},\r
+        {UMEASURE_PREFIX_PETA, 10, 15},\r
+        {UMEASURE_PREFIX_EXA, 10, 18},\r
+        {UMEASURE_PREFIX_ZETTA, 10, 21},\r
+        {UMEASURE_PREFIX_YOTTA, 10, 24},\r
+        {UMEASURE_PREFIX_KIBI, 1024, 1},\r
+        {UMEASURE_PREFIX_MEBI, 1024, 2},\r
+        {UMEASURE_PREFIX_GIBI, 1024, 3},\r
+        {UMEASURE_PREFIX_TEBI, 1024, 4},\r
+        {UMEASURE_PREFIX_PEBI, 1024, 5},\r
+        {UMEASURE_PREFIX_EXBI, 1024, 6},\r
+        {UMEASURE_PREFIX_ZEBI, 1024, 7},\r
+        {UMEASURE_PREFIX_YOBI, 1024, 8},\r
+    };\r
+\r
+    for (auto cas : cases) {\r
+        MeasureUnit m = MeasureUnit::getAmpere().withPrefix(cas.prefix, status);\r
+        assertEquals("umeas_getPrefixPower()", cas.expectedPower,\r
+                     umeas_getPrefixPower(m.getPrefix(status)));\r
+        assertEquals("umeas_getPrefixBase()", cas.expectedBase,\r
+                     umeas_getPrefixBase(m.getPrefix(status)));\r
+    }\r
+}\r
+\r
+void MeasureFormatTest::TestParseBuiltIns() {\r
+    IcuTestErrorCode status(*this, "TestParseBuiltIns()");\r
+    int32_t totalCount = MeasureUnit::getAvailable(nullptr, 0, status);\r
+    status.expectErrorAndReset(U_BUFFER_OVERFLOW_ERROR);\r
+    std::unique_ptr<MeasureUnit[]> units(new MeasureUnit[totalCount]);\r
+    totalCount = MeasureUnit::getAvailable(units.get(), totalCount, status);\r
+    status.assertSuccess();\r
+    for (int32_t i = 0; i < totalCount; i++) {\r
+        MeasureUnit &unit = units[i];\r
+        if (uprv_strcmp(unit.getType(), "currency") == 0) {\r
+            continue;\r
+        }\r
+\r
+        // Prove that all built-in units are parseable, except "generic" temperature:\r
+        MeasureUnit parsed = MeasureUnit::forIdentifier(unit.getIdentifier(), status);\r
+        if (unit == MeasureUnit::getGenericTemperature()) {\r
+            status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);\r
+        } else {\r
+            status.assertSuccess();\r
+            CharString msg;\r
+            msg.append("parsed MeasureUnit '", status);\r
+            msg.append(parsed.getIdentifier(), status);\r
+            msg.append("' should equal built-in '", status);\r
+            msg.append(unit.getIdentifier(), status);\r
+            msg.append("'", status);\r
+            status.assertSuccess();\r
+            assertTrue(msg.data(), unit == parsed);\r
+        }\r
+    }\r
+}\r
+\r
 void MeasureFormatTest::TestParseToBuiltIn() {\r
     IcuTestErrorCode status(*this, "TestParseToBuiltIn()");\r
     const struct TestCase {\r
@@ -3778,12 +4311,12 @@ void MeasureFormatTest::TestKilogramIdentifier() {
     assertEquals("nanogram", "", nanogram.getType());\r
     assertEquals("nanogram", "nanogram", nanogram.getIdentifier());\r
 \r
-    assertEquals("prefix of kilogram", UMEASURE_SI_PREFIX_KILO, kilogram.getSIPrefix(status));\r
-    assertEquals("prefix of gram", UMEASURE_SI_PREFIX_ONE, gram.getSIPrefix(status));\r
-    assertEquals("prefix of microgram", UMEASURE_SI_PREFIX_MICRO, microgram.getSIPrefix(status));\r
-    assertEquals("prefix of nanogram", UMEASURE_SI_PREFIX_NANO, nanogram.getSIPrefix(status));\r
+    assertEquals("prefix of kilogram", UMEASURE_PREFIX_KILO, kilogram.getPrefix(status));\r
+    assertEquals("prefix of gram", UMEASURE_PREFIX_ONE, gram.getPrefix(status));\r
+    assertEquals("prefix of microgram", UMEASURE_PREFIX_MICRO, microgram.getPrefix(status));\r
+    assertEquals("prefix of nanogram", UMEASURE_PREFIX_NANO, nanogram.getPrefix(status));\r
 \r
-    MeasureUnit tmp = kilogram.withSIPrefix(UMEASURE_SI_PREFIX_MILLI, status);\r
+    MeasureUnit tmp = kilogram.withPrefix(UMEASURE_PREFIX_MILLI, status);\r
     assertEquals(UnicodeString("Kilogram + milli should be milligram, got: ") + tmp.getIdentifier(),\r
                  MeasureUnit::getMilligram().getIdentifier(), tmp.getIdentifier());\r
 }\r
@@ -3795,16 +4328,16 @@ void MeasureFormatTest::TestCompoundUnitOperations() {
 \r
     MeasureUnit kilometer = MeasureUnit::getKilometer();\r
     MeasureUnit cubicMeter = MeasureUnit::getCubicMeter();\r
-    MeasureUnit meter = kilometer.withSIPrefix(UMEASURE_SI_PREFIX_ONE, status);\r
-    MeasureUnit centimeter1 = kilometer.withSIPrefix(UMEASURE_SI_PREFIX_CENTI, status);\r
-    MeasureUnit centimeter2 = meter.withSIPrefix(UMEASURE_SI_PREFIX_CENTI, status);\r
-    MeasureUnit cubicDecimeter = cubicMeter.withSIPrefix(UMEASURE_SI_PREFIX_DECI, status);\r
+    MeasureUnit meter = kilometer.withPrefix(UMEASURE_PREFIX_ONE, status);\r
+    MeasureUnit centimeter1 = kilometer.withPrefix(UMEASURE_PREFIX_CENTI, status);\r
+    MeasureUnit centimeter2 = meter.withPrefix(UMEASURE_PREFIX_CENTI, status);\r
+    MeasureUnit cubicDecimeter = cubicMeter.withPrefix(UMEASURE_PREFIX_DECI, status);\r
 \r
-    verifySingleUnit(kilometer, UMEASURE_SI_PREFIX_KILO, 1, "kilometer");\r
-    verifySingleUnit(meter, UMEASURE_SI_PREFIX_ONE, 1, "meter");\r
-    verifySingleUnit(centimeter1, UMEASURE_SI_PREFIX_CENTI, 1, "centimeter");\r
-    verifySingleUnit(centimeter2, UMEASURE_SI_PREFIX_CENTI, 1, "centimeter");\r
-    verifySingleUnit(cubicDecimeter, UMEASURE_SI_PREFIX_DECI, 3, "cubic-decimeter");\r
+    verifySingleUnit(kilometer, UMEASURE_PREFIX_KILO, 1, "kilometer");\r
+    verifySingleUnit(meter, UMEASURE_PREFIX_ONE, 1, "meter");\r
+    verifySingleUnit(centimeter1, UMEASURE_PREFIX_CENTI, 1, "centimeter");\r
+    verifySingleUnit(centimeter2, UMEASURE_PREFIX_CENTI, 1, "centimeter");\r
+    verifySingleUnit(cubicDecimeter, UMEASURE_PREFIX_DECI, 3, "cubic-decimeter");\r
 \r
     assertTrue("centimeter equality", centimeter1 == centimeter2);\r
     assertTrue("kilometer inequality", centimeter1 != kilometer);\r
@@ -3814,10 +4347,10 @@ void MeasureFormatTest::TestCompoundUnitOperations() {
     MeasureUnit quarticKilometer = kilometer.withDimensionality(4, status);\r
     MeasureUnit overQuarticKilometer1 = kilometer.withDimensionality(-4, status);\r
 \r
-    verifySingleUnit(squareMeter, UMEASURE_SI_PREFIX_ONE, 2, "square-meter");\r
-    verifySingleUnit(overCubicCentimeter, UMEASURE_SI_PREFIX_CENTI, -3, "per-cubic-centimeter");\r
-    verifySingleUnit(quarticKilometer, UMEASURE_SI_PREFIX_KILO, 4, "pow4-kilometer");\r
-    verifySingleUnit(overQuarticKilometer1, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");\r
+    verifySingleUnit(squareMeter, UMEASURE_PREFIX_ONE, 2, "square-meter");\r
+    verifySingleUnit(overCubicCentimeter, UMEASURE_PREFIX_CENTI, -3, "per-cubic-centimeter");\r
+    verifySingleUnit(quarticKilometer, UMEASURE_PREFIX_KILO, 4, "pow4-kilometer");\r
+    verifySingleUnit(overQuarticKilometer1, UMEASURE_PREFIX_KILO, -4, "per-pow4-kilometer");\r
 \r
     assertTrue("power inequality", quarticKilometer != overQuarticKilometer1);\r
 \r
@@ -3828,26 +4361,26 @@ void MeasureFormatTest::TestCompoundUnitOperations() {
         .reciprocal(status);\r
     MeasureUnit overQuarticKilometer4 = meter.withDimensionality(4, status)\r
         .reciprocal(status)\r
-        .withSIPrefix(UMEASURE_SI_PREFIX_KILO, status);\r
+        .withPrefix(UMEASURE_PREFIX_KILO, status);\r
 \r
-    verifySingleUnit(overQuarticKilometer2, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");\r
-    verifySingleUnit(overQuarticKilometer3, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");\r
-    verifySingleUnit(overQuarticKilometer4, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");\r
+    verifySingleUnit(overQuarticKilometer2, UMEASURE_PREFIX_KILO, -4, "per-pow4-kilometer");\r
+    verifySingleUnit(overQuarticKilometer3, UMEASURE_PREFIX_KILO, -4, "per-pow4-kilometer");\r
+    verifySingleUnit(overQuarticKilometer4, UMEASURE_PREFIX_KILO, -4, "per-pow4-kilometer");\r
 \r
     assertTrue("reciprocal equality", overQuarticKilometer1 == overQuarticKilometer2);\r
     assertTrue("reciprocal equality", overQuarticKilometer1 == overQuarticKilometer3);\r
     assertTrue("reciprocal equality", overQuarticKilometer1 == overQuarticKilometer4);\r
 \r
     MeasureUnit kiloSquareSecond = MeasureUnit::getSecond()\r
-        .withDimensionality(2, status).withSIPrefix(UMEASURE_SI_PREFIX_KILO, status);\r
+        .withDimensionality(2, status).withPrefix(UMEASURE_PREFIX_KILO, status);\r
     MeasureUnit meterSecond = meter.product(kiloSquareSecond, status);\r
     MeasureUnit cubicMeterSecond1 = meter.withDimensionality(3, status).product(kiloSquareSecond, status);\r
-    MeasureUnit centimeterSecond1 = meter.withSIPrefix(UMEASURE_SI_PREFIX_CENTI, status).product(kiloSquareSecond, status);\r
+    MeasureUnit centimeterSecond1 = meter.withPrefix(UMEASURE_PREFIX_CENTI, status).product(kiloSquareSecond, status);\r
     MeasureUnit secondCubicMeter = kiloSquareSecond.product(meter.withDimensionality(3, status), status);\r
-    MeasureUnit secondCentimeter = kiloSquareSecond.product(meter.withSIPrefix(UMEASURE_SI_PREFIX_CENTI, status), status);\r
+    MeasureUnit secondCentimeter = kiloSquareSecond.product(meter.withPrefix(UMEASURE_PREFIX_CENTI, status), status);\r
     MeasureUnit secondCentimeterPerKilometer = secondCentimeter.product(kilometer.reciprocal(status), status);\r
 \r
-    verifySingleUnit(kiloSquareSecond, UMEASURE_SI_PREFIX_KILO, 2, "square-kilosecond");\r
+    verifySingleUnit(kiloSquareSecond, UMEASURE_PREFIX_KILO, 2, "square-kilosecond");\r
     const char* meterSecondSub[] = {"meter", "square-kilosecond"};\r
     verifyCompoundUnit(meterSecond, "meter-square-kilosecond",\r
         meterSecondSub, UPRV_LENGTHOF(meterSecondSub));\r
@@ -3870,20 +4403,20 @@ void MeasureFormatTest::TestCompoundUnitOperations() {
     assertTrue("reordering equality", cubicMeterSecond1 == secondCubicMeter);\r
     assertTrue("additional simple units inequality", secondCubicMeter != secondCentimeter);\r
 \r
-    // Don't allow get/set power or SI prefix on compound units\r
+    // Don't allow get/set power or SI or binary prefix on compound units\r
     status.errIfFailureAndReset();\r
     meterSecond.getDimensionality(status);\r
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);\r
     meterSecond.withDimensionality(3, status);\r
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);\r
-    meterSecond.getSIPrefix(status);\r
+    meterSecond.getPrefix(status);\r
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);\r
-    meterSecond.withSIPrefix(UMEASURE_SI_PREFIX_CENTI, status);\r
+    meterSecond.withPrefix(UMEASURE_PREFIX_CENTI, status);\r
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);\r
 \r
     // Test that StringPiece does not overflow\r
     MeasureUnit centimeter3 = MeasureUnit::forIdentifier({secondCentimeter.getIdentifier(), 10}, status);\r
-    verifySingleUnit(centimeter3, UMEASURE_SI_PREFIX_CENTI, 1, "centimeter");\r
+    verifySingleUnit(centimeter3, UMEASURE_PREFIX_CENTI, 1, "centimeter");\r
     assertTrue("string piece equality", centimeter1 == centimeter3);\r
 \r
     MeasureUnit footInch = MeasureUnit::forIdentifier("foot-and-inch", status);\r
@@ -3907,19 +4440,19 @@ void MeasureFormatTest::TestCompoundUnitOperations() {
     // with others via product:\r
     MeasureUnit kilometer2 = dimensionless.product(kilometer, status);\r
     status.errIfFailureAndReset("dimensionless.product(kilometer, status)");\r
-    verifySingleUnit(kilometer2, UMEASURE_SI_PREFIX_KILO, 1, "kilometer");\r
+    verifySingleUnit(kilometer2, UMEASURE_PREFIX_KILO, 1, "kilometer");\r
     assertTrue("kilometer equality", kilometer == kilometer2);\r
 \r
     // Test out-of-range powers\r
     MeasureUnit power15 = MeasureUnit::forIdentifier("pow15-kilometer", status);\r
-    verifySingleUnit(power15, UMEASURE_SI_PREFIX_KILO, 15, "pow15-kilometer");\r
+    verifySingleUnit(power15, UMEASURE_PREFIX_KILO, 15, "pow15-kilometer");\r
     status.errIfFailureAndReset();\r
     MeasureUnit power16a = MeasureUnit::forIdentifier("pow16-kilometer", status);\r
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);\r
     MeasureUnit power16b = power15.product(kilometer, status);\r
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);\r
     MeasureUnit powerN15 = MeasureUnit::forIdentifier("per-pow15-kilometer", status);\r
-    verifySingleUnit(powerN15, UMEASURE_SI_PREFIX_KILO, -15, "per-pow15-kilometer");\r
+    verifySingleUnit(powerN15, UMEASURE_PREFIX_KILO, -15, "per-pow15-kilometer");\r
     status.errIfFailureAndReset();\r
     MeasureUnit powerN16a = MeasureUnit::forIdentifier("per-pow16-kilometer", status);\r
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);\r
@@ -3945,22 +4478,22 @@ void MeasureFormatTest::TestDimensionlessBehaviour() {
     MeasureUnit mile = MeasureUnit::getMile();\r
     mile = mile.product(dimensionless, status);\r
     status.errIfFailureAndReset("mile.product(dimensionless, ...)");\r
-    verifySingleUnit(mile, UMEASURE_SI_PREFIX_ONE, 1, "mile");\r
+    verifySingleUnit(mile, UMEASURE_PREFIX_ONE, 1, "mile");\r
 \r
-    // dimensionless.getSIPrefix()\r
-    UMeasureSIPrefix siPrefix = dimensionless.getSIPrefix(status);\r
-    status.errIfFailureAndReset("dimensionless.getSIPrefix(...)");\r
-    assertEquals("dimensionless SIPrefix", UMEASURE_SI_PREFIX_ONE, siPrefix);\r
+    // dimensionless.getPrefix()\r
+    UMeasurePrefix unitPrefix = dimensionless.getPrefix(status);\r
+    status.errIfFailureAndReset("dimensionless.getPrefix(...)");\r
+    assertEquals("dimensionless SIPrefix", UMEASURE_PREFIX_ONE, unitPrefix);\r
 \r
-    // dimensionless.withSIPrefix()\r
-    modified = dimensionless.withSIPrefix(UMEASURE_SI_PREFIX_KILO, status);\r
-    status.errIfFailureAndReset("dimensionless.withSIPrefix(...)");\r
+    // dimensionless.withPrefix()\r
+    modified = dimensionless.withPrefix(UMEASURE_PREFIX_KILO, status);\r
+    status.errIfFailureAndReset("dimensionless.withPrefix(...)");\r
     pair = dimensionless.splitToSingleUnits(status);\r
     count = pair.second;\r
     assertEquals("no singles in modified", 0, count);\r
-    siPrefix = modified.getSIPrefix(status);\r
-    status.errIfFailureAndReset("modified.getSIPrefix(...)");\r
-    assertEquals("modified SIPrefix", UMEASURE_SI_PREFIX_ONE, siPrefix);\r
+    unitPrefix = modified.getPrefix(status);\r
+    status.errIfFailureAndReset("modified.getPrefix(...)");\r
+    assertEquals("modified SIPrefix", UMEASURE_PREFIX_ONE, unitPrefix);\r
 \r
     // dimensionless.getComplexity()\r
     UMeasureUnitComplexity complexity = dimensionless.getComplexity(status);\r
@@ -4046,8 +4579,10 @@ void MeasureFormatTest::TestInternalMeasureUnitImpl() {
     status.assertSuccess();\r
     assertEquals("mu1 initial identifier", "", mu1.identifier.data());\r
     assertEquals("mu1 initial complexity", UMEASURE_UNIT_SINGLE, mu1.complexity);\r
-    assertEquals("mu1 initial units length", 1, mu1.units.length());\r
-    assertEquals("mu1 initial units[0]", "meter", mu1.units[0]->getSimpleUnitID());\r
+    assertEquals("mu1 initial units length", 1, mu1.singleUnits.length());\r
+    if (mu1.singleUnits.length() > 0) {\r
+        assertEquals("mu1 initial units[0]", "meter", mu1.singleUnits[0]->getSimpleUnitID());\r
+    }\r
 \r
     // Producing identifier via build(): the std::move() means mu1 gets modified\r
     // while it also gets assigned to tmp's internal fImpl.\r
@@ -4055,8 +4590,10 @@ void MeasureFormatTest::TestInternalMeasureUnitImpl() {
     status.assertSuccess();\r
     assertEquals("mu1 post-move-build identifier", "meter", mu1.identifier.data());\r
     assertEquals("mu1 post-move-build complexity", UMEASURE_UNIT_SINGLE, mu1.complexity);\r
-    assertEquals("mu1 post-move-build units length", 1, mu1.units.length());\r
-    assertEquals("mu1 post-move-build units[0]", "meter", mu1.units[0]->getSimpleUnitID());\r
+    assertEquals("mu1 post-move-build units length", 1, mu1.singleUnits.length());\r
+    if (mu1.singleUnits.length() > 0) {\r
+        assertEquals("mu1 post-move-build units[0]", "meter", mu1.singleUnits[0]->getSimpleUnitID());\r
+    }\r
     assertEquals("MeasureUnit tmp identifier", "meter", tmp.getIdentifier());\r
 \r
     // This temporary variable is used when forMeasureUnit's first parameter\r
@@ -4066,8 +4603,10 @@ void MeasureFormatTest::TestInternalMeasureUnitImpl() {
     status.assertSuccess();\r
     assertEquals("tmpMemory identifier", "", tmpMemory.identifier.data());\r
     assertEquals("tmpMemory complexity", UMEASURE_UNIT_SINGLE, tmpMemory.complexity);\r
-    assertEquals("tmpMemory units length", 1, tmpMemory.units.length());\r
-    assertEquals("tmpMemory units[0]", "meter", tmpMemory.units[0]->getSimpleUnitID());\r
+    assertEquals("tmpMemory units length", 1, tmpMemory.singleUnits.length());\r
+    if (mu1.singleUnits.length() > 0) {\r
+        assertEquals("tmpMemory units[0]", "meter", tmpMemory.singleUnits[0]->getSimpleUnitID());\r
+    }\r
     assertEquals("tmpImplRef identifier", "", tmpImplRef.identifier.data());\r
     assertEquals("tmpImplRef complexity", UMEASURE_UNIT_SINGLE, tmpImplRef.complexity);\r
 \r
@@ -4076,18 +4615,59 @@ void MeasureFormatTest::TestInternalMeasureUnitImpl() {
     mu1 = std::move(mu2);\r
     assertEquals("mu1 = move(mu2): identifier", "", mu1.identifier.data());\r
     assertEquals("mu1 = move(mu2): complexity", UMEASURE_UNIT_COMPOUND, mu1.complexity);\r
-    assertEquals("mu1 = move(mu2): units length", 2, mu1.units.length());\r
-    assertEquals("mu1 = move(mu2): units[0]", "newton", mu1.units[0]->getSimpleUnitID());\r
-    assertEquals("mu1 = move(mu2): units[1]", "meter", mu1.units[1]->getSimpleUnitID());\r
+    assertEquals("mu1 = move(mu2): units length", 2, mu1.singleUnits.length());\r
+    if (mu1.singleUnits.length() >= 2) {\r
+        assertEquals("mu1 = move(mu2): units[0]", "newton", mu1.singleUnits[0]->getSimpleUnitID());\r
+        assertEquals("mu1 = move(mu2): units[1]", "meter", mu1.singleUnits[1]->getSimpleUnitID());\r
+    }\r
 \r
     mu1 = MeasureUnitImpl::forIdentifier("hour-and-minute-and-second", status);\r
     status.assertSuccess();\r
     assertEquals("mu1 = HMS: identifier", "", mu1.identifier.data());\r
     assertEquals("mu1 = HMS: complexity", UMEASURE_UNIT_MIXED, mu1.complexity);\r
-    assertEquals("mu1 = HMS: units length", 3, mu1.units.length());\r
-    assertEquals("mu1 = HMS: units[0]", "hour", mu1.units[0]->getSimpleUnitID());\r
-    assertEquals("mu1 = HMS: units[1]", "minute", mu1.units[1]->getSimpleUnitID());\r
-    assertEquals("mu1 = HMS: units[2]", "second", mu1.units[2]->getSimpleUnitID());\r
+    assertEquals("mu1 = HMS: units length", 3, mu1.singleUnits.length());\r
+    if (mu1.singleUnits.length() >= 3) {\r
+        assertEquals("mu1 = HMS: units[0]", "hour", mu1.singleUnits[0]->getSimpleUnitID());\r
+        assertEquals("mu1 = HMS: units[1]", "minute", mu1.singleUnits[1]->getSimpleUnitID());\r
+        assertEquals("mu1 = HMS: units[2]", "second", mu1.singleUnits[2]->getSimpleUnitID());\r
+    }\r
+\r
+    MeasureUnitImpl m2 = MeasureUnitImpl::forIdentifier("", status);\r
+    m2.appendSingleUnit(SingleUnitImpl::forMeasureUnit(MeasureUnit::getMeter(), status), status);\r
+    m2.appendSingleUnit(SingleUnitImpl::forMeasureUnit(MeasureUnit::getMeter(), status), status);\r
+    status.assertSuccess();\r
+    assertEquals("append meter twice: complexity", UMEASURE_UNIT_SINGLE, m2.complexity);\r
+    assertEquals("append meter twice: units length", 1, m2.singleUnits.length());\r
+    if (mu1.singleUnits.length() >= 1) {\r
+        assertEquals("append meter twice: units[0]", "meter", m2.singleUnits[0]->getSimpleUnitID());\r
+    }\r
+    assertEquals("append meter twice: identifier", "square-meter",\r
+                 std::move(m2).build(status).getIdentifier());\r
+\r
+    MeasureUnitImpl mcm = MeasureUnitImpl::forIdentifier("", status);\r
+    mcm.appendSingleUnit(SingleUnitImpl::forMeasureUnit(MeasureUnit::getMeter(), status), status);\r
+    mcm.appendSingleUnit(SingleUnitImpl::forMeasureUnit(MeasureUnit::getCentimeter(), status), status);\r
+    status.assertSuccess();\r
+    assertEquals("append meter & centimeter: complexity", UMEASURE_UNIT_COMPOUND, mcm.complexity);\r
+    assertEquals("append meter & centimeter: units length", 2, mcm.singleUnits.length());\r
+    if (mu1.singleUnits.length() >= 2) {\r
+        assertEquals("append meter & centimeter: units[0]", "meter",\r
+                     mcm.singleUnits[0]->getSimpleUnitID());\r
+        assertEquals("append meter & centimeter: units[1]", "meter",\r
+                     mcm.singleUnits[1]->getSimpleUnitID());\r
+    }\r
+    assertEquals("append meter & centimeter: identifier", "centimeter-meter",\r
+                 std::move(mcm).build(status).getIdentifier());\r
+\r
+    MeasureUnitImpl m2m = MeasureUnitImpl::forIdentifier("meter-square-meter", status);\r
+    status.assertSuccess();\r
+    assertEquals("meter-square-meter: complexity", UMEASURE_UNIT_SINGLE, m2m.complexity);\r
+    assertEquals("meter-square-meter: units length", 1, m2m.singleUnits.length());\r
+    if (mu1.singleUnits.length() >= 1) {\r
+        assertEquals("meter-square-meter: units[0]", "meter", m2m.singleUnits[0]->getSimpleUnitID());\r
+    }\r
+    assertEquals("meter-square-meter: identifier", "cubic-meter",\r
+                 std::move(m2m).build(status).getIdentifier());\r
 }\r
 \r
 \r
@@ -4163,15 +4743,15 @@ void MeasureFormatTest::verifyFormat(
 \r
 void MeasureFormatTest::verifySingleUnit(\r
         const MeasureUnit& unit,\r
-        UMeasureSIPrefix siPrefix,\r
+        UMeasurePrefix unitPrefix,\r
         int8_t power,\r
         const char* identifier) {\r
     IcuTestErrorCode status(*this, "verifySingleUnit");\r
     UnicodeString uid(identifier, -1, US_INV);\r
-    assertEquals(uid + ": SI prefix",\r
-        siPrefix,\r
-        unit.getSIPrefix(status));\r
-    status.errIfFailureAndReset("%s: SI prefix", identifier);\r
+    assertEquals(uid + ": SI or binary prefix",\r
+        unitPrefix,\r
+        unit.getPrefix(status));\r
+    status.errIfFailureAndReset("%s: SI or binary prefix", identifier);\r
     assertEquals(uid + ": Power",\r
         static_cast<int32_t>(power),\r
         static_cast<int32_t>(unit.getDimensionality(status)));\r
index db96af0..40d7305 100644 (file)
@@ -282,9 +282,12 @@ void NormalizerConformanceTest::TestConformance(FileStream *input, int32_t optio
 \r
 namespace {\r
 \r
-UBool isNormalizedUTF8(const Normalizer2 &norm2, const UnicodeString &s, UErrorCode &errorCode) {\r
+UBool isNormalizedUTF8(const Normalizer2 *norm2, const UnicodeString &s, UErrorCode &errorCode) {\r
+    if (norm2 == nullptr) {\r
+        return true;\r
+    }\r
     std::string s8;\r
-    return norm2.isNormalizedUTF8(s.toUTF8String(s8), errorCode);\r
+    return norm2->isNormalizedUTF8(s.toUTF8String(s8), errorCode);\r
 }\r
 \r
 }  // namespace\r
@@ -351,7 +354,7 @@ UBool NormalizerConformanceTest::checkConformance(const UnicodeString* field,
         dataerrln("Normalizer error: isNormalized(NFC(s), UNORM_NFC) is FALSE");\r
         pass = FALSE;\r
     }\r
-    if(options==0 && !isNormalizedUTF8(*nfc, field[1], status)) {\r
+    if(options==0 && !isNormalizedUTF8(nfc, field[1], status)) {\r
         dataerrln("Normalizer error: nfc.isNormalizedUTF8(NFC(s)) is FALSE");\r
         pass = FALSE;\r
     }\r
@@ -360,16 +363,20 @@ UBool NormalizerConformanceTest::checkConformance(const UnicodeString* field,
             errln("Normalizer error: isNormalized(s, UNORM_NFC) is TRUE");\r
             pass = FALSE;\r
         }\r
-        if(isNormalizedUTF8(*nfc, field[0], status)) {\r
+        if(isNormalizedUTF8(nfc, field[0], status)) {\r
             errln("Normalizer error: nfc.isNormalizedUTF8(s) is TRUE");\r
             pass = FALSE;\r
         }\r
     }\r
+    if(options==0 && !isNormalizedUTF8(nfd, field[2], status)) {\r
+        dataerrln("Normalizer error: nfd.isNormalizedUTF8(NFD(s)) is FALSE");\r
+        pass = FALSE;\r
+    }\r
     if(!Normalizer::isNormalized(field[3], UNORM_NFKC, options, status)) {\r
         dataerrln("Normalizer error: isNormalized(NFKC(s), UNORM_NFKC) is FALSE");\r
         pass = FALSE;\r
     } else {\r
-        if(options==0 && !isNormalizedUTF8(*nfkc, field[3], status)) {\r
+        if(options==0 && !isNormalizedUTF8(nfkc, field[3], status)) {\r
             dataerrln("Normalizer error: nfkc.isNormalizedUTF8(NFKC(s)) is FALSE");\r
             pass = FALSE;\r
         }\r
@@ -378,12 +385,16 @@ UBool NormalizerConformanceTest::checkConformance(const UnicodeString* field,
                 errln("Normalizer error: isNormalized(s, UNORM_NFKC) is TRUE");\r
                 pass = FALSE;\r
             }\r
-            if(options==0 && isNormalizedUTF8(*nfkc, field[0], status)) {\r
+            if(options==0 && isNormalizedUTF8(nfkc, field[0], status)) {\r
                 errln("Normalizer error: nfkc.isNormalizedUTF8(s) is TRUE");\r
                 pass = FALSE;\r
             }\r
         }\r
     }\r
+    if(options==0 && !isNormalizedUTF8(nfkd, field[4], status)) {\r
+        dataerrln("Normalizer error: nfkd.isNormalizedUTF8(NFKD(s)) is FALSE");\r
+        pass = FALSE;\r
+    }\r
 \r
     // test FCD quick check and "makeFCD"\r
     Normalizer::normalize(field[0], UNORM_FCD, options, fcd, status);\r
@@ -481,7 +492,7 @@ UBool NormalizerConformanceTest::checkNorm(UNormalizationMode mode, int32_t opti
     exp.toUTF8String(exp8);\r
     std::string out8;\r
     Edits edits;\r
-    Edits *editsPtr = (mode == UNORM_NFC || mode == UNORM_NFKC) ? &edits : nullptr;\r
+    Edits *editsPtr = mode != UNORM_FCD ? &edits : nullptr;\r
     StringByteSink<std::string> sink(&out8, static_cast<int32_t>(exp8.length()));\r
     norm2->normalizeUTF8(0, s8, sink, editsPtr, errorCode);\r
     if (U_FAILURE(errorCode)) {\r
index 1703aec..bc67201 100644 (file)
@@ -59,11 +59,14 @@ class NumberFormatterApiTest : public IntlTestWithFieldPosition {
     void notationCompact();\r
     void unitMeasure();\r
     void unitCompoundMeasure();\r
+    void unitArbitraryMeasureUnits();\r
     void unitSkeletons();\r
     void unitUsage();\r
     void unitUsageErrorCodes();\r
     void unitUsageSkeletons();\r
     void unitCurrency();\r
+    void unitInflections();\r
+    void unitGender();\r
     void unitPercent();\r
     void percentParity();\r
     void roundingFraction();\r
@@ -170,6 +173,20 @@ class NumberFormatterApiTest : public IntlTestWithFieldPosition {
       const FormattedNumber& formattedNumber,\r
       const UFieldPosition* expectedFieldPositions,\r
       int32_t length);\r
+\r
+    struct UnitInflectionTestCase {\r
+        const char *unitIdentifier;\r
+        const char *locale;\r
+        const char *unitDisplayCase;\r
+        double value;\r
+        const UChar *expected;\r
+    };\r
+\r
+    void runUnitInflectionsTestCases(UnlocalizedNumberFormatter unf,\r
+                                     UnicodeString skeleton,\r
+                                     const UnitInflectionTestCase *cases,\r
+                                     int32_t numCases,\r
+                                     IcuTestErrorCode &status);\r
 };\r
 \r
 class DecimalQuantityTest : public IntlTest {\r
@@ -181,10 +198,11 @@ class DecimalQuantityTest : public IntlTest {
     void testConvertToAccurateDouble();\r
     void testUseApproximateDoubleWhenAble();\r
     void testHardDoubleConversion();\r
+    void testFitsInLong();\r
     void testToDouble();\r
     void testMaxDigits();\r
     void testNickelRounding();\r
-    void testCompactDecimalSuppressedExponent();\r
+    void testScientificAndCompactSuppressedExponent();\r
     void testSuppressedExponentUnchangedByInitialScaling();\r
 \r
     void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0);\r
index e4599a4..700923b 100644 (file)
@@ -80,11 +80,14 @@ void NumberFormatterApiTest::runIndexedTest(int32_t index, UBool exec, const cha
         TESTCASE_AUTO(notationCompact);\r
         TESTCASE_AUTO(unitMeasure);\r
         TESTCASE_AUTO(unitCompoundMeasure);\r
+        TESTCASE_AUTO(unitArbitraryMeasureUnits);\r
         TESTCASE_AUTO(unitSkeletons);\r
         TESTCASE_AUTO(unitUsage);\r
         TESTCASE_AUTO(unitUsageErrorCodes);\r
         TESTCASE_AUTO(unitUsageSkeletons);\r
         TESTCASE_AUTO(unitCurrency);\r
+        TESTCASE_AUTO(unitInflections);\r
+        TESTCASE_AUTO(unitGender);\r
         TESTCASE_AUTO(unitPercent);\r
         if (!quick) {\r
             // Slow test: run in exhaustive mode only\r
@@ -495,16 +498,14 @@ void NumberFormatterApiTest::notationCompact() {
             1e7,\r
             u"1000\u842C");\r
 \r
-    if (!logKnownIssue("21258", "StandardPlural cannot handle keywords 1, 0")) {\r
-        assertFormatSingle(\r
-                u"Compact with plural form =1 (ICU-21258)",\r
-                u"compact-long",\r
-                u"K",\r
-                NumberFormatter::with().notation(Notation::compactLong()),\r
-                Locale("fr-FR"),\r
-                1e3,\r
-                u"mille");\r
-    }\r
+    assertFormatSingle(\r
+            u"Compact with plural form =1 (ICU-21258)",\r
+            u"compact-long",\r
+            u"KK",\r
+            NumberFormatter::with().notation(Notation::compactLong()),\r
+            Locale("fr-FR"),\r
+            1e3,\r
+            u"mille");\r
 \r
     assertFormatSingle(\r
             u"Compact Infinity",\r
@@ -582,22 +583,21 @@ void NumberFormatterApiTest::unitMeasure() {
             u"0.0088 meters",\r
             u"0 meters");\r
 \r
-//     // TODO(ICU-20941): Support formatting for not-built-in units\r
-//     assertFormatDescending(\r
-//             u"Hectometers",\r
-//             u"measure-unit/length-hectometer",\r
-//             u"unit/hectometer",\r
-//             NumberFormatter::with().unit(MeasureUnit::forIdentifier("hectometer", status)),\r
-//             Locale::getEnglish(),\r
-//             u"87,650 hm",\r
-//             u"8,765 hm",\r
-//             u"876.5 hm",\r
-//             u"87.65 hm",\r
-//             u"8.765 hm",\r
-//             u"0.8765 hm",\r
-//             u"0.08765 hm",\r
-//             u"0.008765 hm",\r
-//             u"0 hm");\r
+    assertFormatDescending(\r
+            u"Hectometers",\r
+            u"unit/hectometer",\r
+            u"unit/hectometer",\r
+            NumberFormatter::with().unit(MeasureUnit::forIdentifier("hectometer", status)),\r
+            Locale::getEnglish(),\r
+            u"87,650 hm",\r
+            u"8,765 hm",\r
+            u"876.5 hm",\r
+            u"87.65 hm",\r
+            u"8.765 hm",\r
+            u"0.8765 hm",\r
+            u"0.08765 hm",\r
+            u"0.008765 hm",\r
+            u"0 hm");\r
 \r
 //    TODO: Implement Measure in C++\r
 //    assertFormatSingleMeasure(\r
@@ -716,6 +716,15 @@ void NumberFormatterApiTest::unitMeasure() {
             u"5 a\u00F1os");\r
 \r
     assertFormatSingle(\r
+            u"Hubble Constant - usually expressed in km/s/Mpc",\r
+            u"unit/kilometer-per-megaparsec-second",\r
+            u"unit/kilometer-per-megaparsec-second",\r
+            NumberFormatter::with().unit(MeasureUnit::forIdentifier("kilometer-per-second-per-megaparsec", status)),\r
+            Locale("en"),\r
+            74, // Approximate 2019-03-18 measurement\r
+            u"74 km/Mpc⋅sec");\r
+\r
+    assertFormatSingle(\r
             u"Mixed unit",\r
             u"unit/yard-and-foot-and-inch",\r
             u"unit/yard-and-foot-and-inch",\r
@@ -769,6 +778,67 @@ void NumberFormatterApiTest::unitMeasure() {
             4.28571,\r
             u"4 metric tons, 285 kilograms, 710 grams");\r
 \r
+    assertFormatSingle(u"Mixed Unit (Not Sorted) [metric]",                               //\r
+                       u"unit/gram-and-kilogram unit-width-full-name",                    //\r
+                       u"unit/gram-and-kilogram unit-width-full-name",                    //\r
+                       NumberFormatter::with()                                            //\r
+                           .unit(MeasureUnit::forIdentifier("gram-and-kilogram", status)) //\r
+                           .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),                         //\r
+                       Locale("en-US"),                                                   //\r
+                       4.28571,                                                           //\r
+                       u"285.71 grams, 4 kilograms");                                     //\r
+\r
+    assertFormatSingle(u"Mixed Unit (Not Sorted) [imperial]",                                  //\r
+                       u"unit/inch-and-yard-and-foot unit-width-full-name",                    //\r
+                       u"unit/inch-and-yard-and-foot unit-width-full-name",                    //\r
+                       NumberFormatter::with()                                                 //\r
+                           .unit(MeasureUnit::forIdentifier("inch-and-yard-and-foot", status)) //\r
+                           .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),                              //\r
+                       Locale("en-US"),                                                        //\r
+                       4.28571,                                                                //\r
+                       u"10.28556 inches, 4 yards, 0 feet");                                   //\r
+\r
+    assertFormatSingle(u"Mixed Unit (Not Sorted) [imperial full]",                             //\r
+                       u"unit/inch-and-yard-and-foot unit-width-full-name",                    //\r
+                       u"unit/inch-and-yard-and-foot unit-width-full-name",                    //\r
+                       NumberFormatter::with()                                                 //\r
+                           .unit(MeasureUnit::forIdentifier("inch-and-yard-and-foot", status)) //\r
+                           .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),                              //\r
+                       Locale("en-US"),                                                        //\r
+                       4.38571,                                                                //\r
+                       u"1.88556 inches, 4 yards, 1 foot");                                    //\r
+\r
+    assertFormatSingle(u"Mixed Unit (Not Sorted) [imperial full integers]",                    //\r
+                       u"unit/inch-and-yard-and-foot @# unit-width-full-name",                 //\r
+                       u"unit/inch-and-yard-and-foot @# unit-width-full-name",                 //\r
+                       NumberFormatter::with()                                                 //\r
+                           .unit(MeasureUnit::forIdentifier("inch-and-yard-and-foot", status)) //\r
+                           .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME)                               //\r
+                           .precision(Precision::maxSignificantDigits(2)),                     //\r
+                       Locale("en-US"),                                                        //\r
+                       4.36112,                                                                //\r
+                       u"1 inch, 4 yards, 1 foot");                                            //\r
+\r
+    assertFormatSingle(u"Mixed Unit (Not Sorted) [imperial full] with `And` in the end",       //\r
+                       u"unit/inch-and-yard-and-foot unit-width-full-name",                    //\r
+                       u"unit/inch-and-yard-and-foot unit-width-full-name",                    //\r
+                       NumberFormatter::with()                                                 //\r
+                           .unit(MeasureUnit::forIdentifier("inch-and-yard-and-foot", status)) //\r
+                           .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),                              //\r
+                       Locale("fr-FR"),                                                        //\r
+                       4.38571,                                                                //\r
+                       u"1,88556\u00A0pouce, 4\u00A0yards et 1\u00A0pied");                    //\r
+\r
+    assertFormatSingle(u"Mixed unit, Scientific [Not in Order]",                               //\r
+                       u"unit/foot-and-inch-and-yard E0",                                      //\r
+                       u"unit/foot-and-inch-and-yard E0",                                      //\r
+                       NumberFormatter::with()                                                 //\r
+                           .unit(MeasureUnit::forIdentifier("foot-and-inch-and-yard", status)) //\r
+                           .notation(Notation::scientific()),                                  //\r
+                       Locale("en-US"),                                                        //\r
+                       3.65,                                                                   //\r
+                       "1 ft, 1.14E1 in, 3 yd");                                               //\r
+\r
     assertFormatSingle(\r
             u"Testing  \"1 foot 12 inches\"",\r
             u"unit/foot-and-inch @### unit-width-full-name",\r
@@ -788,7 +858,7 @@ void NumberFormatterApiTest::unitMeasure() {
             NumberFormatter::with().unit(MeasureUnit::forIdentifier("celsius", status)),\r
             Locale("nl-NL"),\r
             -6.5,\r
-            u"-6,5\u00B0C");\r
+            u"-6,5°C");\r
 \r
     assertFormatSingle(\r
             u"Negative numbers: time",\r
@@ -807,6 +877,39 @@ void NumberFormatterApiTest::unitMeasure() {
             Locale("en"),\r
             100,\r
             u"100");\r
+\r
+    // TODO: desired behaviour for this "pathological" case?\r
+    // Since this is pointless, we don't test that its behaviour doesn't change.\r
+    // As of January 2021, the produced result has a missing sign: 23.5 Kelvin\r
+    // is "23 Kelvin and -272.65 degrees Celsius":\r
+//     assertFormatSingle(\r
+//             u"Meaningless: kelvin-and-celcius",\r
+//             u"unit/kelvin-and-celsius",\r
+//             u"unit/kelvin-and-celsius",\r
+//             NumberFormatter::with().unit(MeasureUnit::forIdentifier("kelvin-and-celsius", status)),\r
+//             Locale("en"),\r
+//             23.5,\r
+//             u"23 K, 272.65°C");\r
+\r
+    if (uprv_getNaN() != 0.0) {\r
+        assertFormatSingle(\r
+                u"Measured -Inf",\r
+                u"measure-unit/electric-ampere",\r
+                u"unit/ampere",\r
+                NumberFormatter::with().unit(MeasureUnit::getAmpere()),\r
+                Locale("en"),\r
+                -uprv_getInfinity(),\r
+                u"-∞ A");\r
+\r
+        assertFormatSingle(\r
+                u"Measured NaN",\r
+                u"measure-unit/temperature-celsius",\r
+                u"unit/celsius",\r
+                NumberFormatter::with().unit(MeasureUnit::forIdentifier("celsius", status)),\r
+                Locale("en"),\r
+                uprv_getNaN(),\r
+                u"NaN°C");\r
+    }\r
 }\r
 \r
 void NumberFormatterApiTest::unitCompoundMeasure() {\r
@@ -876,22 +979,21 @@ void NumberFormatterApiTest::unitCompoundMeasure() {
             u"0.008765 J/fur",\r
             u"0 J/fur");\r
 \r
-    // TODO(ICU-20941): Support constructions such as this one.\r
-    // assertFormatDescending(\r
-    //         u"Joules Per Furlong Short with unit identifier via API",\r
-    //         u"measure-unit/energy-joule per-measure-unit/length-furlong",\r
-    //         u"unit/joule-per-furlong",\r
-    //         NumberFormatter::with().unit(MeasureUnit::forIdentifier("joule-per-furlong", status)),\r
-    //         Locale::getEnglish(),\r
-    //         u"87,650 J/fur",\r
-    //         u"8,765 J/fur",\r
-    //         u"876.5 J/fur",\r
-    //         u"87.65 J/fur",\r
-    //         u"8.765 J/fur",\r
-    //         u"0.8765 J/fur",\r
-    //         u"0.08765 J/fur",\r
-    //         u"0.008765 J/fur",\r
-    //         u"0 J/fur");\r
+    assertFormatDescending(\r
+            u"Joules Per Furlong Short with unit identifier via API",\r
+            u"measure-unit/energy-joule per-measure-unit/length-furlong",\r
+            u"unit/joule-per-furlong",\r
+            NumberFormatter::with().unit(MeasureUnit::forIdentifier("joule-per-furlong", status)),\r
+            Locale::getEnglish(),\r
+            u"87,650 J/fur",\r
+            u"8,765 J/fur",\r
+            u"876.5 J/fur",\r
+            u"87.65 J/fur",\r
+            u"8.765 J/fur",\r
+            u"0.8765 J/fur",\r
+            u"0.08765 J/fur",\r
+            u"0.008765 J/fur",\r
+            u"0 J/fur");\r
 \r
     assertFormatDescending(\r
             u"Pounds per Square Inch: composed",\r
@@ -955,7 +1057,7 @@ void NumberFormatterApiTest::unitCompoundMeasure() {
     status.assertSuccess(); // Error is only returned once we try to format.\r
     FormattedNumber num = nf.formatDouble(2.4, status);\r
     if (!status.expectErrorAndReset(U_UNSUPPORTED_ERROR)) {\r
-        errln(UnicodeString("Expected failure, got: \"") +\r
+        errln(UnicodeString("Expected failure for unit/furlong-pascal per-unit/length-meter, got: \"") +\r
               nf.formatDouble(2.4, status).toString(status) + "\".");\r
         status.assertSuccess();\r
     }\r
@@ -983,6 +1085,168 @@ void NumberFormatterApiTest::unitCompoundMeasure() {
             u"2.4 m/s\u00B2");\r
 }\r
 \r
+void NumberFormatterApiTest::unitArbitraryMeasureUnits() {\r
+    IcuTestErrorCode status(*this, "unitArbitraryMeasureUnits()");\r
+\r
+    // TODO: fix after data bug is resolved? See CLDR-14510.\r
+//     assertFormatSingle(\r
+//             u"Binary unit prefix: kibibyte",\r
+//             u"unit/kibibyte",\r
+//             u"unit/kibibyte",\r
+//             NumberFormatter::with().unit(MeasureUnit::forIdentifier("kibibyte", status)),\r
+//             Locale("en-GB"),\r
+//             2.4,\r
+//             u"2.4 KiB");\r
+\r
+    assertFormatSingle(\r
+            u"Binary unit prefix: kibibyte full-name",\r
+            u"unit/kibibyte unit-width-full-name",\r
+            u"unit/kibibyte unit-width-full-name",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("kibibyte", status))\r
+                .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),\r
+            Locale("en-GB"),\r
+            2.4,\r
+            u"2.4 kibibytes");\r
+\r
+    assertFormatSingle(\r
+            u"Binary unit prefix: kibibyte full-name",\r
+            u"unit/kibibyte unit-width-full-name",\r
+            u"unit/kibibyte unit-width-full-name",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("kibibyte", status))\r
+                .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),\r
+            Locale("de"),\r
+            2.4,\r
+            u"2,4 Kibibyte");\r
+\r
+    assertFormatSingle(\r
+            u"Binary prefix for non-digital units: kibimeter",\r
+            u"unit/kibimeter",\r
+            u"unit/kibimeter",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("kibimeter", status)),\r
+            Locale("en-GB"),\r
+            2.4,\r
+            u"2.4 Kim");\r
+\r
+    assertFormatSingle(\r
+            u"SI prefix falling back to root: microohm",\r
+            u"unit/microohm",\r
+            u"unit/microohm",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("microohm", status)),\r
+            Locale("de-CH"),\r
+            2.4,\r
+            u"2.4 μΩ");\r
+\r
+    assertFormatSingle(\r
+            u"de-CH fallback to de: microohm unit-width-full-name",\r
+            u"unit/microohm unit-width-full-name",\r
+            u"unit/microohm unit-width-full-name",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("microohm", status))\r
+                .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),\r
+            Locale("de-CH"),\r
+            2.4,\r
+            u"2.4\u00A0Mikroohm");\r
+\r
+    assertFormatSingle(\r
+            u"No prefixes, 'times' pattern: joule-furlong",\r
+            u"unit/joule-furlong",\r
+            u"unit/joule-furlong",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("joule-furlong", status)),\r
+            Locale("en"),\r
+            2.4,\r
+            u"2.4 J⋅fur");\r
+\r
+    assertFormatSingle(\r
+            u"No numeratorUnitString: per-second",\r
+            u"unit/per-second",\r
+            u"unit/per-second",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("per-second", status)),\r
+            Locale("de-CH"),\r
+            2.4,\r
+            u"2.4/s");\r
+\r
+    assertFormatSingle(\r
+            u"No numeratorUnitString: per-second unit-width-full-name",\r
+            u"unit/per-second unit-width-full-name",\r
+            u"unit/per-second unit-width-full-name",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("per-second", status))\r
+                .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),\r
+            Locale("de-CH"),\r
+            2.4,\r
+            u"2.4 pro Sekunde");\r
+\r
+    assertFormatSingle(\r
+            u"Prefix in the denominator: nanogram-per-picobarrel",\r
+            u"unit/nanogram-per-picobarrel",\r
+            u"unit/nanogram-per-picobarrel",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("nanogram-per-picobarrel", status)),\r
+            Locale("en-ZA"),\r
+            2.4,\r
+            u"2,4 ng/pbbl");\r
+\r
+    assertFormatSingle(\r
+            u"Prefix in the denominator: nanogram-per-picobarrel unit-width-full-name",\r
+            u"unit/nanogram-per-picobarrel unit-width-full-name",\r
+            u"unit/nanogram-per-picobarrel unit-width-full-name",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("nanogram-per-picobarrel", status))\r
+                .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),\r
+            Locale("en-ZA"),\r
+            2.4,\r
+            u"2,4 nanograms per picobarrel");\r
+\r
+    // Valid MeasureUnit, but unformattable, because we only have patterns for\r
+    // pow2 and pow3 at this time:\r
+    LocalizedNumberFormatter lnf = NumberFormatter::with()\r
+              .unit(MeasureUnit::forIdentifier("pow4-mile", status))\r
+              .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME)\r
+              .locale("en-ZA");\r
+    lnf.operator=(lnf);  // self-assignment should be a no-op\r
+    lnf.formatInt(1, status);\r
+    status.expectErrorAndReset(U_RESOURCE_TYPE_MISMATCH);\r
+\r
+    assertFormatSingle(\r
+            u"kibijoule-foot-per-cubic-gigafurlong-square-second unit-width-full-name",\r
+            u"unit/kibijoule-foot-per-cubic-gigafurlong-square-second unit-width-full-name",\r
+            u"unit/kibijoule-foot-per-cubic-gigafurlong-square-second unit-width-full-name",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("kibijoule-foot-per-cubic-gigafurlong-square-second",\r
+                                                 status))\r
+                .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),\r
+            Locale("en-ZA"),\r
+            2.4,\r
+            u"2,4 kibijoule-feet per cubic gigafurlong-square second");\r
+\r
+    assertFormatSingle(\r
+            u"kibijoule-foot-per-cubic-gigafurlong-square-second unit-width-full-name",\r
+            u"unit/kibijoule-foot-per-cubic-gigafurlong-square-second unit-width-full-name",\r
+            u"unit/kibijoule-foot-per-cubic-gigafurlong-square-second unit-width-full-name",\r
+            NumberFormatter::with()\r
+                .unit(MeasureUnit::forIdentifier("kibijoule-foot-per-cubic-gigafurlong-square-second",\r
+                                                 status))\r
+                .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),\r
+            Locale("de-CH"),\r
+            2.4,\r
+            u"2.4\u00A0Kibijoule⋅Fuss pro Kubikgigafurlong⋅Quadratsekunde");\r
+\r
+    // TODO(ICU-21504): We want to be able to format this, but "100-kilometer"\r
+    // is not yet supported when it's not part of liter-per-100-kilometer:\r
+    lnf = NumberFormatter::with()\r
+              .unit(MeasureUnit::forIdentifier("kilowatt-hour-per-100-kilometer", status))\r
+              .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME)\r
+              .locale("en-ZA");\r
+    lnf.formatInt(1, status);\r
+    status.expectErrorAndReset(U_UNSUPPORTED_ERROR);\r
+}\r
+\r
 // TODO: merge these tests into numbertest_skeletons.cpp instead of here:\r
 void NumberFormatterApiTest::unitSkeletons() {\r
     const struct TestCase {\r
@@ -1042,10 +1306,9 @@ void NumberFormatterApiTest::unitSkeletons() {
          u"measure-unit/concentr-permille",                        //\r
          u"permille"},\r
 \r
-        // // TODO: binary prefixes not supported yet!\r
-        // {"Round-trip example from icu-units#35", //\r
-        //  u"unit/kibijoule-per-furlong",          //\r
-        //  u"unit/kibijoule-per-furlong"},\r
+        {"Round-trip example from icu-units#35", //\r
+         u"unit/kibijoule-per-furlong",          //\r
+         u"unit/kibijoule-per-furlong"},\r
     };\r
     for (auto &cas : cases) {\r
         IcuTestErrorCode status(*this, cas.msg);\r
@@ -1180,7 +1443,7 @@ void NumberFormatterApiTest::unitUsage() {
             u"8,8 km",\r
             u"900 m",\r
             u"90 m",\r
-            u"10 m",\r
+            u"9 m",\r
             u"0 m");\r
 \r
     uTestCase = u"unitUsage() en-GB road";\r
@@ -1215,8 +1478,8 @@ void NumberFormatterApiTest::unitUsage() {
             u"54 mi",\r
             u"5.4 mi",\r
             u"0.54 mi",\r
-            u"96 yd",\r
-            u"9.6 yd",\r
+            u"100 yd",\r
+            u"10 yd",\r
             u"0 yd");\r
 \r
     uTestCase = u"unitUsage() en-US road";\r
@@ -1375,6 +1638,26 @@ void NumberFormatterApiTest::unitUsage() {
             u"0E0 square centimetres");\r
 \r
     assertFormatSingle(\r
+            u"Negative Infinity with Unit Preferences",\r
+            u"measure-unit/area-acre usage/default",\r
+            u"unit/acre usage/default",\r
+            NumberFormatter::with().unit(MeasureUnit::getAcre()).usage("default"),\r
+            Locale::getEnglish(),\r
+            -uprv_getInfinity(),\r
+            u"-∞ km²");\r
+\r
+//     // TODO(icu-units#131): do we care about NaN?\r
+//     // TODO: on some platforms with MSVC, "-NaN sec" is returned.\r
+//     assertFormatSingle(\r
+//             u"NaN with Unit Preferences",\r
+//             u"measure-unit/area-acre usage/default",\r
+//             u"unit/acre usage/default",\r
+//             NumberFormatter::with().unit(MeasureUnit::getAcre()).usage("default"),\r
+//             Locale::getEnglish(),\r
+//             uprv_getNaN(),\r
+//             u"NaN cm²");\r
+\r
+    assertFormatSingle(\r
             u"Negative numbers: minute-and-second",\r
             u"measure-unit/duration-second usage/media",\r
             u"unit/second usage/media",\r
@@ -1384,6 +1667,34 @@ void NumberFormatterApiTest::unitUsage() {
             u"-1 min, 18 sec");\r
 \r
     assertFormatSingle(\r
+            u"Negative numbers: media seconds",\r
+            u"measure-unit/duration-second usage/media",\r
+            u"unit/second usage/media",\r
+            NumberFormatter::with().unit(SECOND).usage("media"),\r
+            Locale("nl-NL"),\r
+            -2.7,\r
+            u"-2,7 sec");\r
+\r
+//     // TODO: on some platforms with MSVC, "-NaN sec" is returned.\r
+//     assertFormatSingle(\r
+//             u"NaN minute-and-second",\r
+//             u"measure-unit/duration-second usage/media",\r
+//             u"unit/second usage/media",\r
+//             NumberFormatter::with().unit(SECOND).usage("media"),\r
+//             Locale("nl-NL"),\r
+//             uprv_getNaN(),\r
+//             u"NaN sec");\r
+\r
+    assertFormatSingle(\r
+            u"NaN meter-and-centimeter",\r
+            u"measure-unit/length-meter usage/person-height",\r
+            u"unit/meter usage/person-height",\r
+            NumberFormatter::with().unit(METER).usage("person-height"),\r
+            Locale("sv-SE"),\r
+            uprv_getNaN(),\r
+            u"0 m, NaN cm");\r
+\r
+    assertFormatSingle(\r
             u"Rounding Mode propagates: rounding down",\r
             u"usage/road measure-unit/length-centimeter rounding-mode-floor",\r
             u"usage/road unit/centimeter rounding-mode-floor",\r
@@ -1407,6 +1718,43 @@ void NumberFormatterApiTest::unitUsage() {
             30500,\r
             u"350 m");\r
 \r
+    // Test calling `.usage("")` should unset the existing usage.\r
+    // First: without usage\r
+    assertFormatSingle(u"Rounding Mode propagates: rounding up",\r
+                       u"measure-unit/length-centimeter rounding-mode-ceiling",\r
+                       u"unit/centimeter rounding-mode-ceiling",\r
+                       NumberFormatter::with()\r
+                           .unit(MeasureUnit::forIdentifier("centimeter", status))\r
+                           .roundingMode(UNUM_ROUND_CEILING),\r
+                       Locale("en-US"), //\r
+                       3048,            //\r
+                       u"3,048 cm");\r
+\r
+    // Second: with "road" usage\r
+    assertFormatSingle(u"Rounding Mode propagates: rounding up",\r
+                       u"usage/road measure-unit/length-centimeter rounding-mode-ceiling",\r
+                       u"usage/road unit/centimeter rounding-mode-ceiling",\r
+                       NumberFormatter::with()\r
+                           .unit(MeasureUnit::forIdentifier("centimeter", status))\r
+                           .usage("road")\r
+                           .roundingMode(UNUM_ROUND_CEILING),\r
+                       Locale("en-US"), //\r
+                       3048,            //\r
+                       u"100 ft");\r
+\r
+    // Third: with "road" usage, then the usage unsetted by calling .usage("")\r
+    assertFormatSingle(u"Rounding Mode propagates: rounding up",\r
+                       u"measure-unit/length-centimeter rounding-mode-ceiling",\r
+                       u"unit/centimeter rounding-mode-ceiling",\r
+                       NumberFormatter::with()\r
+                           .unit(MeasureUnit::forIdentifier("centimeter", status))\r
+                           .usage("road")\r
+                           .roundingMode(UNUM_ROUND_CEILING)\r
+                           .usage(""),  // unset\r
+                       Locale("en-US"), //\r
+                       3048,            //\r
+                       u"3,048 cm");\r
+\r
     // TODO(icu-units#38): improve unit testing coverage. E.g. add vehicle-fuel\r
     // triggering inversion conversion code. Test with 0 too, to see\r
     // divide-by-zero behaviour.\r
@@ -1431,6 +1779,13 @@ void NumberFormatterApiTest::unitUsageErrorCodes() {
     // Adding the unit as part of the fluent chain leads to success.\r
     unloc_formatter.unit(MeasureUnit::getMeter()).locale("en-GB").formatInt(1, status);\r
     status.assertSuccess();\r
+\r
+    // Setting unit to the "base dimensionless unit" is like clearing unit.\r
+    unloc_formatter = NumberFormatter::with().unit(MeasureUnit()).usage("default");\r
+    // This does not give an error, because usage-vs-unit isn't resolved yet.\r
+    status.errIfFailureAndReset("Expected behaviour: no immediate error for invalid unit");\r
+    unloc_formatter.locale("en-GB").formatInt(1, status);\r
+    status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);\r
 }\r
 \r
 // Tests for the "skeletons" field in unitPreferenceData, as well as precision\r
@@ -1769,6 +2124,463 @@ void NumberFormatterApiTest::unitCurrency() {
             u"123,12 CN¥");\r
 }\r
 \r
+void NumberFormatterApiTest::runUnitInflectionsTestCases(UnlocalizedNumberFormatter unf,\r
+                                                         UnicodeString skeleton,\r
+                                                         const UnitInflectionTestCase *cases,\r
+                                                         int32_t numCases,\r
+                                                         IcuTestErrorCode &status) {\r
+    for (int32_t i = 0; i < numCases; i++) {\r
+        UnitInflectionTestCase t = cases[i];\r
+        status.assertSuccess();\r
+        MeasureUnit mu = MeasureUnit::forIdentifier(t.unitIdentifier, status);\r
+        if (status.errIfFailureAndReset("MeasureUnit::forIdentifier(\"%s\", ...) failed",\r
+                                        t.unitIdentifier)) {\r
+            continue;\r
+        };\r
+        UnicodeString skelString = UnicodeString("unit/") + t.unitIdentifier + u" " + skeleton;\r
+        const UChar *skel;\r
+        if (t.unitDisplayCase == nullptr || t.unitDisplayCase[0] == 0) {\r
+            unf = unf.unit(mu).unitDisplayCase("");\r
+            skel = skelString.getTerminatedBuffer();\r
+        } else {\r
+            unf = unf.unit(mu).unitDisplayCase(t.unitDisplayCase);\r
+            // No skeleton support for unitDisplayCase yet.\r
+            skel = nullptr;\r
+        }\r
+        assertFormatSingle((UnicodeString("Unit: \"") + t.unitIdentifier + ("\", \"") + skeleton +\r
+                            u"\", locale=\"" + t.locale + u"\", case=\"" +\r
+                            (t.unitDisplayCase ? t.unitDisplayCase : "") + u"\", value=" + t.value)\r
+                               .getTerminatedBuffer(),\r
+                           skel, skel, unf, Locale(t.locale), t.value, t.expected);\r
+        status.assertSuccess();\r
+    }\r
+}\r
+\r
+void NumberFormatterApiTest::unitInflections() {\r
+    IcuTestErrorCode status(*this, "unitInflections");\r
+\r
+    UnlocalizedNumberFormatter unf;\r
+    const UChar *skeleton;\r
+    {\r
+        // Simple inflected form test - test case based on the example in CLDR's\r
+        // grammaticalFeatures.xml\r
+        unf = NumberFormatter::with().unitWidth(UNUM_UNIT_WIDTH_FULL_NAME);\r
+        skeleton = u"unit-width-full-name";\r
+        const UnitInflectionTestCase percentCases[] = {\r
+            {"percent", "ru", nullptr, 10, u"10 процентов"},    // many\r
+            {"percent", "ru", "genitive", 10, u"10 процентов"}, // many\r
+            {"percent", "ru", nullptr, 33, u"33 процента"},     // few\r
+            {"percent", "ru", "genitive", 33, u"33 процентов"}, // few\r
+            {"percent", "ru", nullptr, 1, u"1 процент"},        // one\r
+            {"percent", "ru", "genitive", 1, u"1 процента"},    // one\r
+        };\r
+        runUnitInflectionsTestCases(unf, skeleton, percentCases, UPRV_LENGTHOF(percentCases), status);\r
+    }\r
+    {\r
+        // General testing of inflection rules\r
+        unf = NumberFormatter::with().unitWidth(UNUM_UNIT_WIDTH_FULL_NAME);\r
+        skeleton = u"unit-width-full-name";\r
+        const UnitInflectionTestCase testCases[] = {\r
+            // Check up on the basic values that the compound patterns below are\r
+            // derived from:\r
+            {"meter", "de", nullptr, 1, u"1 Meter"},\r
+            {"meter", "de", "genitive", 1, u"1 Meters"},\r
+            {"meter", "de", nullptr, 2, u"2 Meter"},\r
+            {"meter", "de", "dative", 2, u"2 Metern"},\r
+            {"mile", "de", nullptr, 1, u"1 Meile"},\r
+            {"mile", "de", nullptr, 2, u"2 Meilen"},\r
+            {"day", "de", nullptr, 1, u"1 Tag"},\r
+            {"day", "de", "genitive", 1, u"1 Tages"},\r
+            {"day", "de", nullptr, 2, u"2 Tage"},\r
+            {"day", "de", "dative", 2, u"2 Tagen"},\r
+            {"decade", "de", nullptr, 1, u"1\u00A0Jahrzehnt"},\r
+            {"decade", "de", nullptr, 2, u"2\u00A0Jahrzehnte"},\r
+\r
+            // Testing de "per" rules:\r
+            //   <deriveComponent feature="case" structure="per" value0="compound" value1="accusative"/>\r
+            //   <deriveComponent feature="plural" structure="per" value0="compound" value1="one"/>\r
+            // per-patterns use accusative, but since the accusative form\r
+            // matches the nominative form, we're not effectively testing value1\r
+            // in the "case & per" rule above.\r
+\r
+            // We have a perUnitPattern for "day" in de, so "per" rules are not\r
+            // applied for these:\r
+            {"meter-per-day", "de", nullptr, 1, u"1 Meter pro Tag"},\r
+            {"meter-per-day", "de", "genitive", 1, u"1 Meters pro Tag"},\r
+            {"meter-per-day", "de", nullptr, 2, u"2 Meter pro Tag"},\r
+            {"meter-per-day", "de", "dative", 2, u"2 Metern pro Tag"},\r
+\r
+            // testing code path that falls back to "root" grammaticalFeatures\r
+            // but does not inflect:\r
+            {"meter-per-day", "af", nullptr, 1, u"1 meter per dag"},\r
+            {"meter-per-day", "af", "dative", 1, u"1 meter per dag"},\r
+\r
+            // Decade does not have a perUnitPattern at this time (CLDR 39 / ICU\r
+            // 69), so we can use it to test for selection of correct plural form.\r
+            // - Note: fragile test cases, these cases will break when\r
+            //   whitespace is more consistently applied.\r
+            {"parsec-per-decade", "de", nullptr, 1, u"1\u00A0Parsec pro Jahrzehnt"},\r
+            {"parsec-per-decade", "de", "genitive", 1, u"1 Parsec pro Jahrzehnt"},\r
+            {"parsec-per-decade", "de", nullptr, 2, u"2\u00A0Parsec pro Jahrzehnt"},\r
+            {"parsec-per-decade", "de", "dative", 2, u"2 Parsec pro Jahrzehnt"},\r
+\r
+            // Testing de "times", "power" and "prefix" rules:\r
+            //\r
+            //   <deriveComponent feature="plural" structure="times" value0="one"  value1="compound"/>\r
+            //   <deriveComponent feature="case" structure="times" value0="nominative"  value1="compound"/>\r
+            //\r
+            //   <deriveComponent feature="plural" structure="prefix" value0="one"  value1="compound"/>\r
+            //   <deriveComponent feature="case" structure="prefix" value0="nominative"  value1="compound"/>\r
+            //\r
+            // Prefixes in German don't change with plural or case, so these\r
+            // tests can't test value0 of the following two rules:\r
+            //   <deriveComponent feature="plural" structure="power" value0="one"  value1="compound"/>\r
+            //   <deriveComponent feature="case" structure="power" value0="nominative"  value1="compound"/>\r
+            {"square-decimeter-dekameter", "de", nullptr, 1, u"1 Quadratdezimeter⋅Dekameter"},\r
+            {"square-decimeter-dekameter", "de", "genitive", 1, u"1 Quadratdezimeter⋅Dekameters"},\r
+            {"square-decimeter-dekameter", "de", nullptr, 2, u"2 Quadratdezimeter⋅Dekameter"},\r
+            {"square-decimeter-dekameter", "de", "dative", 2, u"2 Quadratdezimeter⋅Dekametern"},\r
+            // Feminine "Meile" better demonstrates singular-vs-plural form:\r
+            {"cubic-mile-dekamile", "de", nullptr, 1, u"1 Kubikmeile⋅Dekameile"},\r
+            {"cubic-mile-dekamile", "de", nullptr, 2, u"2 Kubikmeile⋅Dekameilen"},\r
+\r
+            // French handles plural "times" and "power" structures differently:\r
+            // plural form impacts all "numerator" units (denominator remains\r
+            // singular like German), and "pow2" prefixes have different forms\r
+            //   <deriveComponent feature="plural" structure="times" value0="compound"  value1="compound"/>\r
+            //   <deriveComponent feature="plural" structure="power" value0="compound"  value1="compound"/>\r
+            {"square-decimeter-square-second", "fr", nullptr, 1, u"1\u00A0décimètre carré-seconde carrée"},\r
+            {"square-decimeter-square-second", "fr", nullptr, 2, u"2\u00A0décimètres carrés-secondes carrées"},\r
+        };\r
+        runUnitInflectionsTestCases(unf, skeleton, testCases, UPRV_LENGTHOF(testCases), status);\r
+    }\r
+    {\r
+        // Testing inflection of mixed units:\r
+        unf = NumberFormatter::with().unitWidth(UNUM_UNIT_WIDTH_FULL_NAME);\r
+        skeleton = u"unit-width-full-name";\r
+        const UnitInflectionTestCase testCases[] = {\r
+            {"meter", "de", nullptr, 1, u"1 Meter"},\r
+            {"meter", "de", "genitive", 1, u"1 Meters"},\r
+            {"meter", "de", "dative", 2, u"2 Metern"},\r
+            {"centimeter", "de", nullptr, 1, u"1 Zentimeter"},\r
+            {"centimeter", "de", "genitive", 1, u"1 Zentimeters"},\r
+            {"centimeter", "de", "dative", 10, u"10 Zentimetern"},\r
+            // TODO(CLDR-14502): check that these inflections are correct, and\r
+            // whether CLDR needs any rules for them (presumably CLDR spec\r
+            // should mention it, if it's a consistent rule):\r
+            {"meter-and-centimeter", "de", nullptr, 1.01, u"1 Meter, 1 Zentimeter"},\r
+            {"meter-and-centimeter", "de", "genitive", 1.01, u"1 Meters, 1 Zentimeters"},\r
+            {"meter-and-centimeter", "de", "genitive", 1.1, u"1 Meters, 10 Zentimeter"},\r
+            {"meter-and-centimeter", "de", "dative", 1.1, u"1 Meter, 10 Zentimetern"},\r
+            {"meter-and-centimeter", "de", "dative", 2.1, u"2 Metern, 10 Zentimetern"},\r
+        };\r
+        runUnitInflectionsTestCases(unf, skeleton, testCases, UPRV_LENGTHOF(testCases),\r
+                                    status);\r
+    }\r
+    // TODO: add a usage case that selects between preferences with different\r
+    // genders (e.g. year, month, day, hour).\r
+    // TODO: look at "↑↑↑" cases: check that inheritance is done right.\r
+}\r
+\r
+void NumberFormatterApiTest::unitGender() {\r
+    IcuTestErrorCode status(*this, "unitGender");\r
+\r
+    const struct TestCase {\r
+        const char *locale;\r
+        const char *unitIdentifier;\r
+        const char *expectedGender;\r
+    } cases[] = {\r
+        {"de", "inch", "masculine"},\r
+        {"de", "yard", "neuter"},\r
+        {"de", "meter", "masculine"},\r
+        {"de", "liter", "masculine"},\r
+        {"de", "second", "feminine"},\r
+        {"de", "minute", "feminine"},\r
+        {"de", "hour", "feminine"},\r
+        {"de", "day", "masculine"},\r
+        {"de", "year", "neuter"},\r
+        {"de", "gram", "neuter"},\r
+        {"de", "watt", "neuter"},\r
+        {"de", "bit", "neuter"},\r
+        {"de", "byte", "neuter"},\r
+\r
+        {"fr", "inch", "masculine"},\r
+        {"fr", "yard", "masculine"},\r
+        {"fr", "meter", "masculine"},\r
+        {"fr", "liter", "masculine"},\r
+        {"fr", "second", "feminine"},\r
+        {"fr", "minute", "feminine"},\r
+        {"fr", "hour", "feminine"},\r
+        {"fr", "day", "masculine"},\r
+        {"fr", "year", "masculine"},\r
+        {"fr", "gram", "masculine"},\r
+\r
+        // grammaticalFeatures deriveCompound "per" rule takes the gender of the\r
+        // numerator unit:\r
+        {"de", "meter-per-hour", "masculine"},\r
+        {"fr", "meter-per-hour", "masculine"},\r
+        {"af", "meter-per-hour", ""}, // ungendered language\r
+\r
+        // French "times" takes gender from first value, German takes the\r
+        // second. Prefix and power does not have impact on gender for these\r
+        // languages:\r
+        {"de", "square-decimeter-square-second", "feminine"},\r
+        {"fr", "square-decimeter-square-second", "masculine"},\r
+\r
+        // TODO(icu-units#149): percent and permille bypasses LongNameHandler\r
+        // when unitWidth is not FULL_NAME:\r
+        // // Gender of per-second might be that of percent? TODO(icu-units#28)\r
+        // {"de", "percent", "neuter"},\r
+        // {"fr", "percent", "masculine"},\r
+\r
+        // Built-in units whose simple units lack gender in the CLDR data file\r
+        {"de", "kilopascal", "neuter"},\r
+        {"fr", "kilopascal", "masculine"},\r
+        // {"de", "pascal", ""},\r
+        // {"fr", "pascal", ""},\r
+\r
+        // Built-in units that lack gender in the CLDR data file\r
+        // {"de", "revolution", ""},\r
+        // {"de", "radian", ""},\r
+        // {"de", "arc-minute", ""},\r
+        // {"de", "arc-second", ""},\r
+        {"de", "square-yard", "neuter"},    // POWER\r
+        {"de", "square-inch", "masculine"}, // POWER\r
+        // {"de", "dunam", ""},\r
+        // {"de", "karat", ""},\r
+        // {"de", "milligram-ofglucose-per-deciliter", ""}, // COMPOUND, ofglucose\r
+        // {"de", "millimole-per-liter", ""},               // COMPOUND, mole\r
+        // {"de", "permillion", ""},\r
+        // {"de", "permille", ""},\r
+        // {"de", "permyriad", ""},\r
+        // {"de", "mole", ""},\r
+        {"de", "liter-per-kilometer", "masculine"}, // COMPOUND\r
+        {"de", "petabyte", "neuter"},               // PREFIX\r
+        {"de", "terabit", "neuter"},                // PREFIX\r
+        // {"de", "century", ""},\r
+        // {"de", "decade", ""},\r
+        {"de", "millisecond", "feminine"}, // PREFIX\r
+        {"de", "microsecond", "feminine"}, // PREFIX\r
+        {"de", "nanosecond", "feminine"},  // PREFIX\r
+        // {"de", "ampere", ""},\r
+        // {"de", "milliampere", ""}, // PREFIX, ampere\r
+        // {"de", "ohm", ""},\r
+        // {"de", "calorie", ""},\r
+        // {"de", "kilojoule", ""}, // PREFIX, joule\r
+        // {"de", "joule", ""},\r
+        {"de", "kilowatt-hour", "feminine"}, // COMPOUND\r
+        // {"de", "electronvolt", ""},\r
+        // {"de", "british-thermal-unit", ""},\r
+        // {"de", "therm-us", ""},\r
+        // {"de", "pound-force", ""},\r
+        // {"de", "newton", ""},\r
+        // {"de", "gigahertz", ""}, // PREFIX, hertz\r
+        // {"de", "megahertz", ""}, // PREFIX, hertz\r
+        // {"de", "kilohertz", ""}, // PREFIX, hertz\r
+        // {"de", "hertz", ""},\r
+        // {"de", "em", ""},\r
+        // {"de", "pixel", ""},\r
+        // {"de", "megapixel", ""},\r
+        // {"de", "pixel-per-centimeter", ""}, // COMPOUND, pixel\r
+        // {"de", "pixel-per-inch", ""},       // COMPOUND, pixel\r
+        // {"de", "dot-per-centimeter", ""},   // COMPOUND, dot\r
+        // {"de", "dot-per-inch", ""},         // COMPOUND, dot\r
+        // {"de", "dot", ""},\r
+        // {"de", "earth-radius", ""},\r
+        {"de", "decimeter", "masculine"},  // PREFIX\r
+        {"de", "micrometer", "masculine"}, // PREFIX\r
+        {"de", "nanometer", "masculine"},  // PREFIX\r
+        // {"de", "light-year", ""},\r
+        // {"de", "astronomical-unit", ""},\r
+        // {"de", "furlong", ""},\r
+        // {"de", "fathom", ""},\r
+        // {"de", "nautical-mile", ""},\r
+        // {"de", "mile-scandinavian", ""},\r
+        // {"de", "point", ""},\r
+        // {"de", "lux", ""},\r
+        // {"de", "candela", ""},\r
+        // {"de", "lumen", ""},\r
+        // {"de", "metric-ton", ""},\r
+        // {"de", "microgram", "neuter"}, // PREFIX\r
+        // {"de", "ton", ""},\r
+        // {"de", "stone", ""},\r
+        // {"de", "ounce-troy", ""},\r
+        // {"de", "carat", ""},\r
+        {"de", "gigawatt", "neuter"},  // PREFIX\r
+        {"de", "milliwatt", "neuter"}, // PREFIX\r
+        // {"de", "horsepower", ""},\r
+        // {"de", "millimeter-ofhg", ""},\r
+        // {"de", "pound-force-per-square-inch", ""}, // COMPOUND, pound-force\r
+        // {"de", "inch-ofhg", ""},\r
+        // {"de", "bar", ""},\r
+        // {"de", "millibar", ""}, // PREFIX, bar\r
+        // {"de", "atmosphere", ""},\r
+        // {"de", "pascal", ""},      // PREFIX, kilopascal? neuter?\r
+        // {"de", "hectopascal", ""}, // PREFIX, pascal, neuter?\r
+        // {"de", "megapascal", ""},  // PREFIX, pascal, neuter?\r
+        // {"de", "knot", ""},\r
+        {"de", "pound-force-foot", "masculine"}, // COMPOUND\r
+        {"de", "newton-meter", "masculine"},     // COMPOUND\r
+        {"de", "cubic-kilometer", "masculine"},  // POWER\r
+        {"de", "cubic-yard", "neuter"},          // POWER\r
+        {"de", "cubic-inch", "masculine"},       // POWER\r
+        {"de", "megaliter", "masculine"},        // PREFIX\r
+        {"de", "hectoliter", "masculine"},       // PREFIX\r
+        // {"de", "pint-metric", ""},\r
+        // {"de", "cup-metric", ""},\r
+        {"de", "acre-foot", "masculine"}, // COMPOUND\r
+        // {"de", "bushel", ""},\r
+        // {"de", "barrel", ""},\r
+        // Units missing gender in German also misses gender in French:\r
+        // {"fr", "revolution", ""},\r
+        // {"fr", "radian", ""},\r
+        // {"fr", "arc-minute", ""},\r
+        // {"fr", "arc-second", ""},\r
+        {"fr", "square-yard", "masculine"}, // POWER\r
+        {"fr", "square-inch", "masculine"}, // POWER\r
+        // {"fr", "dunam", ""},\r
+        // {"fr", "karat", ""},\r
+        {"fr", "milligram-ofglucose-per-deciliter", "masculine"}, // COMPOUND\r
+        // {"fr", "millimole-per-liter", ""},                        // COMPOUND, mole\r
+        // {"fr", "permillion", ""},\r
+        // {"fr", "permille", ""},\r
+        // {"fr", "permyriad", ""},\r
+        // {"fr", "mole", ""},\r
+        {"fr", "liter-per-kilometer", "masculine"}, // COMPOUND\r
+        // {"fr", "petabyte", ""},                     // PREFIX\r
+        // {"fr", "terabit", ""},                      // PREFIX\r
+        // {"fr", "century", ""},\r
+        // {"fr", "decade", ""},\r
+        {"fr", "millisecond", "feminine"}, // PREFIX\r
+        {"fr", "microsecond", "feminine"}, // PREFIX\r
+        {"fr", "nanosecond", "feminine"},  // PREFIX\r
+        // {"fr", "ampere", ""},\r
+        // {"fr", "milliampere", ""}, // PREFIX, ampere\r
+        // {"fr", "ohm", ""},\r
+        // {"fr", "calorie", ""},\r
+        // {"fr", "kilojoule", ""}, // PREFIX, joule\r
+        // {"fr", "joule", ""},\r
+        // {"fr", "kilowatt-hour", ""}, // COMPOUND\r
+        // {"fr", "electronvolt", ""},\r
+        // {"fr", "british-thermal-unit", ""},\r
+        // {"fr", "therm-us", ""},\r
+        // {"fr", "pound-force", ""},\r
+        // {"fr", "newton", ""},\r
+        // {"fr", "gigahertz", ""}, // PREFIX, hertz\r
+        // {"fr", "megahertz", ""}, // PREFIX, hertz\r
+        // {"fr", "kilohertz", ""}, // PREFIX, hertz\r
+        // {"fr", "hertz", ""},\r
+        // {"fr", "em", ""},\r
+        // {"fr", "pixel", ""},\r
+        // {"fr", "megapixel", ""},\r
+        // {"fr", "pixel-per-centimeter", ""}, // COMPOUND, pixel\r
+        // {"fr", "pixel-per-inch", ""},       // COMPOUND, pixel\r
+        // {"fr", "dot-per-centimeter", ""},   // COMPOUND, dot\r
+        // {"fr", "dot-per-inch", ""},         // COMPOUND, dot\r
+        // {"fr", "dot", ""},\r
+        // {"fr", "earth-radius", ""},\r
+        {"fr", "decimeter", "masculine"},  // PREFIX\r
+        {"fr", "micrometer", "masculine"}, // PREFIX\r
+        {"fr", "nanometer", "masculine"},  // PREFIX\r
+        // {"fr", "light-year", ""},\r
+        // {"fr", "astronomical-unit", ""},\r
+        // {"fr", "furlong", ""},\r
+        // {"fr", "fathom", ""},\r
+        // {"fr", "nautical-mile", ""},\r
+        // {"fr", "mile-scandinavian", ""},\r
+        // {"fr", "point", ""},\r
+        // {"fr", "lux", ""},\r
+        // {"fr", "candela", ""},\r
+        // {"fr", "lumen", ""},\r
+        // {"fr", "metric-ton", ""},\r
+        // {"fr", "microgram", "masculine"}, // PREFIX\r
+        // {"fr", "ton", ""},\r
+        // {"fr", "stone", ""},\r
+        // {"fr", "ounce-troy", ""},\r
+        // {"fr", "carat", ""},\r
+        // {"fr", "gigawatt", ""}, // PREFIX\r
+        // {"fr", "milliwatt", ""},\r
+        // {"fr", "horsepower", ""},\r
+        {"fr", "millimeter-ofhg", "masculine"},\r
+        // {"fr", "pound-force-per-square-inch", ""}, // COMPOUND, pound-force\r
+        {"fr", "inch-ofhg", "masculine"},\r
+        // {"fr", "bar", ""},\r
+        // {"fr", "millibar", ""}, // PREFIX, bar\r
+        // {"fr", "atmosphere", ""},\r
+        // {"fr", "pascal", ""},      // PREFIX, kilopascal?\r
+        // {"fr", "hectopascal", ""}, // PREFIX, pascal\r
+        // {"fr", "megapascal", ""},  // PREFIX, pascal\r
+        // {"fr", "knot", ""},\r
+        // {"fr", "pound-force-foot", ""},\r
+        // {"fr", "newton-meter", ""},\r
+        {"fr", "cubic-kilometer", "masculine"}, // POWER\r
+        {"fr", "cubic-yard", "masculine"},      // POWER\r
+        {"fr", "cubic-inch", "masculine"},      // POWER\r
+        {"fr", "megaliter", "masculine"},       // PREFIX\r
+        {"fr", "hectoliter", "masculine"},      // PREFIX\r
+        // {"fr", "pint-metric", ""},\r
+        // {"fr", "cup-metric", ""},\r
+        {"fr", "acre-foot", "feminine"}, // COMPOUND\r
+        // {"fr", "bushel", ""},\r
+        // {"fr", "barrel", ""},\r
+        // Some more French units missing gender:\r
+        // {"fr", "degree", ""},\r
+        {"fr", "square-meter", "masculine"}, // POWER\r
+        // {"fr", "terabyte", ""},              // PREFIX, byte\r
+        // {"fr", "gigabyte", ""},              // PREFIX, byte\r
+        // {"fr", "gigabit", ""},               // PREFIX, bit\r
+        // {"fr", "megabyte", ""},              // PREFIX, byte\r
+        // {"fr", "megabit", ""},               // PREFIX, bit\r
+        // {"fr", "kilobyte", ""},              // PREFIX, byte\r
+        // {"fr", "kilobit", ""},               // PREFIX, bit\r
+        // {"fr", "byte", ""},\r
+        // {"fr", "bit", ""},\r
+        // {"fr", "volt", ""},\r
+        // {"fr", "watt", ""},\r
+        {"fr", "cubic-meter", "masculine"}, // POWER\r
+\r
+        // gender-lacking builtins within compound units\r
+        {"de", "newton-meter-per-second", "masculine"},\r
+\r
+        // TODO(ICU-21494): determine whether list genders behave as follows,\r
+        // and implement proper getListGender support (covering more than just\r
+        // two genders):\r
+        // // gender rule for lists of people: de "neutral", fr "maleTaints"\r
+        // {"de", "day-and-hour-and-minute", "neuter"},\r
+        // {"de", "hour-and-minute", "feminine"},\r
+        // {"fr", "day-and-hour-and-minute", "masculine"},\r
+        // {"fr", "hour-and-minute", "feminine"},\r
+    };\r
+    LocalizedNumberFormatter formatter;\r
+    FormattedNumber fn;\r
+    for (const TestCase &t : cases) {\r
+        formatter = NumberFormatter::with()\r
+                        .unit(MeasureUnit::forIdentifier(t.unitIdentifier, status))\r
+                        .locale(Locale(t.locale));\r
+        fn = formatter.formatDouble(1.1, status);\r
+        assertEquals(UnicodeString("Testing gender with default width, unit: ") + t.unitIdentifier +\r
+                         ", locale: " + t.locale,\r
+                     t.expectedGender, fn.getGender(status));\r
+        status.assertSuccess();\r
+\r
+        formatter = NumberFormatter::with()\r
+                        .unit(MeasureUnit::forIdentifier(t.unitIdentifier, status))\r
+                        .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME)\r
+                        .locale(Locale(t.locale));\r
+        fn = formatter.formatDouble(1.1, status);\r
+        assertEquals(UnicodeString("Testing gender with UNUM_UNIT_WIDTH_FULL_NAME, unit: ") +\r
+                         t.unitIdentifier + ", locale: " + t.locale,\r
+                     t.expectedGender, fn.getGender(status));\r
+        status.assertSuccess();\r
+    }\r
+\r
+    // Make sure getGender does not return garbage for genderless languages\r
+    formatter = NumberFormatter::with().locale(Locale::getEnglish());\r
+    fn = formatter.formatDouble(1.1, status);\r
+    status.assertSuccess();\r
+    assertEquals("getGender for a genderless language", "", fn.getGender(status));\r
+}\r
+\r
 void NumberFormatterApiTest::unitPercent() {\r
     assertFormatDescending(\r
             u"Percent",\r
@@ -1999,6 +2811,26 @@ void NumberFormatterApiTest::roundingFraction() {
             u"0.088",\r
             u"0.009",\r
             u"0.0");\r
+\r
+    assertFormatSingle(\r
+            u"Hide If Whole A",\r
+            u".00/w",\r
+            u".00/w",\r
+            NumberFormatter::with().precision(Precision::fixedFraction(2)\r
+                .trailingZeroDisplay(UNUM_TRAILING_ZERO_HIDE_IF_WHOLE)),\r
+            Locale::getEnglish(),\r
+            1.2,\r
+            "1.20");\r
+\r
+    assertFormatSingle(\r
+            u"Hide If Whole B",\r
+            u".00/w",\r
+            u".00/w",\r
+            NumberFormatter::with().precision(Precision::fixedFraction(2)\r
+                .trailingZeroDisplay(UNUM_TRAILING_ZERO_HIDE_IF_WHOLE)),\r
+            Locale::getEnglish(),\r
+            1,\r
+            "1");\r
 }\r
 \r
 void NumberFormatterApiTest::roundingFigures() {\r
@@ -2159,6 +2991,81 @@ void NumberFormatterApiTest::roundingFractionFigures() {
             Locale::getEnglish(),\r
             0.0999999,\r
             u"0.10");\r
+\r
+    assertFormatDescending(\r
+            u"FracSig withSignificantDigits RELAXED",\r
+            u"precision-integer/@#r",\r
+            u"./@#r",\r
+            NumberFormatter::with().precision(Precision::maxFraction(0)\r
+                .withSignificantDigits(1, 2, UNUM_ROUNDING_PRIORITY_RELAXED)),\r
+            Locale::getEnglish(),\r
+            u"87,650",\r
+            u"8,765",\r
+            u"876",\r
+            u"88",\r
+            u"8.8",\r
+            u"0.88",\r
+            u"0.088",\r
+            u"0.0088",\r
+            u"0");\r
+\r
+    assertFormatDescending(\r
+            u"FracSig withSignificantDigits STRICT",\r
+            u"precision-integer/@#s",\r
+            u"./@#",\r
+            NumberFormatter::with().precision(Precision::maxFraction(0)\r
+                .withSignificantDigits(1, 2, UNUM_ROUNDING_PRIORITY_STRICT)),\r
+            Locale::getEnglish(),\r
+            u"88,000",\r
+            u"8,800",\r
+            u"880",\r
+            u"88",\r
+            u"9",\r
+            u"1",\r
+            u"0",\r
+            u"0",\r
+            u"0");\r
+\r
+    assertFormatSingle(\r
+            u"FracSig withSignificantDigits Trailing Zeros RELAXED",\r
+            u".0/@@@r",\r
+            u".0/@@@r",\r
+            NumberFormatter::with().precision(Precision::fixedFraction(1)\r
+                .withSignificantDigits(3, 3, UNUM_ROUNDING_PRIORITY_RELAXED)),\r
+            Locale::getEnglish(),\r
+            1,\r
+            u"1.00");\r
+\r
+    // Trailing zeros are always retained:\r
+    assertFormatSingle(\r
+            u"FracSig withSignificantDigits Trailing Zeros STRICT",\r
+            u".0/@@@s",\r
+            u".0/@@@s",\r
+            NumberFormatter::with().precision(Precision::fixedFraction(1)\r
+                .withSignificantDigits(3, 3, UNUM_ROUNDING_PRIORITY_STRICT)),\r
+            Locale::getEnglish(),\r
+            1,\r
+            u"1.00");\r
+\r
+    assertFormatSingle(\r
+            u"FracSig withSignificantDigits at rounding boundary",\r
+            u"precision-integer/@@@s",\r
+            u"./@@@s",\r
+            NumberFormatter::with().precision(Precision::fixedFraction(0)\r
+                    .withSignificantDigits(3, 3, UNUM_ROUNDING_PRIORITY_STRICT)),\r
+            Locale::getEnglish(),\r
+            9.99,\r
+            u"10.0");\r
+\r
+    assertFormatSingle(\r
+            u"FracSig with Trailing Zero Display",\r
+            u".00/@@@*/w",\r
+            u".00/@@@+/w",\r
+            NumberFormatter::with().precision(Precision::fixedFraction(2).withMinDigits(3)\r
+                .trailingZeroDisplay(UNUM_TRAILING_ZERO_HIDE_IF_WHOLE)),\r
+            Locale::getEnglish(),\r
+            1,\r
+            u"1");\r
 }\r
 \r
 void NumberFormatterApiTest::roundingOther() {\r
@@ -2277,6 +3184,25 @@ void NumberFormatterApiTest::roundingOther() {
             u"CZK 0");\r
 \r
     assertFormatDescending(\r
+            u"Currency Standard with Trailing Zero Display",\r
+            u"currency/CZK precision-currency-standard/w",\r
+            u"currency/CZK precision-currency-standard/w",\r
+            NumberFormatter::with().precision(\r
+                        Precision::currency(UCurrencyUsage::UCURR_USAGE_STANDARD)\r
+                        .trailingZeroDisplay(UNUM_TRAILING_ZERO_HIDE_IF_WHOLE))\r
+                    .unit(CZK),\r
+            Locale::getEnglish(),\r
+            u"CZK 87,650",\r
+            u"CZK 8,765",\r
+            u"CZK 876.50",\r
+            u"CZK 87.65",\r
+            u"CZK 8.76",\r
+            u"CZK 0.88",\r
+            u"CZK 0.09",\r
+            u"CZK 0.01",\r
+            u"CZK 0");\r
+\r
+    assertFormatDescending(\r
             u"Currency Cash with Nickel Rounding",\r
             u"currency/CAD precision-currency-cash",\r
             u"currency/CAD precision-currency-cash",\r
@@ -3234,6 +4160,60 @@ void NumberFormatterApiTest::sign() {
             u"$0.00");\r
 \r
     assertFormatSingle(\r
+            u"Sign Negative Positive",\r
+            u"sign-negative",\r
+            u"+-",\r
+            NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_NEGATIVE),\r
+            Locale::getEnglish(),\r
+            444444,\r
+            u"444,444");\r
+\r
+    assertFormatSingle(\r
+            u"Sign Negative Negative",\r
+            u"sign-negative",\r
+            u"+-",\r
+            NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_NEGATIVE),\r
+            Locale::getEnglish(),\r
+            -444444,\r
+            u"-444,444");\r
+\r
+    assertFormatSingle(\r
+            u"Sign Negative Negative Zero",\r
+            u"sign-negative",\r
+            u"+-",\r
+            NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_NEGATIVE),\r
+            Locale::getEnglish(),\r
+            -0.0000001,\r
+            u"0");\r
+\r
+    assertFormatSingle(\r
+            u"Sign Accounting-Negative Positive",\r
+            u"currency/USD sign-accounting-negative",\r
+            u"currency/USD ()-",\r
+            NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE).unit(USD),\r
+            Locale::getEnglish(),\r
+            444444,\r
+            u"$444,444.00");\r
+        \r
+    assertFormatSingle(\r
+            u"Sign Accounting-Negative Negative",\r
+            u"currency/USD sign-accounting-negative",\r
+            u"currency/USD ()-",\r
+            NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE).unit(USD),\r
+            Locale::getEnglish(),\r
+            -444444,\r
+            "($444,444.00)");\r
+\r
+    assertFormatSingle(\r
+            u"Sign Accounting-Negative Negative Zero",\r
+            u"currency/USD sign-accounting-negative",\r
+            u"currency/USD ()-",\r
+            NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE).unit(USD),\r
+            Locale::getEnglish(),\r
+            -0.0000001,\r
+            u"$0.00");\r
+\r
+    assertFormatSingle(\r
             u"Sign Accounting Negative Hidden",\r
             u"currency/USD unit-width-hidden sign-accounting",\r
             u"currency/USD unit-width-hidden ()",\r
@@ -3322,6 +4302,12 @@ void NumberFormatterApiTest::signNearZero() {
         { UNUM_SIGN_EXCEPT_ZERO, -0.1, u"0" }, // interesting case\r
         { UNUM_SIGN_EXCEPT_ZERO, -0.9, u"-1" },\r
         { UNUM_SIGN_EXCEPT_ZERO, -1.1, u"-1" },\r
+        { UNUM_SIGN_NEGATIVE,  1.1, u"1" },\r
+        { UNUM_SIGN_NEGATIVE,  0.9, u"1" },\r
+        { UNUM_SIGN_NEGATIVE,  0.1, u"0" },\r
+        { UNUM_SIGN_NEGATIVE, -0.1, u"0" }, // interesting case\r
+        { UNUM_SIGN_NEGATIVE, -0.9, u"-1" },\r
+        { UNUM_SIGN_NEGATIVE, -1.1, u"-1" },\r
     };\r
     for (auto& cas : cases) {\r
         auto sign = cas.sign;\r
index 4565863..b1ec386 100644 (file)
@@ -27,10 +27,11 @@ void DecimalQuantityTest::runIndexedTest(int32_t index, UBool exec, const char *
         }\r
         TESTCASE_AUTO(testUseApproximateDoubleWhenAble);\r
         TESTCASE_AUTO(testHardDoubleConversion);\r
+        TESTCASE_AUTO(testFitsInLong);\r
         TESTCASE_AUTO(testToDouble);\r
         TESTCASE_AUTO(testMaxDigits);\r
         TESTCASE_AUTO(testNickelRounding);\r
-        TESTCASE_AUTO(testCompactDecimalSuppressedExponent);\r
+        TESTCASE_AUTO(testScientificAndCompactSuppressedExponent);\r
         TESTCASE_AUTO(testSuppressedExponentUnchangedByInitialScaling);\r
     TESTCASE_AUTO_END;\r
 }\r
@@ -357,6 +358,44 @@ void DecimalQuantityTest::testHardDoubleConversion() {
     }\r
 }\r
 \r
+void DecimalQuantityTest::testFitsInLong() {\r
+    IcuTestErrorCode status(*this, "testFitsInLong");\r
+    DecimalQuantity quantity;\r
+    quantity.setToInt(0);\r
+    assertTrue("Zero should fit", quantity.fitsInLong());\r
+    quantity.setToInt(42);\r
+    assertTrue("Small int should fit", quantity.fitsInLong());\r
+    quantity.setToDouble(0.1);\r
+    assertFalse("Fraction should not fit", quantity.fitsInLong());\r
+    quantity.setToDouble(42.1);\r
+    assertFalse("Fraction should not fit", quantity.fitsInLong());\r
+    quantity.setToLong(1000000);\r
+    assertTrue("Large low-precision int should fit", quantity.fitsInLong());\r
+    quantity.setToLong(1000000000000000000L);\r
+    assertTrue("10^19 should fit", quantity.fitsInLong());\r
+    quantity.setToLong(1234567890123456789L);\r
+    assertTrue("A number between 10^19 and max long should fit", quantity.fitsInLong());\r
+    quantity.setToLong(1234567890000000000L);\r
+    assertTrue("A number with trailing zeros less than max long should fit", quantity.fitsInLong());\r
+    quantity.setToLong(9223372026854775808L);\r
+    assertTrue("A number less than max long but with similar digits should fit",\r
+            quantity.fitsInLong());\r
+    quantity.setToLong(9223372036854775806L);\r
+    assertTrue("One less than max long should fit", quantity.fitsInLong());\r
+    quantity.setToLong(9223372036854775807L);\r
+    assertTrue("Max long should fit", quantity.fitsInLong());\r
+    assertEquals("Max long should equal toLong", 9223372036854775807L, quantity.toLong(false));\r
+    quantity.setToDecNumber("9223372036854775808", status);\r
+    assertFalse("One greater than max long should not fit", quantity.fitsInLong());\r
+    assertEquals("toLong(true) should truncate", 223372036854775808L, quantity.toLong(true));\r
+    quantity.setToDecNumber("9223372046854775806", status);\r
+    assertFalse("A number between max long and 10^20 should not fit", quantity.fitsInLong());\r
+    quantity.setToDecNumber("9223372046800000000", status);\r
+    assertFalse("A large 10^19 number with trailing zeros should not fit", quantity.fitsInLong());\r
+    quantity.setToDecNumber("10000000000000000000", status);\r
+    assertFalse("10^20 should not fit", quantity.fitsInLong());\r
+}\r
+\r
 void DecimalQuantityTest::testToDouble() {\r
     IcuTestErrorCode status(*this, "testToDouble");\r
     static const struct TestCase {\r
@@ -413,6 +452,9 @@ void DecimalQuantityTest::testNickelRounding() {
         {1.024, -2, UNUM_ROUND_HALFEVEN, u"1"},\r
         {1.025, -2, UNUM_ROUND_HALFEVEN, u"1"},\r
         {1.025, -2, UNUM_ROUND_HALFDOWN, u"1"},\r
+        {1.025, -2, UNUM_ROUND_HALF_ODD, u"1.05"},\r
+        {1.025, -2, UNUM_ROUND_HALF_CEILING, u"1.05"},\r
+        {1.025, -2, UNUM_ROUND_HALF_FLOOR, u"1"},\r
         {1.025, -2, UNUM_ROUND_HALFUP,   u"1.05"},\r
         {1.026, -2, UNUM_ROUND_HALFEVEN, u"1.05"},\r
         {1.030, -2, UNUM_ROUND_HALFEVEN, u"1.05"},\r
@@ -422,6 +464,9 @@ void DecimalQuantityTest::testNickelRounding() {
         {1.070, -2, UNUM_ROUND_HALFEVEN, u"1.05"},\r
         {1.074, -2, UNUM_ROUND_HALFEVEN, u"1.05"},\r
         {1.075, -2, UNUM_ROUND_HALFDOWN, u"1.05"},\r
+        {1.075, -2, UNUM_ROUND_HALF_ODD, u"1.05"},\r
+        {1.075, -2, UNUM_ROUND_HALF_CEILING, u"1.1"},\r
+        {1.075, -2, UNUM_ROUND_HALF_FLOOR, u"1.05"},\r
         {1.075, -2, UNUM_ROUND_HALFUP,   u"1.1"},\r
         {1.075, -2, UNUM_ROUND_HALFEVEN, u"1.1"},\r
         {1.076, -2, UNUM_ROUND_HALFEVEN, u"1.1"},\r
@@ -432,6 +477,9 @@ void DecimalQuantityTest::testNickelRounding() {
         {2.25, -1, UNUM_ROUND_HALFEVEN, u"2"},\r
         {2.25, -1, UNUM_ROUND_HALFUP,   u"2.5"},\r
         {2.75, -1, UNUM_ROUND_HALFDOWN, u"2.5"},\r
+        {2.75, -1, UNUM_ROUND_HALF_ODD, u"2.5"},\r
+        {2.75, -1, UNUM_ROUND_HALF_CEILING, u"3"},\r
+        {2.75, -1, UNUM_ROUND_HALF_FLOOR, u"2.5"},\r
         {2.75, -1, UNUM_ROUND_HALFEVEN, u"3"},\r
         {3.00, -1, UNUM_ROUND_CEILING, u"3"},\r
         {3.25, -1, UNUM_ROUND_CEILING, u"3.5"},\r
@@ -469,8 +517,8 @@ void DecimalQuantityTest::testNickelRounding() {
     status.expectErrorAndReset(U_FORMAT_INEXACT_ERROR);\r
 }\r
 \r
-void DecimalQuantityTest::testCompactDecimalSuppressedExponent() {\r
-    IcuTestErrorCode status(*this, "testCompactDecimalSuppressedExponent");\r
+void DecimalQuantityTest::testScientificAndCompactSuppressedExponent() {\r
+    IcuTestErrorCode status(*this, "testScientificAndCompactSuppressedExponent");\r
     Locale ulocale("fr-FR");\r
 \r
     struct TestCase {\r
@@ -480,53 +528,56 @@ void DecimalQuantityTest::testCompactDecimalSuppressedExponent() {
         int64_t expectedLong;\r
         double expectedDouble;\r
         const char16_t* expectedPlainString;\r
-        int32_t expectedSuppressedExponent;\r
+        int32_t expectedSuppressedScientificExponent;\r
+        int32_t expectedSuppressedCompactExponent;\r
     } cases[] = {\r
-        // unlocalized formatter skeleton, input, string output, long output, double output, BigDecimal output, plain string, suppressed exponent\r
-        {u"",              123456789, u"123 456 789",  123456789L, 123456789.0, u"123456789", 0},\r
-        {u"compact-long",  123456789, u"123 millions", 123000000L, 123000000.0, u"123000000", 6},\r
-        {u"compact-short", 123456789, u"123 M",        123000000L, 123000000.0, u"123000000", 6},\r
-        {u"scientific",    123456789, u"1,234568E8",   123456800L, 123456800.0, u"123456800", 8},\r
-\r
-        {u"",              1234567, u"1 234 567",   1234567L, 1234567.0, u"1234567", 0},\r
-        {u"compact-long",  1234567, u"1,2 million", 1200000L, 1200000.0, u"1200000", 6},\r
-        {u"compact-short", 1234567, u"1,2 M",       1200000L, 1200000.0, u"1200000", 6},\r
-        {u"scientific",    1234567, u"1,234567E6",  1234567L, 1234567.0, u"1234567", 6},\r
-\r
-        {u"",              123456, u"123 456",   123456L, 123456.0, u"123456", 0},\r
-        {u"compact-long",  123456, u"123 mille", 123000L, 123000.0, u"123000", 3},\r
-        {u"compact-short", 123456, u"123 k",     123000L, 123000.0, u"123000", 3},\r
-        {u"scientific",    123456, u"1,23456E5", 123456L, 123456.0, u"123456", 5},\r
-\r
-        {u"",              123, u"123",    123L, 123.0, u"123", 0},\r
-        {u"compact-long",  123, u"123",    123L, 123.0, u"123", 0},\r
-        {u"compact-short", 123, u"123",    123L, 123.0, u"123", 0},\r
-        {u"scientific",    123, u"1,23E2", 123L, 123.0, u"123", 2},\r
-\r
-        {u"",              1.2, u"1,2",   1L, 1.2, u"1.2", 0},\r
-        {u"compact-long",  1.2, u"1,2",   1L, 1.2, u"1.2", 0},\r
-        {u"compact-short", 1.2, u"1,2",   1L, 1.2, u"1.2", 0},\r
-        {u"scientific",    1.2, u"1,2E0", 1L, 1.2, u"1.2", 0},\r
-\r
-        {u"",              0.12, u"0,12",   0L, 0.12, u"0.12", 0},\r
-        {u"compact-long",  0.12, u"0,12",   0L, 0.12, u"0.12", 0},\r
-        {u"compact-short", 0.12, u"0,12",   0L, 0.12, u"0.12", 0},\r
-        {u"scientific",    0.12, u"1,2E-1", 0L, 0.12, u"0.12", -1},\r
-\r
-        {u"",              0.012, u"0,012",   0L, 0.012, u"0.012", 0},\r
-        {u"compact-long",  0.012, u"0,012",   0L, 0.012, u"0.012", 0},\r
-        {u"compact-short", 0.012, u"0,012",   0L, 0.012, u"0.012", 0},\r
-        {u"scientific",    0.012, u"1,2E-2",  0L, 0.012, u"0.012", -2},\r
-\r
-        {u"",              999.9, u"999,9",     999L,  999.9,  u"999.9", 0},\r
-        {u"compact-long",  999.9, u"1 millier", 1000L, 1000.0, u"1000",  3},\r
-        {u"compact-short", 999.9, u"1 k",       1000L, 1000.0, u"1000",  3},\r
-        {u"scientific",    999.9, u"9,999E2",   999L,  999.9,  u"999.9", 2},\r
-\r
-        {u"",              1000.0, u"1 000",     1000L, 1000.0, u"1000", 0},\r
-        {u"compact-long",  1000.0, u"1 millier", 1000L, 1000.0, u"1000", 3},\r
-        {u"compact-short", 1000.0, u"1 k",       1000L, 1000.0, u"1000", 3},\r
-        {u"scientific",    1000.0, u"1E3",       1000L, 1000.0, u"1000", 3},\r
+        // unlocalized formatter skeleton, input, string output, long output,\r
+        // double output, BigDecimal output, plain string,\r
+        // suppressed scientific exponent, suppressed compact exponent\r
+        {u"",              123456789, u"123 456 789",  123456789L, 123456789.0, u"123456789", 0, 0},\r
+        {u"compact-long",  123456789, u"123 millions", 123000000L, 123000000.0, u"123000000", 6, 6},\r
+        {u"compact-short", 123456789, u"123 M",        123000000L, 123000000.0, u"123000000", 6, 6},\r
+        {u"scientific",    123456789, u"1,234568E8",   123456800L, 123456800.0, u"123456800", 8, 8},\r
+\r
+        {u"",              1234567, u"1 234 567",   1234567L, 1234567.0, u"1234567", 0, 0},\r
+        {u"compact-long",  1234567, u"1,2 million", 1200000L, 1200000.0, u"1200000", 6, 6},\r
+        {u"compact-short", 1234567, u"1,2 M",       1200000L, 1200000.0, u"1200000", 6, 6},\r
+        {u"scientific",    1234567, u"1,234567E6",  1234567L, 1234567.0, u"1234567", 6, 6},\r
+\r
+        {u"",              123456, u"123 456",   123456L, 123456.0, u"123456", 0, 0},\r
+        {u"compact-long",  123456, u"123 mille", 123000L, 123000.0, u"123000", 3, 3},\r
+        {u"compact-short", 123456, u"123 k",     123000L, 123000.0, u"123000", 3, 3},\r
+        {u"scientific",    123456, u"1,23456E5", 123456L, 123456.0, u"123456", 5, 5},\r
+\r
+        {u"",              123, u"123",    123L, 123.0, u"123", 0, 0},\r
+        {u"compact-long",  123, u"123",    123L, 123.0, u"123", 0, 0},\r
+        {u"compact-short", 123, u"123",    123L, 123.0, u"123", 0, 0},\r
+        {u"scientific",    123, u"1,23E2", 123L, 123.0, u"123", 2, 2},\r
+\r
+        {u"",              1.2, u"1,2",   1L, 1.2, u"1.2", 0, 0},\r
+        {u"compact-long",  1.2, u"1,2",   1L, 1.2, u"1.2", 0, 0},\r
+        {u"compact-short", 1.2, u"1,2",   1L, 1.2, u"1.2", 0, 0},\r
+        {u"scientific",    1.2, u"1,2E0", 1L, 1.2, u"1.2", 0, 0},\r
+\r
+        {u"",              0.12, u"0,12",   0L, 0.12, u"0.12",  0,  0},\r
+        {u"compact-long",  0.12, u"0,12",   0L, 0.12, u"0.12",  0,  0},\r
+        {u"compact-short", 0.12, u"0,12",   0L, 0.12, u"0.12",  0,  0},\r
+        {u"scientific",    0.12, u"1,2E-1", 0L, 0.12, u"0.12", -1, -1},\r
+\r
+        {u"",              0.012, u"0,012",   0L, 0.012, u"0.012",  0,  0},\r
+        {u"compact-long",  0.012, u"0,012",   0L, 0.012, u"0.012",  0,  0},\r
+        {u"compact-short", 0.012, u"0,012",   0L, 0.012, u"0.012",  0,  0},\r
+        {u"scientific",    0.012, u"1,2E-2",  0L, 0.012, u"0.012", -2, -2},\r
+\r
+        {u"",              999.9, u"999,9",     999L,  999.9,  u"999.9", 0, 0},\r
+        {u"compact-long",  999.9, u"mille",     1000L, 1000.0, u"1000",  3, 3},\r
+        {u"compact-short", 999.9, u"1 k",       1000L, 1000.0, u"1000",  3, 3},\r
+        {u"scientific",    999.9, u"9,999E2",   999L,  999.9,  u"999.9", 2, 2},\r
+\r
+        {u"",              1000.0, u"1 000",     1000L, 1000.0, u"1000", 0, 0},\r
+        {u"compact-long",  1000.0, u"mille",     1000L, 1000.0, u"1000", 3, 3},\r
+        {u"compact-short", 1000.0, u"1 k",       1000L, 1000.0, u"1000", 3, 3},\r
+        {u"scientific",    1000.0, u"1E3",       1000L, 1000.0, u"1000", 3, 3},\r
     };\r
     for (const auto& cas : cases) {\r
         // test the helper methods used to compute plural operand values\r
@@ -541,18 +592,19 @@ void DecimalQuantityTest::testCompactDecimalSuppressedExponent() {
         int64_t actualLong = dq.toLong();\r
         double actualDouble = dq.toDouble();\r
         UnicodeString actualPlainString = dq.toPlainString();\r
-        int32_t actualSuppressedExponent = dq.getExponent();\r
+        int32_t actualSuppressedScientificExponent = dq.getExponent();\r
+        int32_t actualSuppressedCompactExponent = dq.getExponent();\r
 \r
         assertEquals(\r
                 u"formatted number " + cas.skeleton + u" toString: " + cas.input,\r
                 cas.expectedString,\r
                 actualString);\r
         assertEquals(\r
-                u"compact decimal " + cas.skeleton + u" toLong: " + cas.input,\r
+                u"formatted number " + cas.skeleton + u" toLong: " + cas.input,\r
                 cas.expectedLong,\r
                 actualLong);\r
         assertDoubleEquals(\r
-                u"compact decimal " + cas.skeleton + u" toDouble: " + cas.input,\r
+                u"formatted number " + cas.skeleton + u" toDouble: " + cas.input,\r
                 cas.expectedDouble,\r
                 actualDouble);\r
         assertEquals(\r
@@ -560,36 +612,46 @@ void DecimalQuantityTest::testCompactDecimalSuppressedExponent() {
                 cas.expectedPlainString,\r
                 actualPlainString);\r
         assertEquals(\r
-                u"compact decimal " + cas.skeleton + u" suppressed exponent: " + cas.input,\r
-                cas.expectedSuppressedExponent,\r
-                actualSuppressedExponent);\r
+                u"formatted number " + cas.skeleton + u" suppressed scientific exponent: " + cas.input,\r
+                cas.expectedSuppressedScientificExponent,\r
+                actualSuppressedScientificExponent);\r
+        assertEquals(\r
+                u"formatted number " + cas.skeleton + u" suppressed compact exponent: " + cas.input,\r
+                cas.expectedSuppressedCompactExponent,\r
+                actualSuppressedCompactExponent);\r
 \r
         // test the actual computed values of the plural operands\r
 \r
         double expectedNOperand = cas.expectedDouble;\r
         double expectedIOperand = cas.expectedLong;\r
-        double expectedEOperand = cas.expectedSuppressedExponent;\r
+        double expectedEOperand = cas.expectedSuppressedScientificExponent;\r
+        double expectedCOperand = cas.expectedSuppressedCompactExponent;\r
         double actualNOperand = dq.getPluralOperand(PLURAL_OPERAND_N);\r
         double actualIOperand = dq.getPluralOperand(PLURAL_OPERAND_I);\r
         double actualEOperand = dq.getPluralOperand(PLURAL_OPERAND_E);\r
+        double actualCOperand = dq.getPluralOperand(PLURAL_OPERAND_C);\r
 \r
         assertDoubleEquals(\r
-                u"compact decimal " + cas.skeleton + u" n operand: " + cas.input,\r
+                u"formatted number " + cas.skeleton + u" n operand: " + cas.input,\r
                 expectedNOperand,\r
                 actualNOperand);\r
         assertDoubleEquals(\r
-                u"compact decimal " + cas.skeleton + u" i operand: " + cas.input,\r
+                u"formatted number " + cas.skeleton + u" i operand: " + cas.input,\r
                 expectedIOperand,\r
                 actualIOperand);\r
         assertDoubleEquals(\r
-                u"compact decimal " + cas.skeleton + " e operand: " + cas.input,\r
+                u"formatted number " + cas.skeleton + " e operand: " + cas.input,\r
                 expectedEOperand,\r
                 actualEOperand);\r
+        assertDoubleEquals(\r
+                u"formatted number " + cas.skeleton + " c operand: " + cas.input,\r
+                expectedCOperand,\r
+                actualCOperand);\r
     }\r
 }\r
 \r
 void DecimalQuantityTest::testSuppressedExponentUnchangedByInitialScaling() {\r
-    IcuTestErrorCode status(*this, "testCompactDecimalSuppressedExponent");\r
+    IcuTestErrorCode status(*this, "testSuppressedExponentUnchangedByInitialScaling");\r
     Locale ulocale("fr-FR");\r
     LocalizedNumberFormatter withLocale = NumberFormatter::withLocale(ulocale);\r
     LocalizedNumberFormatter compactLong =\r
@@ -603,20 +665,22 @@ void DecimalQuantityTest::testSuppressedExponentUnchangedByInitialScaling() {
         double expectedNOperand;\r
         double expectedIOperand;\r
         double expectedEOperand;\r
+        double expectedCOperand;\r
     } cases[] = {\r
         // input, compact long string output,\r
-        // compact n operand, compact i operand, compact e operand\r
-        {123456789, "123 millions", 123000000.0, 123000000.0, 6.0},\r
-        {1234567,   "1,2 million",  1200000.0,   1200000.0,   6.0},\r
-        {123456,    "123 mille",    123000.0,    123000.0,    3.0},\r
-        {123,       "123",          123.0,       123.0,       0.0},\r
+        // compact n operand, compact i operand, compact e operand,\r
+        // compact c operand\r
+        {123456789, "123 millions", 123000000.0, 123000000.0, 6.0, 6.0},\r
+        {1234567,   "1,2 million",  1200000.0,   1200000.0,   6.0, 6.0},\r
+        {123456,    "123 mille",    123000.0,    123000.0,    3.0, 3.0},\r
+        {123,       "123",          123.0,       123.0,       0.0, 0.0},\r
     };\r
 \r
     for (const auto& cas : cases) {\r
         FormattedNumber fnCompactScaled = compactScaled.formatInt(cas.input, status);\r
         DecimalQuantity dqCompactScaled;\r
         fnCompactScaled.getDecimalQuantity(dqCompactScaled, status);\r
-        double compactScaledEOperand = dqCompactScaled.getPluralOperand(PLURAL_OPERAND_E);\r
+        double compactScaledCOperand = dqCompactScaled.getPluralOperand(PLURAL_OPERAND_C);\r
 \r
         FormattedNumber fnCompact = compactLong.formatInt(cas.input, status);\r
         DecimalQuantity dqCompact;\r
@@ -625,6 +689,7 @@ void DecimalQuantityTest::testSuppressedExponentUnchangedByInitialScaling() {
         double compactNOperand = dqCompact.getPluralOperand(PLURAL_OPERAND_N);\r
         double compactIOperand = dqCompact.getPluralOperand(PLURAL_OPERAND_I);\r
         double compactEOperand = dqCompact.getPluralOperand(PLURAL_OPERAND_E);\r
+        double compactCOperand = dqCompact.getPluralOperand(PLURAL_OPERAND_C);\r
         assertEquals(\r
                 u"formatted number " + Int64ToUnicodeString(cas.input) + " compactLong toString: ",\r
                 cas.expectedString,\r
@@ -641,14 +706,18 @@ void DecimalQuantityTest::testSuppressedExponentUnchangedByInitialScaling() {
                 u"compact decimal " + DoubleToUnicodeString(cas.input) + ", e operand vs. expected",\r
                 cas.expectedEOperand,\r
                 compactEOperand);\r
+        assertDoubleEquals(\r
+                u"compact decimal " + DoubleToUnicodeString(cas.input) + ", c operand vs. expected",\r
+                cas.expectedCOperand,\r
+                compactCOperand);\r
 \r
         // By scaling by 10^3 in a locale that has words / compact notation\r
         // based on powers of 10^3, we guarantee that the suppressed\r
         // exponent will differ by 3.\r
         assertDoubleEquals(\r
-                u"decimal " + DoubleToUnicodeString(cas.input) + ", e operand for compact vs. compact scaled",\r
-                compactEOperand + 3,\r
-                compactScaledEOperand);\r
+                u"decimal " + DoubleToUnicodeString(cas.input) + ", c operand for compact vs. compact scaled",\r
+                compactCOperand + 3,\r
+                compactScaledCOperand);\r
     }\r
 }\r
 \r
index 5c7b13e..a031263 100644 (file)
@@ -740,18 +740,19 @@ void NumberRangeFormatterTest::testFieldPositions() {
             3000,\r
             5000,\r
             expectedString);\r
-        static const UFieldPosition expectedFieldPositions[] = {\r
-            // field, begin index, end index\r
-            {UNUM_INTEGER_FIELD, 0, 1},\r
-            {UNUM_COMPACT_FIELD, 1, 2},\r
-            {UNUM_INTEGER_FIELD, 5, 6},\r
-            {UNUM_COMPACT_FIELD, 6, 7},\r
-            {UNUM_MEASURE_UNIT_FIELD, 8, 9}};\r
-        checkFormattedValue(\r
+        static const UFieldPositionWithCategory expectedFieldPositions[] = {\r
+            // category, field, begin index, end index\r
+            {UFIELD_CATEGORY_NUMBER_RANGE_SPAN, 0, 0, 2},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD, 0, 1},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_COMPACT_FIELD, 1, 2},\r
+            {UFIELD_CATEGORY_NUMBER_RANGE_SPAN, 1, 5, 7},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD, 5, 6},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_COMPACT_FIELD, 6, 7},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_MEASURE_UNIT_FIELD, 8, 9}};\r
+        checkMixedFormattedValue(\r
             message,\r
             result,\r
             expectedString,\r
-            UFIELD_CATEGORY_NUMBER,\r
             expectedFieldPositions,\r
             UPRV_LENGTHOF(expectedFieldPositions));\r
     }\r
@@ -765,19 +766,20 @@ void NumberRangeFormatterTest::testFieldPositions() {
             87654321,\r
             98765432,\r
             expectedString);\r
-        static const UFieldPosition expectedFieldPositions[] = {\r
-            // field, begin index, end index\r
-            {UNUM_GROUPING_SEPARATOR_FIELD, 2, 3},\r
-            {UNUM_GROUPING_SEPARATOR_FIELD, 6, 7},\r
-            {UNUM_INTEGER_FIELD, 0, 10},\r
-            {UNUM_GROUPING_SEPARATOR_FIELD, 13, 14},\r
-            {UNUM_GROUPING_SEPARATOR_FIELD, 17, 18},\r
-            {UNUM_INTEGER_FIELD, 11, 21}};\r
-        checkFormattedValue(\r
+        static const UFieldPositionWithCategory expectedFieldPositions[] = {\r
+            // category, field, begin index, end index\r
+            {UFIELD_CATEGORY_NUMBER_RANGE_SPAN, 0, 0, 10},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_GROUPING_SEPARATOR_FIELD, 2, 3},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_GROUPING_SEPARATOR_FIELD, 6, 7},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD, 0, 10},\r
+            {UFIELD_CATEGORY_NUMBER_RANGE_SPAN, 1, 11, 21},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_GROUPING_SEPARATOR_FIELD, 13, 14},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_GROUPING_SEPARATOR_FIELD, 17, 18},\r
+            {UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD, 11, 21}};\r
+        checkMixedFormattedValue(\r
             message,\r
             result,\r
             expectedString,\r
-            UFIELD_CATEGORY_NUMBER,\r
             expectedFieldPositions,\r
             UPRV_LENGTHOF(expectedFieldPositions));\r
     }\r
index 3022374..5d3b217 100644 (file)
@@ -46,18 +46,28 @@ void NumberSkeletonTest::validTokens() {
             u"@@@##",\r
             u"@@*",\r
             u"@@+",\r
+            u"@@+/w",\r
             u".000##",\r
             u".00*",\r
             u".00+",\r
             u".",\r
+            u"./w",\r
             u".*",\r
             u".+",\r
+            u".+/w",\r
             u".######",\r
             u".00/@@*",\r
             u".00/@@+",\r
             u".00/@##",\r
+            u".00/@##/w",\r
+            u".00/@",\r
+            u".00/@r",\r
+            u".00/@@s",\r
+            u".00/@@#r",\r
             u"precision-increment/3.14",\r
+            u"precision-increment/3.14/w",\r
             u"precision-currency-standard",\r
+            u"precision-currency-standard/w",\r
             u"precision-integer rounding-mode-half-up",\r
             u".00# rounding-mode-ceiling",\r
             u".00/@@* rounding-mode-floor",\r
@@ -148,6 +158,9 @@ void NumberSkeletonTest::validTokens() {
 void NumberSkeletonTest::invalidTokens() {\r
     static const char16_t* cases[] = {\r
             u".00x",\r
+            u".00i",\r
+            u".00/x",\r
+            u".00/ww",\r
             u".00##0",\r
             u".##*",\r
             u".00##*",\r
@@ -159,13 +172,13 @@ void NumberSkeletonTest::invalidTokens() {
             u"@#+",\r
             u"@@x",\r
             u"@@##0",\r
-            u".00/@",\r
             u".00/@@",\r
             u".00/@@x",\r
             u".00/@@#",\r
             u".00/@@#*",\r
             u".00/floor/@@*", // wrong order\r
             u".00/@@#+",\r
+            u".00/@@@+r",\r
             u".00/floor/@@+", // wrong order\r
             u"precision-increment/français", // non-invariant characters for C++\r
             u"scientific/ee",\r
@@ -222,6 +235,7 @@ void NumberSkeletonTest::unknownTokens() {
 \r
 void NumberSkeletonTest::unexpectedTokens() {\r
     static const char16_t* cases[] = {\r
+            u".00/w/w",\r
             u"group-thousands/foo",\r
             u"precision-integer//@## group-off",\r
             u"precision-integer//@##  group-off",\r
@@ -337,7 +351,6 @@ void NumberSkeletonTest::wildcardCharacters() {
     } cases[] = {\r
         { u".00*", u".00+" },\r
         { u"@@*", u"@@+" },\r
-        { u".00/@@*", u".00/@@+" },\r
         { u"scientific/*ee", u"scientific/+ee" },\r
         { u"integer-width/*00", u"integer-width/+00" },\r
     };\r
index 2880fb9..ba790bf 100644 (file)
@@ -248,6 +248,7 @@ void NumberFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &n
   TESTCASE_AUTO(Test21134_ToNumberFormatter);\r
   TESTCASE_AUTO(Test13733_StrictAndLenient);\r
   TESTCASE_AUTO(Test21232_ParseTimeout);\r
+  TESTCASE_AUTO(Test10997_FormatCurrency);\r
   TESTCASE_AUTO_END;\r
 }\r
 \r
@@ -9183,7 +9184,7 @@ void NumberFormatTest::Test13055_PercentageRounding() {
   pFormat->format(2.155, actual);\r
   assertEquals("Should round percent toward even number", "216%", actual);\r
 }\r
-  \r
+\r
 void NumberFormatTest::Test11839() {\r
     IcuTestErrorCode errorCode(*this, "Test11839");\r
     // Ticket #11839: DecimalFormat does not respect custom plus sign\r
@@ -10063,4 +10064,30 @@ void NumberFormatTest::Test21232_ParseTimeout() {
     // Should not hang\r
 }\r
 \r
+void NumberFormatTest::Test10997_FormatCurrency() {\r
+    IcuTestErrorCode status(*this, "Test10997_FormatCurrency");\r
+\r
+    UErrorCode error = U_ZERO_ERROR;\r
+    NumberFormat* fmt = NumberFormat::createCurrencyInstance(Locale::getUS(), error);\r
+    if (U_FAILURE(error)) {\r
+        return;\r
+    }\r
+    fmt->setMinimumFractionDigits(4);\r
+    fmt->setMaximumFractionDigits(4);\r
+\r
+    FieldPosition fp;\r
+\r
+    UnicodeString str;\r
+    Formattable usdAmnt(new CurrencyAmount(123.45, u"USD", status));\r
+    fmt->format(usdAmnt, str, fp, status);\r
+    assertEquals("minFrac 4 should be respected in default currency", u"$123.4500", str);\r
+\r
+    UnicodeString str2;\r
+    Formattable eurAmnt(new CurrencyAmount(123.45, u"EUR", status));\r
+    fmt->format(eurAmnt, str2, fp, status);\r
+    assertEquals("minFrac 4 should be respected in different currency", u"€123.4500", str2);\r
+\r
+    delete fmt;\r
+}\r
+\r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
index d3784d9..a4ca381 100644 (file)
@@ -304,6 +304,7 @@ class NumberFormatTest: public CalendarTimeZoneTest {
     void Test21134_ToNumberFormatter();\r
     void Test13733_StrictAndLenient();\r
     void Test21232_ParseTimeout();\r
+    void Test10997_FormatCurrency();\r
 \r
  private:\r
     UBool testFormattableAsUFormattable(const char *file, int line, Formattable &f);\r
index cfad4f0..c497b21 100644 (file)
@@ -52,13 +52,15 @@ void PluralRulesTest::runIndexedTest( int32_t index, UBool exec, const char* &na
     TESTCASE_AUTO(testGetSamples);\r
     TESTCASE_AUTO(testGetFixedDecimalSamples);\r
     TESTCASE_AUTO(testSamplesWithExponent);\r
+    TESTCASE_AUTO(testSamplesWithCompactNotation);\r
     TESTCASE_AUTO(testWithin);\r
     TESTCASE_AUTO(testGetAllKeywordValues);\r
+    TESTCASE_AUTO(testScientificPluralKeyword);\r
     TESTCASE_AUTO(testCompactDecimalPluralKeyword);\r
     TESTCASE_AUTO(testOrdinal);\r
     TESTCASE_AUTO(testSelect);\r
     TESTCASE_AUTO(testSelectRange);\r
-    TESTCASE_AUTO(testAvailbleLocales);\r
+    TESTCASE_AUTO(testAvailableLocales);\r
     TESTCASE_AUTO(testParseErrors);\r
     TESTCASE_AUTO(testFixedDecimal);\r
     TESTCASE_AUTO(testSelectTrailingZeros);\r
@@ -404,7 +406,7 @@ void PluralRulesTest::testGetSamples() {
     double values[1000];\r
     for (int32_t i = 0; U_SUCCESS(status) && i < numLocales; ++i) {\r
         if (uprv_strcmp(locales[i].getLanguage(), "fr") == 0 &&\r
-                logKnownIssue("21299", "PluralRules::getSamples cannot distinguish 1e5 from 100000")) {\r
+                logKnownIssue("21322", "PluralRules::getSamples cannot distinguish 1e5 from 100000")) {\r
             continue;\r
         }\r
         LocalPointer<PluralRules> rules(PluralRules::forLocale(locales[i], status));\r
@@ -465,7 +467,7 @@ void PluralRulesTest::testGetFixedDecimalSamples() {
     FixedDecimal values[1000];\r
     for (int32_t i = 0; U_SUCCESS(status) && i < numLocales; ++i) {\r
         if (uprv_strcmp(locales[i].getLanguage(), "fr") == 0 &&\r
-                logKnownIssue("21299", "PluralRules::getSamples cannot distinguish 1e5 from 100000")) {\r
+                logKnownIssue("21322", "PluralRules::getSamples cannot distinguish 1e5 from 100000")) {\r
             continue;\r
         }\r
         LocalPointer<PluralRules> rules(PluralRules::forLocale(locales[i], status));\r
@@ -551,6 +553,44 @@ void PluralRulesTest::testSamplesWithExponent() {
     checkNewSamples(description2, test2, u"other", u"@decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1e5, 3.1e5, 4.1e5, 5.1e5, 6.1e5, 7.1e5, …", FixedDecimal(2.0, 1));\r
 }\r
 \r
+\r
+void PluralRulesTest::testSamplesWithCompactNotation() {\r
+    // integer samples\r
+    UErrorCode status = U_ZERO_ERROR;\r
+    UnicodeString description(\r
+        u"one: i = 0,1 @integer 0, 1, 1c5 @decimal 0.0~1.5, 1.1c5; "\r
+        u"many: c = 0 and i != 0 and i % 1000000 = 0 and v = 0 or c != 0..5"\r
+        u" @integer 1000000, 2c6, 3c6, 4c6, 5c6, 6c6, 7c6, … @decimal 2.1c6, 3.1c6, 4.1c6, 5.1c6, 6.1c6, 7.1c6, …; "\r
+        u"other:  @integer 2~17, 100, 1000, 10000, 100000, 2c5, 3c5, 4c5, 5c5, 6c5, 7c5, …"\r
+        u" @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1c5, 3.1c5, 4.1c5, 5.1c5, 6.1c5, 7.1c5, …"\r
+    );\r
+    LocalPointer<PluralRules> test(PluralRules::createRules(description, status));\r
+    if (U_FAILURE(status)) {\r
+        errln("Couldn't create plural rules from a string using exponent notation, with error = %s", u_errorName(status));\r
+        return;\r
+    }\r
+    checkNewSamples(description, test, u"one", u"@integer 0, 1, 1c5", FixedDecimal(0));\r
+    checkNewSamples(description, test, u"many", u"@integer 1000000, 2c6, 3c6, 4c6, 5c6, 6c6, 7c6, …", FixedDecimal(1000000));\r
+    checkNewSamples(description, test, u"other", u"@integer 2~17, 100, 1000, 10000, 100000, 2c5, 3c5, 4c5, 5c5, 6c5, 7c5, …", FixedDecimal(2));\r
+\r
+    // decimal samples\r
+    status = U_ZERO_ERROR;\r
+    UnicodeString description2(\r
+        u"one: i = 0,1 @decimal 0.0~1.5, 1.1c5; "\r
+        u"many: c = 0 and i != 0 and i % 1000000 = 0 and v = 0 or c != 0..5"\r
+        u" @decimal 2.1c6, 3.1c6, 4.1c6, 5.1c6, 6.1c6, 7.1c6, …; "\r
+        u"other:  @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1c5, 3.1c5, 4.1c5, 5.1c5, 6.1c5, 7.1c5, …"\r
+    );\r
+    LocalPointer<PluralRules> test2(PluralRules::createRules(description2, status));\r
+    if (U_FAILURE(status)) {\r
+        errln("Couldn't create plural rules from a string using exponent notation, with error = %s", u_errorName(status));\r
+        return;\r
+    }\r
+    checkNewSamples(description2, test2, u"one", u"@decimal 0.0~1.5, 1.1c5", FixedDecimal(0, 1));\r
+    checkNewSamples(description2, test2, u"many", u"@decimal 2.1c6, 3.1c6, 4.1c6, 5.1c6, 6.1c6, 7.1c6, …", FixedDecimal::createWithExponent(2.1, 1, 6));\r
+    checkNewSamples(description2, test2, u"other", u"@decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1c5, 3.1c5, 4.1c5, 5.1c5, 6.1c5, 7.1c5, …", FixedDecimal(2.0, 1));\r
+}\r
+\r
 void PluralRulesTest::checkNewSamples(\r
         UnicodeString description, \r
         const LocalPointer<PluralRules> &test,\r
@@ -727,13 +767,77 @@ PluralRulesTest::testGetAllKeywordValues() {
     }\r
 }\r
 \r
+// For the time being, the  compact notation exponent operand `c` is an alias\r
+// for the scientific exponent operand `e` and compact notation.\r
+void\r
+PluralRulesTest::testScientificPluralKeyword() {\r
+    IcuTestErrorCode errorCode(*this, "testScientificPluralKeyword");\r
+\r
+    LocalPointer<PluralRules> rules(PluralRules::createRules(\r
+        u"one: i = 0,1 @integer 0, 1 @decimal 0.0~1.5;  "\r
+        u"many: e = 0 and i % 1000000 = 0 and v = 0 or e != 0 .. 5;  "\r
+        u"other:  @integer 2~17, 100, 1000, 10000, 100000, 1000000,  "\r
+        u"  @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", errorCode));\r
+\r
+    if (U_FAILURE(errorCode)) {\r
+        errln("Couldn't instantiate plurals rules from string, with error = %s", u_errorName(errorCode));\r
+        return;\r
+    }\r
+\r
+    const char* localeName = "fr-FR";\r
+    Locale locale = Locale::createFromName(localeName);\r
+\r
+    struct TestCase {\r
+        const char16_t* skeleton;\r
+        const int input;\r
+        const char16_t* expectedFormattedOutput;\r
+        const char16_t* expectedPluralRuleKeyword;\r
+    } cases[] = {\r
+        // unlocalized formatter skeleton, input, string output, plural rule keyword\r
+        {u"",           0, u"0", u"one"},\r
+        {u"scientific", 0, u"0", u"one"},\r
+\r
+        {u"",           1, u"1", u"one"},\r
+        {u"scientific", 1, u"1", u"one"},\r
+\r
+        {u"",           2, u"2", u"other"},\r
+        {u"scientific", 2, u"2", u"other"},\r
+\r
+        {u"",           1000000, u"1 000 000", u"many"},\r
+        {u"scientific", 1000000, u"1 million", u"many"},\r
+\r
+        {u"",           1000001, u"1 000 001", u"other"},\r
+        {u"scientific", 1000001, u"1 million", u"many"},\r
+\r
+        {u"",           120000,  u"1 200 000",    u"other"},\r
+        {u"scientific", 1200000, u"1,2 millions", u"many"},\r
+\r
+        {u"",           1200001, u"1 200 001",    u"other"},\r
+        {u"scientific", 1200001, u"1,2 millions", u"many"},\r
+\r
+        {u"",           2000000, u"2 000 000",  u"many"},\r
+        {u"scientific", 2000000, u"2 millions", u"many"},\r
+    };\r
+    for (const auto& cas : cases) {\r
+        const char16_t* skeleton = cas.skeleton;\r
+        const int input = cas.input;\r
+        const char16_t* expectedPluralRuleKeyword = cas.expectedPluralRuleKeyword;\r
+\r
+        UnicodeString actualPluralRuleKeyword =\r
+            getPluralKeyword(rules, locale, input, skeleton);\r
+\r
+        UnicodeString message(UnicodeString(localeName) + u" " + DoubleToUnicodeString(input));\r
+        assertEquals(message, expectedPluralRuleKeyword, actualPluralRuleKeyword);\r
+    }\r
+}\r
+\r
 void\r
 PluralRulesTest::testCompactDecimalPluralKeyword() {\r
     IcuTestErrorCode errorCode(*this, "testCompactDecimalPluralKeyword");\r
 \r
     LocalPointer<PluralRules> rules(PluralRules::createRules(\r
         u"one: i = 0,1 @integer 0, 1 @decimal 0.0~1.5;  "\r
-        u"many: e = 0 and i % 1000000 = 0 and v = 0 or e != 0 .. 5;  "\r
+        u"many: c = 0 and i % 1000000 = 0 and v = 0 or c != 0 .. 5;  "\r
         u"other:  @integer 2~17, 100, 1000, 10000, 100000, 1000000,  "\r
         u"  @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", errorCode));\r
 \r
@@ -1099,7 +1203,7 @@ void PluralRulesTest::testSelectRange() {
 }\r
 \r
 \r
-void PluralRulesTest::testAvailbleLocales() {\r
+void PluralRulesTest::testAvailableLocales() {\r
     \r
     // Hash set of (char *) strings.\r
     UErrorCode status = U_ZERO_ERROR;\r
index 96ecf13..4d92742 100644 (file)
@@ -32,13 +32,15 @@ private:
     void testGetSamples();\r
     void testGetFixedDecimalSamples();\r
     void testSamplesWithExponent();\r
+    void testSamplesWithCompactNotation();\r
     void testWithin();\r
     void testGetAllKeywordValues();\r
     void testCompactDecimalPluralKeyword();\r
+    void testScientificPluralKeyword();\r
     void testOrdinal();\r
     void testSelect();\r
     void testSelectRange();\r
-    void testAvailbleLocales();\r
+    void testAvailableLocales();\r
     void testParseErrors();\r
     void testFixedDecimal();\r
     void testSelectTrailingZeros();\r
index 6a9c83f..9686a38 100644 (file)
@@ -551,7 +551,7 @@ void RBBIAPITest::TestIteration()
     //\r
     bi->first();\r
     if (bi->isBoundary(3) != TRUE) {\r
-        errln("%s:%d Incorrect value from bi->isBoudary().  Expected TRUE, got FALSE", __FILE__, __LINE__, i);\r
+        errln("%s:%d Incorrect value from bi->isBoundary().  Expected TRUE, got FALSE", __FILE__, __LINE__, i);\r
     }\r
     i = bi->current();\r
     if (i != 3) {\r
@@ -560,7 +560,7 @@ void RBBIAPITest::TestIteration()
 \r
 \r
     if (bi->isBoundary(11) != FALSE) {\r
-        errln("%s:%d Incorrect value from bi->isBoudary().  Expected FALSE, got TRUE", __FILE__, __LINE__, i);\r
+        errln("%s:%d Incorrect value from bi->isBoundary().  Expected FALSE, got TRUE", __FILE__, __LINE__, i);\r
     }\r
     i = bi->current();\r
     if (i != 10) {\r
index b0112f8..bc0d834 100644 (file)
@@ -96,7 +96,7 @@ public:
     /* Internal subroutine used by TestIsBoundary() */ \r
     void doBoundaryTest(BreakIterator& bi, UnicodeString& text, int32_t *boundaries);\r
 \r
-    /*Internal subroutine used for comparision of expected and acquired results */\r
+    /*Internal subroutine used for comparison of expected and acquired results */\r
     void doTest(UnicodeString& testString, int32_t start, int32_t gotoffset, int32_t expectedOffset, const char* expected);\r
 \r
 \r
index a44e465..4a08991 100644 (file)
@@ -134,6 +134,7 @@ void RBBITest::runIndexedTest( int32_t index, UBool exec, const char* &name, cha
     TESTCASE_AUTO(Test16BitsTrieWith16BitStateTable);\r
     TESTCASE_AUTO(TestTable_8_16_Bits);\r
     TESTCASE_AUTO(TestBug13590);\r
+    TESTCASE_AUTO(TestUnpairedSurrogate);\r
 \r
 #if U_ENABLE_TRACING\r
     TESTCASE_AUTO(TestTraceCreateCharacter);\r
@@ -5323,4 +5324,43 @@ void RBBITest::TestTraceCreateBreakEngine(void) {
 }\r
 #endif\r
 \r
+void RBBITest::TestUnpairedSurrogate() {\r
+    UnicodeString rules(u"ab;");\r
+\r
+    UErrorCode status = U_ZERO_ERROR;\r
+    UParseError pe;\r
+    RuleBasedBreakIterator bi1(rules, pe, status);\r
+    assertSuccess(WHERE, status);\r
+    UnicodeString rtRules = bi1.getRules();\r
+    // make sure the simple one work first.\r
+    assertEquals(WHERE, rules,  rtRules);\r
+\r
+\r
+    rules = UnicodeString(u"a\\ud800b;").unescape();\r
+    pe.line = 0;\r
+    pe.offset = 0;\r
+    RuleBasedBreakIterator bi2(rules, pe, status);\r
+    assertEquals(WHERE "unpaired lead surrogate", U_ILLEGAL_CHAR_FOUND , status);\r
+    if (pe.line != 1 || pe.offset != 1) {\r
+        errln("pe (line, offset) expected (1, 1), got (%d, %d)", pe.line, pe.offset);\r
+    }\r
+\r
+    status = U_ZERO_ERROR;\r
+    rules = UnicodeString(u"a\\ude00b;").unescape();\r
+    pe.line = 0;\r
+    pe.offset = 0;\r
+    RuleBasedBreakIterator bi3(rules, pe, status);\r
+    assertEquals(WHERE "unpaired tail surrogate", U_ILLEGAL_CHAR_FOUND , status);\r
+    if (pe.line != 1 || pe.offset != 1) {\r
+        errln("pe (line, offset) expected (1, 1), got (%d, %d)", pe.line, pe.offset);\r
+    }\r
+\r
+    // make sure the surrogate one work too.\r
+    status = U_ZERO_ERROR;\r
+    rules = UnicodeString(u"a😀b;");\r
+    RuleBasedBreakIterator bi4(rules, pe, status);\r
+    rtRules = bi4.getRules();\r
+    assertEquals(WHERE, rules, rtRules);\r
+}\r
+\r
 #endif // #if !UCONFIG_NO_BREAK_ITERATION\r
index ebf437f..e02c34e 100644 (file)
@@ -83,6 +83,7 @@ public:
     void TestReverse(std::unique_ptr<RuleBasedBreakIterator>bi);\r
     void TestBug13692();\r
     void TestDebugRules();\r
+    void TestUnpairedSurrogate();\r
 \r
     void TestDebug();\r
     void TestProperties();\r
index bb2c325..9fd5e33 100644 (file)
@@ -984,96 +984,6 @@ void CollationRegressionTest::Test4139572(/* char* par */)
 \r
     delete col;\r
 }\r
-/* HSYS : RuleBasedCollator::compare() performance enhancements\r
-          compare() does not create CollationElementIterator() anymore.*/\r
-\r
-class My4146160Collator : public RuleBasedCollator\r
-{\r
-public:\r
-    My4146160Collator(RuleBasedCollator &rbc, UErrorCode &status);\r
-    ~My4146160Collator();\r
-\r
-    CollationElementIterator *createCollationElementIterator(const UnicodeString &text) const;\r
-\r
-    CollationElementIterator *createCollationElementIterator(const CharacterIterator &text) const;\r
-\r
-    static int32_t count;\r
-};\r
-\r
-int32_t My4146160Collator::count = 0;\r
-\r
-My4146160Collator::My4146160Collator(RuleBasedCollator &rbc, UErrorCode &status)\r
-  : RuleBasedCollator(rbc.getRules(), status)\r
-{\r
-}\r
-\r
-My4146160Collator::~My4146160Collator()\r
-{\r
-}\r
-\r
-CollationElementIterator *My4146160Collator::createCollationElementIterator(const UnicodeString &text) const\r
-{\r
-    count += 1;\r
-    return RuleBasedCollator::createCollationElementIterator(text);\r
-}\r
-\r
-CollationElementIterator *My4146160Collator::createCollationElementIterator(const CharacterIterator &text) const\r
-{\r
-    count += 1;\r
-    return RuleBasedCollator::createCollationElementIterator(text);\r
-}\r
-\r
-// @bug 4146160\r
-//\r
-// RuleBasedCollator doesn't use createCollationElementIterator internally\r
-//\r
-void CollationRegressionTest::Test4146160(/* char* par */)\r
-{\r
-#if 0\r
-    //\r
-    // Use a custom collator class whose createCollationElementIterator\r
-    // methods increment a count....\r
-    //\r
-    UErrorCode status = U_ZERO_ERROR;\r
-    CollationKey key;\r
-\r
-    My4146160Collator::count = 0;\r
-    My4146160Collator *mc = NULL;\r
-\r
-    mc = new My4146160Collator(*en_us, status);\r
-\r
-    if (mc == NULL || U_FAILURE(status))\r
-    {\r
-        errln("Failed to create a My4146160Collator.");\r
-        delete mc;\r
-        return;\r
-    }\r
-\r
-    mc->getCollationKey("1", key, status);\r
-\r
-    if (key.isBogus() || U_FAILURE(status))\r
-    {\r
-        errln("Failure to get a CollationKey from a My4146160Collator.");\r
-        delete mc;\r
-        return;\r
-    }\r
-\r
-    if (My4146160Collator::count < 1)\r
-    {\r
-        errln("My4146160Collator::createCollationElementIterator not called for getCollationKey");\r
-    }\r
-\r
-    My4146160Collator::count = 0;\r
-    mc->compare("1", "2");\r
-\r
-    if (My4146160Collator::count < 1)\r
-    {\r
-        errln("My4146160Collator::createtCollationElementIterator not called for compare");\r
-    }\r
-\r
-    delete mc;\r
-#endif\r
-}\r
 \r
 void CollationRegressionTest::Test4179216() {\r
     // you can position a CollationElementIterator in the middle of\r
@@ -1472,7 +1382,6 @@ void CollationRegressionTest::runIndexedTest(int32_t index, UBool exec, const ch
     TESTCASE_AUTO(Test4133509);\r
     TESTCASE_AUTO(Test4139572);\r
     TESTCASE_AUTO(Test4141640);\r
-    TESTCASE_AUTO(Test4146160);\r
     TESTCASE_AUTO(Test4179216);\r
     TESTCASE_AUTO(TestT7189);\r
     TESTCASE_AUTO(TestCaseFirstCompression);\r
index be34225..e0be225 100644 (file)
@@ -219,12 +219,6 @@ public:
     // Support for Swedish gone in 1.1.6 (Can't create Swedish collator) \r
     //\r
     void Test4141640(/* char* par */);\r
-    \r
-    // @bug 4146160\r
-    //\r
-    // RuleBasedCollator doesn't use getCollationElementIterator internally\r
-    //\r
-    void Test4146160(/* char* par */);\r
 \r
     void Test4179216();\r
 \r
index cd5685a..6ccbc7a 100644 (file)
@@ -255,6 +255,7 @@ void StringTest::runIndexedTest(int32_t index, UBool exec, const char *&name, ch
     TESTCASE_AUTO(TestStringByteSinkAppendU8);\r
     TESTCASE_AUTO(TestCharString);\r
     TESTCASE_AUTO(TestCStr);\r
+    TESTCASE_AUTO(TestCharStrAppendNumber);\r
     TESTCASE_AUTO(Testctou);\r
     TESTCASE_AUTO_END;\r
 }\r
@@ -842,6 +843,36 @@ StringTest::TestCStr() {
     }\r
 }\r
 \r
+void StringTest::TestCharStrAppendNumber() {\r
+    IcuTestErrorCode errorCode(*this, "TestCharStrAppendNumber()");\r
+\r
+    CharString testString;\r
+    testString.appendNumber(1, errorCode);\r
+    assertEquals("TestAppendNumber 1", "1", testString.data());\r
+\r
+    testString.clear();\r
+    testString.appendNumber(-1, errorCode);\r
+    assertEquals("TestAppendNumber -1", "-1", testString.data());\r
+\r
+    testString.clear();\r
+    testString.appendNumber(12345, errorCode);\r
+    assertEquals("TestAppendNumber 12345", "12345", testString.data());\r
+    testString.appendNumber(123, errorCode);\r
+    assertEquals("TestAppendNumber 12345 and then 123", "12345123", testString.data());\r
+\r
+    testString.clear();\r
+    testString.appendNumber(2147483647, errorCode);\r
+    assertEquals("TestAppendNumber when appending the biggest int32", "2147483647", testString.data());\r
+\r
+    testString.clear();\r
+    testString.appendNumber(-2147483648, errorCode);\r
+    assertEquals("TestAppendNumber when appending the smallest int32", "-2147483648", testString.data());\r
+\r
+    testString.clear();\r
+    testString.appendNumber(0, errorCode);\r
+    assertEquals("TestAppendNumber when appending zero", "0", testString.data());\r
+}\r
+\r
 void\r
 StringTest::Testctou() {\r
   const char *cs = "Fa\\u0127mu";\r
index 479895f..962ea90 100644 (file)
@@ -57,6 +57,7 @@ private:
     void TestSTLCompatibility();\r
     void TestCharString();\r
     void TestCStr();\r
+    void TestCharStrAppendNumber();\r
     void Testctou();\r
 };\r
 \r
index 1cd3955..35acef4 100644 (file)
@@ -60,7 +60,7 @@ void test_ParsePosition( void )
     pp3 = 5;\r
     ParsePosition pp4( pp3 );\r
     if ((pp2 != pp3) && (pp3 == pp4)) {\r
-        it_logln("PP copy contructor, operator== and operator != tested.");\r
+        it_logln("PP copy constructor, operator== and operator != tested.");\r
     }else{\r
         it_errln("*** PP operator== or operator != result");\r
     }\r
index 32fc63e..05e2275 100644 (file)
@@ -1462,7 +1462,7 @@ void TestMessageFormat::testCopyConstructor2() {
 }\r
 \r
 /**\r
- * Verify that MessageFormat accomodates more than 10 arguments and\r
+ * Verify that MessageFormat accommodates more than 10 arguments and\r
  * more than 10 subformats.\r
  */\r
 void TestMessageFormat::TestUnlimitedArgsAndSubformats() {\r
index 20849c7..1e7118b 100644 (file)
@@ -83,7 +83,7 @@ public:
         UnicodeString pattern ,Locale locale , UErrorCode& err, char* errMsg);\r
 \r
     /**\r
-     * Verify that MessageFormat accomodates more than 10 arguments\r
+     * Verify that MessageFormat accommodates more than 10 arguments\r
      * and more than 10 subformats.\r
      */\r
     void TestUnlimitedArgsAndSubformats();\r
index bd60be3..9a56e37 100644 (file)
@@ -149,6 +149,7 @@ void IntlTestDateFormatSymbols::TestGetSetSpecificItems()
         dataerrln("ERROR: Couldn't create English DateFormatSymbols " + (UnicodeString)u_errorName(status));\r
         return;\r
     }\r
+    symbol->operator=(*symbol);  // self-assignment should be a no-op\r
     int32_t cntFmtAbbrev, cntFmtShort, cntStdAloneShort;\r
     const UnicodeString * wdFmtAbbrev     = symbol->getWeekdays(cntFmtAbbrev,DateFormatSymbols::FORMAT,DateFormatSymbols::ABBREVIATED);\r
     const UnicodeString * wdFmtShort      = symbol->getWeekdays(cntFmtShort,DateFormatSymbols::FORMAT,DateFormatSymbols::SHORT);\r
index 3b3bc3b..8151aad 100644 (file)
@@ -55,7 +55,8 @@ void BasicNormalizerTest::runIndexedTest(int32_t index, UBool exec,
     TESTCASE_AUTO(TestCustomFCC);\r
 #endif\r
     TESTCASE_AUTO(TestFilteredNormalizer2Coverage);\r
-    TESTCASE_AUTO(TestNormalizeUTF8WithEdits);\r
+    TESTCASE_AUTO(TestComposeUTF8WithEdits);\r
+    TESTCASE_AUTO(TestDecomposeUTF8WithEdits);\r
     TESTCASE_AUTO(TestLowMappingToEmpty_D);\r
     TESTCASE_AUTO(TestLowMappingToEmpty_FCD);\r
     TESTCASE_AUTO(TestNormalizeIllFormedText);\r
@@ -1568,8 +1569,8 @@ BasicNormalizerTest::TestFilteredNormalizer2Coverage() {
 }\r
 \r
 void\r
-BasicNormalizerTest::TestNormalizeUTF8WithEdits() {\r
-    IcuTestErrorCode errorCode(*this, "TestNormalizeUTF8WithEdits");\r
+BasicNormalizerTest::TestComposeUTF8WithEdits() {\r
+    IcuTestErrorCode errorCode(*this, "TestComposeUTF8WithEdits");\r
     const Normalizer2 *nfkc_cf=Normalizer2::getNFKCCasefoldInstance(errorCode);\r
     if(errorCode.errDataIfFailureAndReset("Normalizer2::getNFKCCasefoldInstance() call failed")) {\r
         return;\r
@@ -1589,12 +1590,12 @@ BasicNormalizerTest::TestNormalizeUTF8WithEdits() {
         { TRUE, 2, 2 },  // Ä→ä\r
         { TRUE, 3, 2 },  // A\u0308→ä\r
         { TRUE, 7, 5 },  // A\u0308\u00ad\u0323→ạ\u0308 removes the soft hyphen\r
-        { TRUE, 4, 5 },  // Ä\u0323→ ạ\u0308\r
+        { TRUE, 4, 5 },  // Ä\u0323→ạ\u0308\r
         { FALSE, 1, 1 },  // comma\r
         { TRUE, 2, 0 },  // U+00AD soft hyphen maps to empty\r
-        { TRUE, 6, 3 },  // \u1100\u1161→ \r
-        { TRUE, 6, 3 },  // 가\u11A8→ \r
-        { TRUE, 6, 3 },  // 가\u3133→ \r
+        { TRUE, 6, 3 },  // \u1100\u1161→가\r
+        { TRUE, 6, 3 },  // 가\u11A8→각\r
+        { TRUE, 6, 3 },  // 가\u3133→갃\r
         { FALSE, 2, 2 }  // 2 spaces\r
     };\r
     assertTrue("normalizeUTF8 with Edits hasChanges", edits.hasChanges());\r
@@ -1635,12 +1636,12 @@ BasicNormalizerTest::TestNormalizeUTF8WithEdits() {
         { TRUE, 2, 2 },  // Ä→ä\r
         { FALSE, 4, 4 },  // A\u0308A\r
         { TRUE, 6, 4 },  // \u0308\u00ad\u0323→\u0323\u0308 removes the soft hyphen\r
-        { TRUE, 4, 5 },  // Ä\u0323→ ạ\u0308\r
+        { TRUE, 4, 5 },  // Ä\u0323→ạ\u0308\r
         { FALSE, 1, 1 },  // comma\r
         { TRUE, 2, 0 },  // U+00AD soft hyphen maps to empty\r
-        { TRUE, 6, 3 },  // \u1100\u1161→ \r
-        { TRUE, 6, 3 },  // 가\u11A8→ \r
-        { TRUE, 6, 3 },  // 가\u3133→ \r
+        { TRUE, 6, 3 },  // \u1100\u1161→가\r
+        { TRUE, 6, 3 },  // 가\u11A8→각\r
+        { TRUE, 6, 3 },  // 가\u3133→갃\r
         { FALSE, 2, 2 }  // 2 spaces\r
     };\r
     assertTrue("filtered normalizeUTF8 hasChanges", edits.hasChanges());\r
@@ -1671,6 +1672,72 @@ BasicNormalizerTest::TestNormalizeUTF8WithEdits() {
 }\r
 \r
 void\r
+BasicNormalizerTest::TestDecomposeUTF8WithEdits() {\r
+    IcuTestErrorCode errorCode(*this, "TestDecomposeUTF8WithEdits");\r
+    const Normalizer2 *nfkd_cf =\r
+        Normalizer2::getInstance(nullptr, "nfkc_cf", UNORM2_DECOMPOSE, errorCode);\r
+    if(errorCode.errDataIfFailureAndReset("Normalizer2::getInstance(nfkc_cf/decompose) call failed")) {\r
+        return;\r
+    }\r
+    static const StringPiece src =\r
+        u8"  AÄA\u0308A\u0308\u00ad\u0323Ä\u0323,\u00ad\u1100\u1161가\u11A8가\u3133  ";\r
+    StringPiece expected =\r
+        u8"  aa\u0308a\u0308a\u0323\u0308a\u0323\u0308,"\r
+        u8"\u1100\u1161\u1100\u1161\u11A8\u1100\u1161\u11AA  ";\r
+    std::string result;\r
+    StringByteSink<std::string> sink(&result, static_cast<int32_t>(expected.length()));\r
+    Edits edits;\r
+    nfkd_cf->normalizeUTF8(0, src, sink, &edits, errorCode);\r
+    assertSuccess("normalizeUTF8 with Edits", errorCode.get());\r
+    assertEquals("normalizeUTF8 with Edits", expected.data(), result.c_str());\r
+    static const EditChange expectedChanges[] = {\r
+        { FALSE, 2, 2 },  // 2 spaces\r
+        { TRUE, 1, 1 },  // A→a\r
+        { TRUE, 2, 3 },  // Ä→a\u0308\r
+        { TRUE, 1, 1 },  // A→a\r
+        { FALSE, 2, 2 },  // \u0308→\u0308 unchanged\r
+        { TRUE, 1, 1 },  // A→a\r
+        { TRUE, 6, 4 },  // \u0308\u00ad\u0323→\u0323\u0308 removes the soft hyphen\r
+        { TRUE, 4, 5 },  // Ä\u0323→a\u0323\u0308\r
+        { FALSE, 1, 1 },  // comma\r
+        { TRUE, 2, 0 },  // U+00AD soft hyphen maps to empty\r
+        { FALSE, 6, 6 },  // \u1100\u1161 unchanged\r
+        { TRUE, 3, 6 },  // 가→\u1100\u1161\r
+        { FALSE, 3, 3 },  // \u11A8 unchanged\r
+        { TRUE, 3, 6 },  // 가→\u1100\u1161\r
+        { TRUE, 3, 3 },  // \u3133→\u11AA\r
+        { FALSE, 2, 2 }  // 2 spaces\r
+    };\r
+    assertTrue("normalizeUTF8 with Edits hasChanges", edits.hasChanges());\r
+    assertEquals("normalizeUTF8 with Edits numberOfChanges", 10, edits.numberOfChanges());\r
+    TestUtility::checkEditsIter(*this, u"normalizeUTF8 with Edits",\r
+            edits.getFineIterator(), edits.getFineIterator(),\r
+            expectedChanges, UPRV_LENGTHOF(expectedChanges),\r
+            TRUE, errorCode);\r
+\r
+    assertFalse("isNormalizedUTF8(source)", nfkd_cf->isNormalizedUTF8(src, errorCode));\r
+    assertTrue("isNormalizedUTF8(normalized)", nfkd_cf->isNormalizedUTF8(result, errorCode));\r
+\r
+    // Omit unchanged text.\r
+    expected = u8"aa\u0308aa\u0323\u0308a\u0323\u0308\u1100\u1161\u1100\u1161\u11AA";\r
+    result.clear();\r
+    edits.reset();\r
+    nfkd_cf->normalizeUTF8(U_OMIT_UNCHANGED_TEXT, src, sink, &edits, errorCode);\r
+    assertSuccess("normalizeUTF8 omit unchanged", errorCode.get());\r
+    assertEquals("normalizeUTF8 omit unchanged", expected.data(), result.c_str());\r
+    assertTrue("normalizeUTF8 omit unchanged hasChanges", edits.hasChanges());\r
+    assertEquals("normalizeUTF8 omit unchanged numberOfChanges", 10, edits.numberOfChanges());\r
+    TestUtility::checkEditsIter(*this, u"normalizeUTF8 omit unchanged",\r
+            edits.getFineIterator(), edits.getFineIterator(),\r
+            expectedChanges, UPRV_LENGTHOF(expectedChanges),\r
+            TRUE, errorCode);\r
+\r
+    // Not testing FilteredNormalizer2:\r
+    // The code there is the same for all normalization modes, and\r
+    // TestComposeUTF8WithEdits() covers it well.\r
+}\r
+\r
+void\r
 BasicNormalizerTest::TestLowMappingToEmpty_D() {\r
     IcuTestErrorCode errorCode(*this, "TestLowMappingToEmpty_D");\r
     const Normalizer2 *n2 = Normalizer2::getInstance(\r
index bfa5873..988b65e 100644 (file)
@@ -47,7 +47,8 @@ public:
     void TestCustomComp();\r
     void TestCustomFCC();\r
     void TestFilteredNormalizer2Coverage();\r
-    void TestNormalizeUTF8WithEdits();\r
+    void TestComposeUTF8WithEdits();\r
+    void TestDecomposeUTF8WithEdits();\r
     void TestLowMappingToEmpty_D();\r
     void TestLowMappingToEmpty_FCD();\r
     void TestNormalizeIllFormedText();\r
index 757f948..0446777 100644 (file)
@@ -86,6 +86,7 @@ TimeZoneFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name
         TESTCASE(6, TestFormatCustomZone);\r
         TESTCASE(7, TestFormatTZDBNamesAllZoneCoverage);\r
         TESTCASE(8, TestAdoptDefaultThreadSafe);\r
+        TESTCASE(9, TestCentralTime);\r
     default: name = ""; break;\r
     }\r
 }\r
@@ -744,9 +745,9 @@ void TimeZoneFormatTest::RunAdoptDefaultThreadSafeTests(int32_t threadNumber) {
             date += 6000 * i;\r
             std::unique_ptr<icu::TimeZone> tz(icu::TimeZone::createDefault());\r
             status = U_ZERO_ERROR;\r
-            tz->getOffset(date, TRUE, rawOffset, dstOffset, status);\r
+            tz->getOffset(static_cast<UDate>(date), TRUE, rawOffset, dstOffset, status);\r
             status = U_ZERO_ERROR;\r
-            tz->getOffset(date, FALSE, rawOffset, dstOffset, status);\r
+            tz->getOffset(static_cast<UDate>(date), FALSE, rawOffset, dstOffset, status);\r
         }\r
     }\r
 }\r
@@ -1340,4 +1341,57 @@ TimeZoneFormatTest::TestFormatTZDBNamesAllZoneCoverage(void) {
         }\r
     }\r
 }\r
+\r
+// Test for checking parse results are same for a same input string\r
+// using SimpleDateFormat initialized with different regional locales - US and Belize.\r
+// Belize did not observe DST from 1968 to 1973, 1975 to 1982, and 1985 and later.\r
+void\r
+TimeZoneFormatTest::TestCentralTime(void) {\r
+    UnicodeString pattern(u"y-MM-dd HH:mm:ss zzzz");\r
+    UnicodeString testInputs[] = {\r
+        // 1970-01-01 - Chicago:STD/Belize:STD\r
+        u"1970-01-01 12:00:00 Central Standard Time",\r
+        u"1970-01-01 12:00:00 Central Daylight Time",\r
+\r
+        // 1970-07-01 - Chicago:STD/Belize:STD\r
+        u"1970-07-01 12:00:00 Central Standard Time",\r
+        u"1970-07-01 12:00:00 Central Daylight Time",\r
+\r
+        // 1974-01-01 - Chicago:STD/Belize:DST\r
+        u"1974-01-01 12:00:00 Central Standard Time",\r
+        u"1974-01-01 12:00:00 Central Daylight Time",\r
+\r
+        // 2020-01-01 - Chicago:STD/Belize:STD\r
+        u"2020-01-01 12:00:00 Central Standard Time",\r
+        u"2020-01-01 12:00:00 Central Daylight Time",\r
+\r
+        // 2020-01-01 - Chicago:DST/Belize:STD\r
+        u"2020-07-01 12:00:00 Central Standard Time",\r
+        u"2020-07-01 12:00:00 Central Daylight Time",\r
+\r
+        u""\r
+    };\r
+\r
+    UErrorCode status = U_ZERO_ERROR;\r
+    SimpleDateFormat sdfUS(pattern, Locale("en_US"), status);\r
+    SimpleDateFormat sdfBZ(pattern, Locale("en_BZ"), status);\r
+    if (U_FAILURE(status)) {\r
+        errln("Failed to create SimpleDateFormat instance");\r
+        return;\r
+    }\r
+\r
+    for (int32_t i = 0; !testInputs[i].isEmpty(); i++) {\r
+        UDate dUS = sdfUS.parse(testInputs[i], status);\r
+        UDate dBZ = sdfBZ.parse(testInputs[i], status);\r
+\r
+        if (U_FAILURE(status)) {\r
+            errln((UnicodeString)"Failed to parse date string: " + testInputs[i]);\r
+            continue;\r
+        }\r
+\r
+        if (dUS != dBZ) {\r
+            errln((UnicodeString)"Parse results should be same for input: " + testInputs[i]);\r
+        }\r
+    }\r
+}\r
 #endif /* #if !UCONFIG_NO_FORMATTING */\r
index 6b26337..58fdd92 100644 (file)
@@ -30,6 +30,7 @@ class TimeZoneFormatTest : public IntlTest {
     void TestFormatCustomZone(void);\r
     void TestFormatTZDBNamesAllZoneCoverage(void);\r
     void TestAdoptDefaultThreadSafe(void);\r
+    void TestCentralTime(void);\r
 \r
     void RunTimeRoundTripTests(int32_t threadNumber);\r
     void RunAdoptDefaultThreadSafeTests(int32_t threadNumber);\r
index 86bce39..6e839df 100644 (file)
@@ -79,9 +79,9 @@ TimeZoneOffsetLocalTest::TestGetOffsetAroundTransition() {
 \r
     // Expected offsets by void getOffset(UDate date, UBool local, int32_t& rawOffset,\r
     // int32_t& dstOffset, UErrorCode& ec) with local=TRUE\r
-    // or void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
+    // or void getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt,\r
     // int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) with\r
-    // nonExistingTimeOpt=kStandard/duplicatedTimeOpt=kStandard\r
+    // nonExistingTimeOpt=STANDARD_*/duplicatedTimeOpt=STANDARD_*\r
     const int32_t OFFSETS2[NUM_DATES][2] = {\r
         // April 2, 2006\r
         {-8*HOUR, 0},\r
@@ -98,9 +98,9 @@ TimeZoneOffsetLocalTest::TestGetOffsetAroundTransition() {
         {-8*HOUR, 0},\r
     };\r
 \r
-    // Expected offsets by void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt,\r
-    // int32_t duplicatedTimeOpt, int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) with\r
-    // nonExistingTimeOpt=kDaylight/duplicatedTimeOpt=kDaylight\r
+    // Expected offsets by void getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingTimeOpt,\r
+    // UTimeZoneLocalOption duplicatedTimeOpt, int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) with\r
+    // nonExistingTimeOpt=DAYLIGHT_*/duplicatedTimeOpt=DAYLIGHT_*\r
     const int32_t OFFSETS3[][2] = {\r
         // April 2, 2006\r
         {-8*HOUR, 0},\r
@@ -237,84 +237,84 @@ TimeZoneOffsetLocalTest::TestGetOffsetAroundTransition() {
         }\r
     }\r
 \r
-    // Test getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
+    // Test getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt,\r
     // int32_t& rawOffset, int32_t& dstOffset, UErroCode& status)\r
-    // with nonExistingTimeOpt=kStandard/duplicatedTimeOpt=kStandard\r
+    // with nonExistingTimeOpt=STANDARD_FORMER/duplicatedTimeOpt=STANDARD_LATTER\r
     for (int32_t i = 0; i < NUM_TIMEZONES; i++) {\r
         for (int m = 0; m < NUM_DATES; m++) {\r
             status = U_ZERO_ERROR;\r
-            TESTZONES[i]->getOffsetFromLocal(MILLIS[m], BasicTimeZone::kStandard, BasicTimeZone::kStandard,\r
+            TESTZONES[i]->getOffsetFromLocal(MILLIS[m], UCAL_TZ_LOCAL_STANDARD_FORMER, UCAL_TZ_LOCAL_STANDARD_LATTER,\r
                 rawOffset, dstOffset, status);\r
             if (U_FAILURE(status)) {\r
-                errln((UnicodeString)"getOffsetFromLocal with kStandard/kStandard failed for TESTZONES[" + i + "]");\r
+                errln((UnicodeString)"getOffsetFromLocal with UCAL_TZ_LOCAL_STANDARD_FORMER/UCAL_TZ_LOCAL_STANDARD_LATTER failed for TESTZONES[" + i + "]");\r
             } else if (rawOffset != OFFSETS2[m][0] || dstOffset != OFFSETS2[m][1]) {\r
                 dateStr.remove();\r
                 df.format(MILLIS[m], dateStr);\r
                 dataerrln((UnicodeString)"Bad offset returned by TESTZONES[" + i + "] at "\r
-                        + dateStr + "(wall/kStandard/kStandard) - Got: "\r
+                        + dateStr + "(wall/STANDARD_FORMER/STANDARD_LATTER) - Got: "\r
                         + rawOffset + "/" + dstOffset\r
                         + " Expected: " + OFFSETS2[m][0] + "/" + OFFSETS2[m][1]);\r
             }\r
         }\r
     }\r
 \r
-    // Test getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
+    // Test getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt,\r
     // int32_t& rawOffset, int32_t& dstOffset, UErroCode& status)\r
-    // with nonExistingTimeOpt=kDaylight/duplicatedTimeOpt=kDaylight\r
+    // with nonExistingTimeOpt=DAYLIGHT_LATTER/duplicatedTimeOpt=DAYLIGHT_FORMER\r
     for (int32_t i = 0; i < NUM_TIMEZONES; i++) {\r
         for (int m = 0; m < NUM_DATES; m++) {\r
             status = U_ZERO_ERROR;\r
-            TESTZONES[i]->getOffsetFromLocal(MILLIS[m], BasicTimeZone::kDaylight, BasicTimeZone::kDaylight,\r
+            TESTZONES[i]->getOffsetFromLocal(MILLIS[m], UCAL_TZ_LOCAL_DAYLIGHT_LATTER, UCAL_TZ_LOCAL_DAYLIGHT_FORMER,\r
                 rawOffset, dstOffset, status);\r
             if (U_FAILURE(status)) {\r
-                errln((UnicodeString)"getOffsetFromLocal with kDaylight/kDaylight failed for TESTZONES[" + i + "]");\r
+                errln((UnicodeString)"getOffsetFromLocal with UCAL_TZ_LOCAL_DAYLIGHT_LATTER/UCAL_TZ_LOCAL_DAYLIGHT_FORMER failed for TESTZONES[" + i + "]");\r
             } else if (rawOffset != OFFSETS3[m][0] || dstOffset != OFFSETS3[m][1]) {\r
                 dateStr.remove();\r
                 df.format(MILLIS[m], dateStr);\r
                 dataerrln((UnicodeString)"Bad offset returned by TESTZONES[" + i + "] at "\r
-                        + dateStr + "(wall/kDaylight/kDaylight) - Got: "\r
+                        + dateStr + "(wall/DAYLIGHT_LATTER/DAYLIGHT_FORMER) - Got: "\r
                         + rawOffset + "/" + dstOffset\r
                         + " Expected: " + OFFSETS3[m][0] + "/" + OFFSETS3[m][1]);\r
             }\r
         }\r
     }\r
 \r
-    // Test getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
+    // Test getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt,\r
     // int32_t& rawOffset, int32_t& dstOffset, UErroCode& status)\r
-    // with nonExistingTimeOpt=kFormer/duplicatedTimeOpt=kLatter\r
+    // with nonExistingTimeOpt=FORMER/duplicatedTimeOpt=LATTER\r
     for (int32_t i = 0; i < NUM_TIMEZONES; i++) {\r
         for (int m = 0; m < NUM_DATES; m++) {\r
             status = U_ZERO_ERROR;\r
-            TESTZONES[i]->getOffsetFromLocal(MILLIS[m], BasicTimeZone::kFormer, BasicTimeZone::kLatter,\r
+            TESTZONES[i]->getOffsetFromLocal(MILLIS[m], UCAL_TZ_LOCAL_FORMER, UCAL_TZ_LOCAL_LATTER,\r
                 rawOffset, dstOffset, status);\r
             if (U_FAILURE(status)) {\r
-                errln((UnicodeString)"getOffsetFromLocal with kFormer/kLatter failed for TESTZONES[" + i + "]");\r
+                errln((UnicodeString)"getOffsetFromLocal with UCAL_TZ_LOCAL_FORMER/UCAL_TZ_LOCAL_LATTER failed for TESTZONES[" + i + "]");\r
             } else if (rawOffset != OFFSETS2[m][0] || dstOffset != OFFSETS2[m][1]) {\r
                 dateStr.remove();\r
                 df.format(MILLIS[m], dateStr);\r
                 dataerrln((UnicodeString)"Bad offset returned by TESTZONES[" + i + "] at "\r
-                        + dateStr + "(wall/kFormer/kLatter) - Got: "\r
+                        + dateStr + "(wall/FORMER/LATTER) - Got: "\r
                         + rawOffset + "/" + dstOffset\r
                         + " Expected: " + OFFSETS2[m][0] + "/" + OFFSETS2[m][1]);\r
             }\r
         }\r
     }\r
 \r
-    // Test getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,\r
+    // Test getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt,\r
     // int32_t& rawOffset, int32_t& dstOffset, UErroCode& status)\r
-    // with nonExistingTimeOpt=kLatter/duplicatedTimeOpt=kFormer\r
+    // with nonExistingTimeOpt=LATTER/duplicatedTimeOpt=FORMER\r
     for (int32_t i = 0; i < NUM_TIMEZONES; i++) {\r
         for (int m = 0; m < NUM_DATES; m++) {\r
             status = U_ZERO_ERROR;\r
-            TESTZONES[i]->getOffsetFromLocal(MILLIS[m], BasicTimeZone::kLatter, BasicTimeZone::kFormer,\r
+            TESTZONES[i]->getOffsetFromLocal(MILLIS[m], UCAL_TZ_LOCAL_LATTER, UCAL_TZ_LOCAL_FORMER,\r
                 rawOffset, dstOffset, status);\r
             if (U_FAILURE(status)) {\r
-                errln((UnicodeString)"getOffsetFromLocal with kLatter/kFormer failed for TESTZONES[" + i + "]");\r
+                errln((UnicodeString)"getOffsetFromLocal with UCAL_TZ_LOCAL_LATTER/UCAL_TZ_LOCAL_FORMER failed for TESTZONES[" + i + "]");\r
             } else if (rawOffset != OFFSETS3[m][0] || dstOffset != OFFSETS3[m][1]) {\r
                 dateStr.remove();\r
                 df.format(MILLIS[m], dateStr);\r
                 dataerrln((UnicodeString)"Bad offset returned by TESTZONES[" + i + "] at "\r
-                        + dateStr + "(wall/kLatter/kFormer) - Got: "\r
+                        + dateStr + "(wall/LATTER/FORMER) - Got: "\r
                         + rawOffset + "/" + dstOffset\r
                         + " Expected: " + OFFSETS3[m][0] + "/" + OFFSETS3[m][1]);\r
             }\r
index 08ab530..73ea2b9 100644 (file)
@@ -1171,8 +1171,10 @@ void TimeZoneTest::TestCustomParse()
         TimeZone *zone = TimeZone::createTimeZone(id);\r
         UnicodeString   itsID, temp;\r
 \r
-        if (dynamic_cast<OlsonTimeZone *>(zone) != NULL) {\r
+        OlsonTimeZone *ozone = dynamic_cast<OlsonTimeZone *>(zone);\r
+        if (ozone != nullptr) {\r
             logln(id + " -> Olson time zone");\r
+            ozone->operator=(*ozone);  // self-assignment should be a no-op\r
         } else {\r
             zone->getID(itsID);\r
             int32_t ioffset = zone->getRawOffset()/1000;\r
@@ -2074,6 +2076,8 @@ void TimeZoneTest::TestCanonicalID() {
         {"Asia/Vientiane", "Asia/Bangkok"},\r
         {"Atlantic/Jan_Mayen", "Europe/Oslo"},\r
         {"Atlantic/St_Helena", "Africa/Abidjan"},\r
+        {"Australia/Currie", "Australia/Hobart"},\r
+        {"Australia/Tasmania", "Australia/Hobart"},\r
         {"Europe/Bratislava", "Europe/Prague"},\r
         {"Europe/Busingen", "Europe/Zurich"},\r
         {"Europe/Guernsey", "Europe/London"},\r
index 2144401..bbed9b0 100644 (file)
@@ -5,11 +5,14 @@
 \r
 #if !UCONFIG_NO_FORMATTING\r
 \r
+#include "measunit_impl.h"\r
 #include "units_data.h"\r
+\r
 #include "intltest.h"\r
 \r
 using namespace ::icu::units;\r
 \r
+// These test are no in ICU4J. TODO: consider porting them to Java?\r
 class UnitsDataTest : public IntlTest {\r
   public:\r
     UnitsDataTest() {}\r
@@ -38,19 +41,22 @@ void UnitsDataTest::testGetUnitCategory() {
         const char *expectedCategory;\r
     } testCases[]{\r
         {"kilogram-per-cubic-meter", "mass-density"},\r
+        {"cubic-meter-per-kilogram", "specific-volume"},\r
+        {"meter-per-second", "speed"},\r
+        // TODO(icu-units#130): inverse-speed\r
+        // {"second-per-meter", "speed"},\r
+        // Consumption specifically supports inverse units (mile-per-galon,\r
+        // liter-per-100-kilometer):\r
         {"cubic-meter-per-meter", "consumption"},\r
-        // TODO(CLDR-13787,hugovdm): currently we're treating\r
-        // consumption-inverse as a separate category. Once consumption\r
-        // preference handling has been clarified by CLDR-13787, this function\r
-        // should be fixed.\r
-        {"meter-per-cubic-meter", "consumption-inverse"},\r
+        {"meter-per-cubic-meter", "consumption"},\r
     };\r
 \r
     IcuTestErrorCode status(*this, "testGetUnitCategory");\r
     for (const auto &t : testCases) {\r
-        CharString category = getUnitCategory(t.unit, status);\r
-        status.errIfFailureAndReset("getUnitCategory(%s)", t.unit);\r
-        assertEquals("category", t.expectedCategory, category.data());\r
+        CharString category = getUnitQuantity(t.unit, status);\r
+        if (!status.errIfFailureAndReset("getUnitCategory(%s)", t.unit)) {\r
+            assertEquals("category", t.expectedCategory, category.data());\r
+        }\r
     }\r
 }\r
 \r
@@ -107,10 +113,9 @@ void UnitsDataTest::testGetPreferencesFor() {
         {"XX default falls back to 001", "length", "default", "XX", WorldLenMax, WorldLenMin},\r
         {"Unknown usage US", "length", "foobar", "US", USLenMax, USLenMin},\r
         {"Unknown usage 001", "length", "foobar", "XX", WorldLenMax, WorldLenMin},\r
-        {"Fallback", "length", "person-height-xyzzy", "DE", "meter-and-centimeter",\r
-         "meter-and-centimeter"},\r
-        {"Fallback twice", "length", "person-height-xyzzy-foo", "DE", "meter-and-centimeter",\r
-         "meter-and-centimeter"},\r
+        {"Fallback", "length", "person-height-xyzzy", "DE", "centimeter", "centimeter"},\r
+        {"Fallback twice", "length", "person-height-xyzzy-foo", "DE", "centimeter",\r
+         "centimeter"},\r
         // Confirming results for some unitPreferencesTest.txt test cases\r
         {"001 area", "area", "default", "001", "square-kilometer", "square-centimeter"},\r
         {"GB area", "area", "default", "GB", "square-mile", "square-inch"},\r
index ad9fcea..7ad3eb1 100644 (file)
@@ -16,6 +16,7 @@
 #include "putilimp.h"\r
 #include "unicode/ctest.h"\r
 #include "unicode/measunit.h"\r
+#include "unicode/measure.h"\r
 #include "unicode/unistr.h"\r
 #include "unicode/unum.h"\r
 #include "unicode/ures.h"\r
@@ -43,15 +44,13 @@ class UnitsTest : public IntlTest {
     void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL);\r
 \r
     void testUnitConstantFreshness();\r
-    void testConversionCapability();\r
-    void testConversions();\r
+    void testExtractConvertibility();\r
+    void testConversionInfo();\r
+    void testConverterWithCLDRTests();\r
     void testComplexUnitsConverter();\r
-    void testComplexUnitConverterSorting();\r
-    void testPreferences();\r
-    void testSiPrefixes();\r
-    void testMass();\r
-    void testTemperature();\r
-    void testArea();\r
+    void testComplexUnitsConverterSorting();\r
+    void testUnitPreferencesWithCLDRTests();\r
+    void testConverter();\r
 };\r
 \r
 extern IntlTest *createUnitsTest() { return new UnitsTest(); }\r
@@ -62,15 +61,13 @@ void UnitsTest::runIndexedTest(int32_t index, UBool exec, const char *&name, cha
     }\r
     TESTCASE_AUTO_BEGIN;\r
     TESTCASE_AUTO(testUnitConstantFreshness);\r
-    TESTCASE_AUTO(testConversionCapability);\r
-    TESTCASE_AUTO(testConversions);\r
+    TESTCASE_AUTO(testExtractConvertibility);\r
+    TESTCASE_AUTO(testConversionInfo);\r
+    TESTCASE_AUTO(testConverterWithCLDRTests);\r
     TESTCASE_AUTO(testComplexUnitsConverter);\r
-    TESTCASE_AUTO(testComplexUnitConverterSorting);\r
-    TESTCASE_AUTO(testPreferences);\r
-    TESTCASE_AUTO(testSiPrefixes);\r
-    TESTCASE_AUTO(testMass);\r
-    TESTCASE_AUTO(testTemperature);\r
-    TESTCASE_AUTO(testArea);\r
+    TESTCASE_AUTO(testComplexUnitsConverterSorting);\r
+    TESTCASE_AUTO(testUnitPreferencesWithCLDRTests);\r
+    TESTCASE_AUTO(testConverter);\r
     TESTCASE_AUTO_END;\r
 }\r
 \r
@@ -92,7 +89,8 @@ void UnitsTest::testUnitConstantFreshness() {
         if (status.errDataIfFailureAndReset(\r
                 "addSingleFactorConstant(<%s>, ...).\n\n"\r
                 "If U_INVALID_FORMAT_ERROR, please check that \"icu4c/source/i18n/units_converter.cpp\" "\r
-                "has all constants? Is \"%s\" a new constant?\n",\r
+                "has all constants? Is \"%s\" a new constant?\n"\r
+                "See docs/processes/release/tasks/updating-measure-unit.md for more information.\n",\r
                 constant, constant)) {\r
             continue;\r
         }\r
@@ -122,7 +120,9 @@ void UnitsTest::testUnitConstantFreshness() {
     }\r
 }\r
 \r
-void UnitsTest::testConversionCapability() {\r
+void UnitsTest::testExtractConvertibility() {\r
+    IcuTestErrorCode status(*this, "UnitsTest::testExtractConvertibility");\r
+\r
     struct TestCase {\r
         const char *const source;\r
         const char *const target;\r
@@ -137,16 +137,37 @@ void UnitsTest::testConversionCapability() {
         {"square-hectare", "pow4-foot", CONVERTIBLE},                                //\r
         {"square-kilometer-per-second", "second-per-square-meter", RECIPROCAL},      //\r
         {"cubic-kilometer-per-second-meter", "second-per-square-meter", RECIPROCAL}, //\r
+        {"square-meter-per-square-hour", "hectare-per-square-second", CONVERTIBLE},  //\r
+        {"hertz", "revolution-per-second", CONVERTIBLE},                             //\r
+        {"millimeter", "meter", CONVERTIBLE},                                        //\r
+        {"yard", "meter", CONVERTIBLE},                                              //\r
+        {"ounce-troy", "kilogram", CONVERTIBLE},                                     //\r
+        {"percent", "portion", CONVERTIBLE},                                         //\r
+        {"ofhg", "kilogram-per-square-meter-square-second", CONVERTIBLE},            //\r
+        {"second-per-meter", "meter-per-second", RECIPROCAL},                        //\r
     };\r
 \r
     for (const auto &testCase : testCases) {\r
-        UErrorCode status = U_ZERO_ERROR;\r
-\r
         MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status);\r
+        if (status.errIfFailureAndReset("source MeasureUnitImpl::forIdentifier(\"%s\", ...)",\r
+                                        testCase.source)) {\r
+            continue;\r
+        }\r
         MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status);\r
+        if (status.errIfFailureAndReset("target MeasureUnitImpl::forIdentifier(\"%s\", ...)",\r
+                                        testCase.target)) {\r
+            continue;\r
+        }\r
 \r
         ConversionRates conversionRates(status);\r
+        if (status.errIfFailureAndReset("conversionRates(status)")) {\r
+            continue;\r
+        }\r
         auto convertibility = extractConvertibility(source, target, conversionRates, status);\r
+        if (status.errIfFailureAndReset("extractConvertibility(<%s>, <%s>, ...)", testCase.source,\r
+                                        testCase.target)) {\r
+            continue;\r
+        }\r
 \r
         assertEquals(UnicodeString("Conversion Capability: ") + testCase.source + " to " +\r
                          testCase.target,\r
@@ -154,78 +175,97 @@ void UnitsTest::testConversionCapability() {
     }\r
 }\r
 \r
-void UnitsTest::testSiPrefixes() {\r
-    IcuTestErrorCode status(*this, "Units testSiPrefixes");\r
+void UnitsTest::testConversionInfo() {\r
+    IcuTestErrorCode status(*this, "UnitsTest::testExtractConvertibility");\r
     // Test Cases\r
     struct TestCase {\r
         const char *source;\r
         const char *target;\r
-        const double inputValue;\r
-        const double expectedValue;\r
+        const ConversionInfo expectedConversionInfo;\r
     } testCases[]{\r
-        {"gram", "kilogram", 1.0, 0.001},            //\r
-        {"milligram", "kilogram", 1.0, 0.000001},    //\r
-        {"microgram", "kilogram", 1.0, 0.000000001}, //\r
-        {"megagram", "gram", 1.0, 1000000},          //\r
-        {"megagram", "kilogram", 1.0, 1000},         //\r
-        {"gigabyte", "byte", 1.0, 1000000000},       //\r
-        // TODO: Fix `watt` probelms.\r
-        // {"megawatt", "watt", 1.0, 1000000},          //\r
-        // {"megawatt", "kilowatt", 1.0, 1000},         //\r
+        {\r
+            "meter",\r
+            "meter",\r
+            {1.0, 0, false},\r
+        },\r
+        {\r
+            "meter",\r
+            "foot",\r
+            {3.28084, 0, false},\r
+        },\r
+        {\r
+            "foot",\r
+            "meter",\r
+            {0.3048, 0, false},\r
+        },\r
+        {\r
+            "celsius",\r
+            "kelvin",\r
+            {1, 273.15, false},\r
+        },\r
+        {\r
+            "fahrenheit",\r
+            "kelvin",\r
+            {5.0 / 9.0, 255.372, false},\r
+        },\r
+        {\r
+            "fahrenheit",\r
+            "celsius",\r
+            {5.0 / 9.0, -17.7777777778, false},\r
+        },\r
+        {\r
+            "celsius",\r
+            "fahrenheit",\r
+            {9.0 / 5.0, 32, false},\r
+        },\r
+        {\r
+            "fahrenheit",\r
+            "fahrenheit",\r
+            {1.0, 0, false},\r
+        },\r
+        {\r
+            "mile-per-gallon",\r
+            "liter-per-100-kilometer",\r
+            {0.00425143707, 0, true},\r
+        },\r
     };\r
 \r
+    ConversionRates rates(status);\r
     for (const auto &testCase : testCases) {\r
-        UErrorCode status = U_ZERO_ERROR;\r
+        auto sourceImpl = MeasureUnitImpl::forIdentifier(testCase.source, status);\r
+        auto targetImpl = MeasureUnitImpl::forIdentifier(testCase.target, status);\r
+        UnitsConverter unitsConverter(sourceImpl, targetImpl, rates, status);\r
 \r
-        MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status);\r
-        MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status);\r
-\r
-        ConversionRates conversionRates(status);\r
-        UnitConverter converter(source, target, conversionRates, status);\r
-\r
-        assertEqualsNear(UnicodeString("testSiPrefixes: ") + testCase.source + " to " + testCase.target,\r
-                         testCase.expectedValue, converter.convert(testCase.inputValue),\r
-                         0.0001 * testCase.expectedValue);\r
-    }\r
-}\r
-\r
-void UnitsTest::testMass() {\r
-    IcuTestErrorCode status(*this, "Units testMass");\r
-\r
-    // Test Cases\r
-    struct TestCase {\r
-        const char *source;\r
-        const char *target;\r
-        const double inputValue;\r
-        const double expectedValue;\r
-    } testCases[]{\r
-        {"gram", "kilogram", 1.0, 0.001},      //\r
-        {"pound", "kilogram", 1.0, 0.453592},  //\r
-        {"pound", "kilogram", 2.0, 0.907185},  //\r
-        {"ounce", "pound", 16.0, 1.0},         //\r
-        {"ounce", "kilogram", 16.0, 0.453592}, //\r
-        {"ton", "pound", 1.0, 2000},           //\r
-        {"stone", "pound", 1.0, 14},           //\r
-        {"stone", "kilogram", 1.0, 6.35029}    //\r
-    };\r
+        if (status.errIfFailureAndReset()) {\r
+            continue;\r
+        }\r
 \r
-    for (const auto &testCase : testCases) {\r
-        UErrorCode status = U_ZERO_ERROR;\r
+        ConversionInfo actualConversionInfo = unitsConverter.getConversionInfo();\r
+        UnicodeString message =\r
+            UnicodeString("testConverter: ") + testCase.source + " to " + testCase.target;\r
 \r
-        MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status);\r
-        MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status);\r
+        double maxDelta = 1e-6 * uprv_fabs(testCase.expectedConversionInfo.conversionRate);\r
+        if (testCase.expectedConversionInfo.conversionRate == 0) {\r
+            maxDelta = 1e-12;\r
+        }\r
+        assertEqualsNear(message + ", conversion rate: ", testCase.expectedConversionInfo.conversionRate,\r
+                         actualConversionInfo.conversionRate, maxDelta);\r
 \r
-        ConversionRates conversionRates(status);\r
-        UnitConverter converter(source, target, conversionRates, status);\r
+        maxDelta = 1e-6 * uprv_fabs(testCase.expectedConversionInfo.offset);\r
+        if (testCase.expectedConversionInfo.offset == 0) {\r
+            maxDelta = 1e-12;\r
+        }\r
+        assertEqualsNear(message + ", offset: ", testCase.expectedConversionInfo.offset, actualConversionInfo.offset,\r
+                         maxDelta);\r
 \r
-        assertEqualsNear(UnicodeString("testMass: ") + testCase.source + " to " + testCase.target,\r
-                         testCase.expectedValue, converter.convert(testCase.inputValue),\r
-                         0.0001 * testCase.expectedValue);\r
+        assertEquals(message + ", reciprocal: ", testCase.expectedConversionInfo.reciprocal,\r
+                     actualConversionInfo.reciprocal);\r
     }\r
 }\r
 \r
-void UnitsTest::testTemperature() {\r
-    IcuTestErrorCode status(*this, "Units testTemperature");\r
+void UnitsTest::testConverter() {\r
+    IcuTestErrorCode status(*this, "UnitsTest::testConverter");\r
+\r
     // Test Cases\r
     struct TestCase {\r
         const char *source;\r
@@ -233,66 +273,120 @@ void UnitsTest::testTemperature() {
         const double inputValue;\r
         const double expectedValue;\r
     } testCases[]{\r
-        {"celsius", "fahrenheit", 0.0, 32.0},   //\r
-        {"celsius", "fahrenheit", 10.0, 50.0},  //\r
-        {"fahrenheit", "celsius", 32.0, 0.0},   //\r
-        {"fahrenheit", "celsius", 89.6, 32},    //\r
-        {"kelvin", "fahrenheit", 0.0, -459.67}, //\r
-        {"kelvin", "fahrenheit", 300, 80.33},   //\r
-        {"kelvin", "celsius", 0.0, -273.15},    //\r
-        {"kelvin", "celsius", 300.0, 26.85}     //\r
+        // SI Prefixes\r
+        {"gram", "kilogram", 1.0, 0.001},\r
+        {"milligram", "kilogram", 1.0, 0.000001},\r
+        {"microgram", "kilogram", 1.0, 0.000000001},\r
+        {"megagram", "gram", 1.0, 1000000},\r
+        {"megagram", "kilogram", 1.0, 1000},\r
+        {"gigabyte", "byte", 1.0, 1000000000},\r
+        {"megawatt", "watt", 1.0, 1000000},\r
+        {"megawatt", "kilowatt", 1.0, 1000},\r
+        // Binary Prefixes\r
+        {"kilobyte", "byte", 1, 1000},\r
+        {"kibibyte", "byte", 1, 1024},\r
+        {"mebibyte", "byte", 1, 1048576},\r
+        {"gibibyte", "kibibyte", 1, 1048576},\r
+        {"pebibyte", "tebibyte", 4, 4096},\r
+        {"zebibyte", "pebibyte", 1.0 / 16, 65536.0},\r
+        {"yobibyte", "exbibyte", 1, 1048576},\r
+        // Mass\r
+        {"gram", "kilogram", 1.0, 0.001},\r
+        {"pound", "kilogram", 1.0, 0.453592},\r
+        {"pound", "kilogram", 2.0, 0.907185},\r
+        {"ounce", "pound", 16.0, 1.0},\r
+        {"ounce", "kilogram", 16.0, 0.453592},\r
+        {"ton", "pound", 1.0, 2000},\r
+        {"stone", "pound", 1.0, 14},\r
+        {"stone", "kilogram", 1.0, 6.35029},\r
+        // Temperature\r
+        {"celsius", "fahrenheit", 0.0, 32.0},\r
+        {"celsius", "fahrenheit", 10.0, 50.0},\r
+        {"celsius", "fahrenheit", 1000, 1832},\r
+        {"fahrenheit", "celsius", 32.0, 0.0},\r
+        {"fahrenheit", "celsius", 89.6, 32},\r
+        {"fahrenheit", "fahrenheit", 1000, 1000},\r
+        {"kelvin", "fahrenheit", 0.0, -459.67},\r
+        {"kelvin", "fahrenheit", 300, 80.33},\r
+        {"kelvin", "celsius", 0.0, -273.15},\r
+        {"kelvin", "celsius", 300.0, 26.85},\r
+        // Area\r
+        {"square-meter", "square-yard", 10.0, 11.9599},\r
+        {"hectare", "square-yard", 1.0, 11959.9},\r
+        {"square-mile", "square-foot", 0.0001, 2787.84},\r
+        {"hectare", "square-yard", 1.0, 11959.9},\r
+        {"hectare", "square-meter", 1.0, 10000},\r
+        {"hectare", "square-meter", 0.0, 0.0},\r
+        {"square-mile", "square-foot", 0.0001, 2787.84},\r
+        {"square-yard", "square-foot", 10, 90},\r
+        {"square-yard", "square-foot", 0, 0},\r
+        {"square-yard", "square-foot", 0.000001, 0.000009},\r
+        {"square-mile", "square-foot", 0.0, 0.0},\r
+        // Fuel Consumption\r
+        {"cubic-meter-per-meter", "mile-per-gallon", 2.1383143939394E-6, 1.1},\r
+        {"cubic-meter-per-meter", "mile-per-gallon", 2.6134953703704E-6, 0.9},\r
     };\r
 \r
     for (const auto &testCase : testCases) {\r
-        UErrorCode status = U_ZERO_ERROR;\r
-\r
         MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status);\r
+        if (status.errIfFailureAndReset("source MeasureUnitImpl::forIdentifier(\"%s\", ...)",\r
+                                        testCase.source)) {\r
+            continue;\r
+        }\r
         MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status);\r
+        if (status.errIfFailureAndReset("target MeasureUnitImpl::forIdentifier(\"%s\", ...)",\r
+                                        testCase.target)) {\r
+            continue;\r
+        }\r
 \r
         ConversionRates conversionRates(status);\r
-        UnitConverter converter(source, target, conversionRates, status);\r
-\r
-        assertEqualsNear(UnicodeString("testTemperature: ") + testCase.source + " to " + testCase.target,\r
-                         testCase.expectedValue, converter.convert(testCase.inputValue),\r
-                         0.0001 * uprv_fabs(testCase.expectedValue));\r
-    }\r
-}\r
+        if (status.errIfFailureAndReset("conversionRates(status)")) {\r
+            continue;\r
+        }\r
+        UnitsConverter converter(source, target, conversionRates, status);\r
+        if (status.errIfFailureAndReset("UnitsConverter(<%s>, <%s>, ...)", testCase.source,\r
+                                        testCase.target)) {\r
+            continue;\r
+        }\r
 \r
-void UnitsTest::testArea() {\r
-    IcuTestErrorCode status(*this, "Units Area");\r
+        double maxDelta = 1e-6 * uprv_fabs(testCase.expectedValue);\r
+        if (testCase.expectedValue == 0) {\r
+            maxDelta = 1e-12;\r
+        }\r
+        assertEqualsNear(UnicodeString("testConverter: ") + testCase.source + " to " + testCase.target,\r
+                         testCase.expectedValue, converter.convert(testCase.inputValue), maxDelta);\r
 \r
-    // Test Cases\r
-    struct TestCase {\r
-        const char *source;\r
-        const char *target;\r
-        const double inputValue;\r
-        const double expectedValue;\r
-    } testCases[]{\r
-        {"square-meter", "square-yard", 10.0, 11.9599},     //\r
-        {"hectare", "square-yard", 1.0, 11959.9},           //\r
-        {"square-mile", "square-foot", 0.0001, 2787.84},    //\r
-        {"hectare", "square-yard", 1.0, 11959.9},           //\r
-        {"hectare", "square-meter", 1.0, 10000},            //\r
-        {"hectare", "square-meter", 0.0, 0.0},              //\r
-        {"square-mile", "square-foot", 0.0001, 2787.84},    //\r
-        {"square-yard", "square-foot", 10, 90},             //\r
-        {"square-yard", "square-foot", 0, 0},               //\r
-        {"square-yard", "square-foot", 0.000001, 0.000009}, //\r
-        {"square-mile", "square-foot", 0.0, 0.0},           //\r
-    };\r
+        maxDelta = 1e-6 * uprv_fabs(testCase.inputValue);\r
+        if (testCase.inputValue == 0) {\r
+            maxDelta = 1e-12;\r
+        }\r
+        assertEqualsNear(\r
+            UnicodeString("testConverter inverse: ") + testCase.target + " back to " + testCase.source,\r
+            testCase.inputValue, converter.convertInverse(testCase.expectedValue), maxDelta);\r
 \r
-    for (const auto &testCase : testCases) {\r
-        UErrorCode status = U_ZERO_ERROR;\r
 \r
-        MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status);\r
-        MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status);\r
+        // TODO: Test UnitsConverter created using CLDR separately.\r
+        // Test UnitsConverter created by CLDR unit identifiers\r
+        UnitsConverter converter2(testCase.source, testCase.target, status);\r
+        if (status.errIfFailureAndReset("UnitsConverter(<%s>, <%s>, ...)", testCase.source,\r
+                                        testCase.target)) {\r
+            continue;\r
+        }\r
 \r
-        ConversionRates conversionRates(status);\r
-        UnitConverter converter(source, target, conversionRates, status);\r
+        maxDelta = 1e-6 * uprv_fabs(testCase.expectedValue);\r
+        if (testCase.expectedValue == 0) {\r
+            maxDelta = 1e-12;\r
+        }\r
+        assertEqualsNear(UnicodeString("testConverter2: ") + testCase.source + " to " + testCase.target,\r
+                         testCase.expectedValue, converter2.convert(testCase.inputValue), maxDelta);\r
 \r
-        assertEqualsNear(UnicodeString("testArea: ") + testCase.source + " to " + testCase.target,\r
-                         testCase.expectedValue, converter.convert(testCase.inputValue),\r
-                         0.0001 * testCase.expectedValue);\r
+        maxDelta = 1e-6 * uprv_fabs(testCase.inputValue);\r
+        if (testCase.inputValue == 0) {\r
+            maxDelta = 1e-12;\r
+        }\r
+        assertEqualsNear(\r
+            UnicodeString("testConverter2 inverse: ") + testCase.target + " back to " + testCase.source,\r
+            testCase.inputValue, converter2.convertInverse(testCase.expectedValue), maxDelta);\r
     }\r
 }\r
 \r
@@ -399,9 +493,9 @@ void unitsTestDataLineFn(void *context, char *fields[][2], int32_t fieldCount, U
     unitsTest->assertNotEquals(msg.data(), UNCONVERTIBLE, convertibility);\r
 \r
     // Conversion:\r
-    UnitConverter converter(sourceUnit, targetUnit, *ctx->conversionRates, status);\r
-    if (status.errIfFailureAndReset("constructor: UnitConverter(<%s>, <%s>, status)",\r
-                                    sourceIdent.data(), targetIdent.data())) {\r
+    UnitsConverter converter(sourceUnit, targetUnit, *ctx->conversionRates, status);\r
+    if (status.errIfFailureAndReset("UnitsConverter(<%s>, <%s>, ...)", sourceIdent.data(),\r
+                                    targetIdent.data())) {\r
         return;\r
     }\r
     double got = converter.convert(1000);\r
@@ -418,12 +512,12 @@ void unitsTestDataLineFn(void *context, char *fields[][2], int32_t fieldCount, U
  * Runs data-driven unit tests for unit conversion. It looks for the test cases\r
  * in source/test/testdata/cldr/units/unitsTest.txt, which originates in CLDR.\r
  */\r
-void UnitsTest::testConversions() {\r
+void UnitsTest::testConverterWithCLDRTests() {\r
     const char *filename = "unitsTest.txt";\r
     const int32_t kNumFields = 5;\r
     char *fields[kNumFields][2];\r
 \r
-    IcuTestErrorCode errorCode(*this, "UnitsTest::testConversions");\r
+    IcuTestErrorCode errorCode(*this, "UnitsTest::testConverterWithCLDRTests");\r
     const char *sourceTestDataPath = getSourceTestData(errorCode);\r
     if (errorCode.errIfFailureAndReset("unable to find the source/test/testdata "\r
                                        "folder (getSourceTestData())")) {\r
@@ -444,115 +538,233 @@ void UnitsTest::testConversions() {
 \r
 void UnitsTest::testComplexUnitsConverter() {\r
     IcuTestErrorCode status(*this, "UnitsTest::testComplexUnitsConverter");\r
+\r
+    // DBL_EPSILON is approximately 2.22E-16, and is the precision of double for\r
+    // values in the range [1.0, 2.0), but half the precision of double for\r
+    // [2.0, 4.0).\r
+    U_ASSERT(1.0 + DBL_EPSILON > 1.0);\r
+    U_ASSERT(2.0 - DBL_EPSILON < 2.0);\r
+    U_ASSERT(2.0 + DBL_EPSILON == 2.0);\r
+\r
+    struct TestCase {\r
+        const char* msg;\r
+        const char* input;\r
+        const char* output;\r
+        double value;\r
+        Measure expected[2];\r
+        int32_t expectedCount;\r
+        // For mixed units, accuracy of the smallest unit\r
+        double accuracy;\r
+    } testCases[]{\r
+        // Significantly less than 2.0.\r
+        {"1.9999",\r
+         "foot",\r
+         "foot-and-inch",\r
+         1.9999,\r
+         {Measure(1, MeasureUnit::createFoot(status), status),\r
+          Measure(11.9988, MeasureUnit::createInch(status), status)},\r
+         2,\r
+         0},\r
+\r
+        // A minimal nudge under 2.0, rounding up to 2.0 ft, 0 in.\r
+        {"2-eps",\r
+         "foot",\r
+         "foot-and-inch",\r
+         2.0 - DBL_EPSILON,\r
+         {Measure(2, MeasureUnit::createFoot(status), status),\r
+          Measure(0, MeasureUnit::createInch(status), status)},\r
+         2,\r
+         0},\r
+\r
+        // A slightly bigger nudge under 2.0, *not* rounding up to 2.0 ft!\r
+        {"2-3eps",\r
+         "foot",\r
+         "foot-and-inch",\r
+         2.0 - 3 * DBL_EPSILON,\r
+         {Measure(1, MeasureUnit::createFoot(status), status),\r
+          // We expect 12*3*DBL_EPSILON inches (7.92e-15) less than 12.\r
+          Measure(12 - 36 * DBL_EPSILON, MeasureUnit::createInch(status), status)},\r
+         2,\r
+         // Might accuracy be lacking with some compilers or on some systems? In\r
+         // case it is somehow lacking, we'll allow a delta of 12 * DBL_EPSILON.\r
+         12 * DBL_EPSILON},\r
+\r
+        // Testing precision with meter and light-year.\r
+        //\r
+        // DBL_EPSILON light-years, ~2.22E-16 light-years, is ~2.1 meters\r
+        // (maximum precision when exponent is 0).\r
+        //\r
+        // 1e-16 light years is 0.946073 meters.\r
+\r
+        // A 2.1 meter nudge under 2.0 light years, rounding up to 2.0 ly, 0 m.\r
+        {"2-eps",\r
+         "light-year",\r
+         "light-year-and-meter",\r
+         2.0 - DBL_EPSILON,\r
+         {Measure(2, MeasureUnit::createLightYear(status), status),\r
+          Measure(0, MeasureUnit::createMeter(status), status)},\r
+         2,\r
+         0},\r
+\r
+        // A 2.1 meter nudge under 1.0 light years, rounding up to 1.0 ly, 0 m.\r
+        {"1-eps",\r
+         "light-year",\r
+         "light-year-and-meter",\r
+         1.0 - DBL_EPSILON,\r
+         {Measure(1, MeasureUnit::createLightYear(status), status),\r
+          Measure(0, MeasureUnit::createMeter(status), status)},\r
+         2,\r
+         0},\r
+\r
+        // 1e-15 light years is 9.46073 meters (calculated using "bc" and the\r
+        // CLDR conversion factor). With double-precision maths in C++, we get\r
+        // 10.5. In this case, we're off by a bit more than 1 meter. With Java\r
+        // BigDecimal, we get accurate results.\r
+        {"1 + 1e-15",\r
+         "light-year",\r
+         "light-year-and-meter",\r
+         1.0 + 1e-15,\r
+         {Measure(1, MeasureUnit::createLightYear(status), status),\r
+          Measure(9.46073, MeasureUnit::createMeter(status), status)},\r
+         2,\r
+         1.5 /* meters, precision */},\r
+\r
+        // 2.1 meters more than 1 light year is not rounded away.\r
+        {"1 + eps",\r
+         "light-year",\r
+         "light-year-and-meter",\r
+         1.0 + DBL_EPSILON,\r
+         {Measure(1, MeasureUnit::createLightYear(status), status),\r
+          Measure(2.1, MeasureUnit::createMeter(status), status)},\r
+         2,\r
+         0.001},\r
+    };\r
+    status.assertSuccess();\r
+\r
     ConversionRates rates(status);\r
-    MeasureUnit input = MeasureUnit::getFoot();\r
-    MeasureUnit output = MeasureUnit::forIdentifier("foot-and-inch", status);\r
+    MeasureUnit input, output;\r
     MeasureUnitImpl tempInput, tempOutput;\r
-    const MeasureUnitImpl &inputImpl = MeasureUnitImpl::forMeasureUnit(input, tempInput, status);\r
-    const MeasureUnitImpl &outputImpl = MeasureUnitImpl::forMeasureUnit(output, tempOutput, status);\r
-    auto converter = ComplexUnitsConverter(inputImpl, outputImpl, rates, status);\r
-\r
-    // Significantly less than 2.0.\r
-    MaybeStackVector<Measure> measures = converter.convert(1.9999, nullptr, status);\r
-    assertEquals("measures length", 2, measures.length());\r
-    if (2 == measures.length()) {\r
-        assertEquals("1.9999: measures[0] value", 1.0, measures[0]->getNumber().getDouble(status));\r
-        assertEquals("1.9999: measures[0] unit", MeasureUnit::getFoot().getIdentifier(),\r
-                     measures[0]->getUnit().getIdentifier());\r
-        assertEqualsNear("1.9999: measures[1] value", 11.9988,\r
-                         measures[1]->getNumber().getDouble(status), 0.0001);\r
-        assertEquals("1.9999: measures[1] unit", MeasureUnit::getInch().getIdentifier(),\r
-                     measures[1]->getUnit().getIdentifier());\r
-    }\r
-\r
-    // TODO(icu-units#100): consider factoring out the set of tests to make this function more\r
-    // data-driven.\r
-\r
-    // A minimal nudge under 2.0.\r
-    measures = converter.convert((2.0 - DBL_EPSILON), nullptr, status);\r
-    assertEquals("measures length", 2, measures.length());\r
-    if (2 == measures.length()) {\r
-        assertEquals("1 - eps: measures[0] value", 2.0, measures[0]->getNumber().getDouble(status));\r
-        assertEquals("1 - eps: measures[0] unit", MeasureUnit::getFoot().getIdentifier(),\r
-                     measures[0]->getUnit().getIdentifier());\r
-        assertEquals("1 - eps: measures[1] value", 0.0, measures[1]->getNumber().getDouble(status));\r
-        assertEquals("1 - eps: measures[1] unit", MeasureUnit::getInch().getIdentifier(),\r
-                     measures[1]->getUnit().getIdentifier());\r
-    }\r
-\r
-    // Testing precision with meter and light-year. 1e-16 light years is\r
-    // 0.946073 meters, and double precision can provide only ~15 decimal\r
-    // digits, so we don't expect to get anything less than 1 meter.\r
-\r
-    // An epsilon's nudge under one light-year: should give 1 ly, 0 m.\r
-    input = MeasureUnit::getLightYear();\r
-    output = MeasureUnit::forIdentifier("light-year-and-meter", status);\r
-    const MeasureUnitImpl &inputImpl3 = MeasureUnitImpl::forMeasureUnit(input, tempInput, status);\r
-    const MeasureUnitImpl &outputImpl3 = MeasureUnitImpl::forMeasureUnit(output, tempOutput, status);\r
-    converter = ComplexUnitsConverter(inputImpl3, outputImpl3, rates, status);\r
-    measures = converter.convert((2.0 - DBL_EPSILON), nullptr, status);\r
-    assertEquals("measures length", 2, measures.length());\r
-    if (2 == measures.length()) {\r
-        assertEquals("light-year test: measures[0] value", 2.0,\r
-                     measures[0]->getNumber().getDouble(status));\r
-        assertEquals("light-year test: measures[0] unit", MeasureUnit::getLightYear().getIdentifier(),\r
-                     measures[0]->getUnit().getIdentifier());\r
-        assertEquals("light-year test: measures[1] value", 0.0,\r
-                     measures[1]->getNumber().getDouble(status));\r
-        assertEquals("light-year test: measures[1] unit", MeasureUnit::getMeter().getIdentifier(),\r
-                     measures[1]->getUnit().getIdentifier());\r
-    }\r
-\r
-    // 1e-15 light years is 9.46073 meters (calculated using "bc" and the CLDR\r
-    // conversion factor). With double-precision maths, we get 10.5. In this\r
-    // case, we're off by almost 1 meter.\r
-    measures = converter.convert((1.0 + 1e-15), nullptr, status);\r
-    assertEquals("measures length", 2, measures.length());\r
-    if (2 == measures.length()) {\r
-        assertEquals("light-year test: measures[0] value", 1.0,\r
-                     measures[0]->getNumber().getDouble(status));\r
-        assertEquals("light-year test: measures[0] unit", MeasureUnit::getLightYear().getIdentifier(),\r
-                     measures[0]->getUnit().getIdentifier());\r
-        assertEqualsNear("light-year test: measures[1] value", 10,\r
-                         measures[1]->getNumber().getDouble(status), 1);\r
-        assertEquals("light-year test: measures[1] unit", MeasureUnit::getMeter().getIdentifier(),\r
-                     measures[1]->getUnit().getIdentifier());\r
-    }\r
-\r
-    // 2e-16 light years is 1.892146 meters. We consider this in the noise, and\r
-    // thus expect a 0. (This test fails when 2e-16 is increased to 4e-16.)\r
-    measures = converter.convert((1.0 + 2e-16), nullptr, status);\r
-    assertEquals("measures length", 2, measures.length());\r
-    if (2 == measures.length()) {\r
-        assertEquals("light-year test: measures[0] value", 1.0,\r
-                     measures[0]->getNumber().getDouble(status));\r
-        assertEquals("light-year test: measures[0] unit", MeasureUnit::getLightYear().getIdentifier(),\r
-                     measures[0]->getUnit().getIdentifier());\r
-        assertEquals("light-year test: measures[1] value", 0.0,\r
-                     measures[1]->getNumber().getDouble(status));\r
-        assertEquals("light-year test: measures[1] unit", MeasureUnit::getMeter().getIdentifier(),\r
-                     measures[1]->getUnit().getIdentifier());\r
+    MaybeStackVector<Measure> measures;\r
+    auto testATestCase = [&](const ComplexUnitsConverter& converter ,StringPiece initMsg , const TestCase &testCase) {\r
+        measures = converter.convert(testCase.value, nullptr, status);\r
+\r
+        CharString msg(initMsg, status);\r
+        msg.append(testCase.msg, status);\r
+        msg.append(" ", status);\r
+        msg.append(testCase.input, status);\r
+        msg.append(" -> ", status);\r
+        msg.append(testCase.output, status);\r
+\r
+        CharString msgCount(msg, status);\r
+        msgCount.append(", measures.length()", status);\r
+        assertEquals(msgCount.data(), testCase.expectedCount, measures.length());\r
+        for (int i = 0; i < measures.length() && i < testCase.expectedCount; i++) {\r
+            if (i == testCase.expectedCount-1) {\r
+                assertEqualsNear(msg.data(), testCase.expected[i].getNumber().getDouble(status),\r
+                                 measures[i]->getNumber().getDouble(status), testCase.accuracy);\r
+            } else {\r
+                assertEquals(msg.data(), testCase.expected[i].getNumber().getDouble(status),\r
+                             measures[i]->getNumber().getDouble(status));\r
+            }\r
+            assertEquals(msg.data(), testCase.expected[i].getUnit().getIdentifier(),\r
+                         measures[i]->getUnit().getIdentifier());\r
+        }\r
+    };\r
+\r
+    for (const auto &testCase : testCases)\r
+    {\r
+        input = MeasureUnit::forIdentifier(testCase.input, status);\r
+        output = MeasureUnit::forIdentifier(testCase.output, status);\r
+        const MeasureUnitImpl& inputImpl = MeasureUnitImpl::forMeasureUnit(input, tempInput, status);\r
+        const MeasureUnitImpl& outputImpl = MeasureUnitImpl::forMeasureUnit(output, tempOutput, status);\r
+\r
+        ComplexUnitsConverter converter1(inputImpl, outputImpl, rates, status);\r
+        testATestCase(converter1, "ComplexUnitsConverter #1 " , testCase);\r
+\r
+        // Test ComplexUnitsConverter created with CLDR units identifiers.\r
+        ComplexUnitsConverter converter2( testCase.input, testCase.output, status);\r
+        testATestCase(converter2, "ComplexUnitsConverter #1 " , testCase);\r
     }\r
+    \r
+    \r
+    status.assertSuccess();\r
 \r
     // TODO(icu-units#63): test negative numbers!\r
 }\r
 \r
-void UnitsTest::testComplexUnitConverterSorting() {\r
-    IcuTestErrorCode status(*this, "UnitsTest::testComplexUnitConverterSorting");\r
-\r
-    MeasureUnitImpl source = MeasureUnitImpl::forIdentifier("meter", status);\r
-    MeasureUnitImpl target = MeasureUnitImpl::forIdentifier("inch-and-foot", status);\r
+void UnitsTest::testComplexUnitsConverterSorting() {\r
+    IcuTestErrorCode status(*this, "UnitsTest::testComplexUnitsConverterSorting");\r
     ConversionRates conversionRates(status);\r
 \r
-    ComplexUnitsConverter complexConverter(source, target, conversionRates, status);\r
-    auto measures = complexConverter.convert(10.0, nullptr, status);\r
+    status.assertSuccess();\r
+\r
+    struct TestCase {\r
+        const char *msg;\r
+        const char *input;\r
+        const char *output;\r
+        double inputValue;\r
+        Measure expected[3];\r
+        int32_t expectedCount;\r
+        // For mixed units, accuracy of the smallest unit\r
+        double accuracy;\r
+    } testCases[]{{"inch-and-foot",\r
+                   "meter",\r
+                   "inch-and-foot",\r
+                   10.0,\r
+                   {\r
+                       Measure(9.70079, MeasureUnit::createInch(status), status),\r
+                       Measure(32, MeasureUnit::createFoot(status), status),\r
+                       Measure(0, MeasureUnit::createBit(status), status),\r
+                   },\r
+                   2,\r
+                   0.00001},\r
+                  {"inch-and-yard-and-foot",\r
+                   "meter",\r
+                   "inch-and-yard-and-foot",\r
+                   100.0,\r
+                   {\r
+                       Measure(1.0079, MeasureUnit::createInch(status), status),\r
+                       Measure(109, MeasureUnit::createYard(status), status),\r
+                       Measure(1, MeasureUnit::createFoot(status), status),\r
+                   },\r
+                   3,\r
+                   0.0001}};\r
+\r
+    for (const auto &testCase : testCases) {\r
+        MeasureUnitImpl inputImpl = MeasureUnitImpl::forIdentifier(testCase.input, status);\r
+        if (status.errIfFailureAndReset()) {\r
+            continue;\r
+        }\r
+        MeasureUnitImpl outputImpl = MeasureUnitImpl::forIdentifier(testCase.output, status);\r
+        if (status.errIfFailureAndReset()) {\r
+            continue;\r
+        }\r
+        ComplexUnitsConverter converter(inputImpl, outputImpl, conversionRates, status);\r
+        if (status.errIfFailureAndReset()) {\r
+            continue;\r
+        }\r
+\r
+        auto actual = converter.convert(testCase.inputValue, nullptr, status);\r
+        if (status.errIfFailureAndReset()) {\r
+            continue;\r
+        }\r
+        if (actual.length() < testCase.expectedCount) {\r
+            errln("converter.convert(...) returned too few Measures");\r
+            continue;\r
+        }\r
 \r
-    if (2 == measures.length()) {\r
-        assertEquals("inch-and-foot unit 0", "inch", measures[0]->getUnit().getIdentifier());\r
-        assertEquals("inch-and-foot unit 1", "foot", measures[1]->getUnit().getIdentifier());\r
+        for (int i = 0; i < testCase.expectedCount; i++) {\r
+            assertEquals(testCase.msg, testCase.expected[i].getUnit().getIdentifier(),\r
+                         actual[i]->getUnit().getIdentifier());\r
 \r
-        assertEqualsNear("inch-and-foot value 0", 9.7008, measures[0]->getNumber().getDouble(), 0.0001);\r
-        assertEqualsNear("inch-and-foot value 1", 32, measures[1]->getNumber().getInt64(), 0.00001);\r
+            if (testCase.expected[i].getNumber().getType() == Formattable::Type::kInt64) {\r
+                assertEquals(testCase.msg, testCase.expected[i].getNumber().getInt64(),\r
+                             actual[i]->getNumber().getInt64());\r
+            } else {\r
+                assertEqualsNear(testCase.msg, testCase.expected[i].getNumber().getDouble(),\r
+                                 actual[i]->getNumber().getDouble(), testCase.accuracy);\r
+            }\r
+        }\r
     }\r
 }\r
 \r
@@ -752,6 +964,35 @@ void unitPreferencesTestDataLineFn(void *context, char *fields[][2], int32_t fie
     }\r
     // TODO: revisit this experimentally chosen precision:\r
     checkOutput(unitsTest, msg.data(), expected, routeResult.measures, 0.0000000001);\r
+\r
+    // Test UnitsRouter created with CLDR units identifiers.\r
+    CharString inputUnitIdentifier(inputUnit, status);\r
+    UnitsRouter router2(inputUnitIdentifier.data(), region, usage, status);\r
+    if (status.errIfFailureAndReset("UnitsRouter2(<%s>, \"%.*s\", \"%.*s\", status)",\r
+                                    inputUnitIdentifier.data(), region.length(), region.data(),\r
+                                    usage.length(), usage.data())) {\r
+        return;\r
+    }\r
+\r
+    CharString msg2(quantity, status);\r
+    msg2.append(" ", status);\r
+    msg2.append(usage, status);\r
+    msg2.append(" ", status);\r
+    msg2.append(region, status);\r
+    msg2.append(" ", status);\r
+    msg2.append(inputD, status);\r
+    msg2.append(" ", status);\r
+    msg2.append(inputUnitIdentifier.data(), status);\r
+    if (status.errIfFailureAndReset("Failure before router2.route")) {\r
+        return;\r
+    }\r
+\r
+    RouteResult routeResult2 = router2.route(inputAmount, nullptr, status);\r
+    if (status.errIfFailureAndReset("router2.route(inputAmount, ...)")) {\r
+        return;\r
+    }\r
+    // TODO: revisit this experimentally chosen precision:\r
+    checkOutput(unitsTest, msg2.data(), expected, routeResult.measures, 0.0000000001);\r
 }\r
 \r
 /**\r
@@ -861,12 +1102,12 @@ void parsePreferencesTests(const char *filename, char delimiter, char *fields[][
  * in source/test/testdata/cldr/units/unitPreferencesTest.txt, which originates\r
  * in CLDR.\r
  */\r
-void UnitsTest::testPreferences() {\r
+void UnitsTest::testUnitPreferencesWithCLDRTests() {\r
     const char *filename = "unitPreferencesTest.txt";\r
     const int32_t maxFields = 11;\r
     char *fields[maxFields][2];\r
 \r
-    IcuTestErrorCode errorCode(*this, "UnitsTest::testPreferences");\r
+    IcuTestErrorCode errorCode(*this, "UnitsTest::testUnitPreferencesWithCLDRTests");\r
     const char *sourceTestDataPath = getSourceTestData(errorCode);\r
     if (errorCode.errIfFailureAndReset("unable to find the source/test/testdata "\r
                                        "folder (getSourceTestData())")) {\r
index a3a8900..64ca844 100644 (file)
@@ -98,6 +98,7 @@ UnicodeSetTest::runIndexedTest(int32_t index, UBool exec,
     TESTCASE_AUTO(TestIntOverflow);\r
     TESTCASE_AUTO(TestUnusedCcc);\r
     TESTCASE_AUTO(TestDeepPattern);\r
+    TESTCASE_AUTO(TestEmptyString);\r
     TESTCASE_AUTO_END;\r
 }\r
 \r
@@ -175,19 +176,19 @@ void UnicodeSetTest::TestToPattern() {
             const char* exp2[] = {"aa", "ab", "ac", NOT, "xy", NULL};\r
             expectToPattern(*s, "[a-z{aa}{ab}{ac}]", exp2);\r
 \r
-            s->applyPattern(UNICODE_STRING_SIMPLE("[a-z {\\{l} {r\\}}]"), ec);\r
+            s->applyPattern(u"[a-z {\\{l} {r\\}}]", ec);\r
             if (U_FAILURE(ec)) break;\r
             const char* exp3[] = {"{l", "r}", NOT, "xy", NULL};\r
-            expectToPattern(*s, UNICODE_STRING_SIMPLE("[a-z{r\\}}{\\{l}]"), exp3);\r
+            expectToPattern(*s, u"[a-z{r\\}}{\\{l}]", exp3);\r
 \r
             s->add("[]");\r
             const char* exp4[] = {"{l", "r}", "[]", NOT, "xy", NULL};\r
-            expectToPattern(*s, UNICODE_STRING_SIMPLE("[a-z{\\[\\]}{r\\}}{\\{l}]"), exp4);\r
+            expectToPattern(*s, u"[a-z{\\[\\]}{r\\}}{\\{l}]", exp4);\r
 \r
-            s->applyPattern(UNICODE_STRING_SIMPLE("[a-z {\\u4E01\\u4E02}{\\n\\r}]"), ec);\r
+            s->applyPattern(u"[a-z {\\u4E01\\u4E02}{\\n\\r}]", ec);\r
             if (U_FAILURE(ec)) break;\r
             const char* exp5[] = {"\\u4E01\\u4E02", "\n\r", NULL};\r
-            expectToPattern(*s, UNICODE_STRING_SIMPLE("[a-z{\\u000A\\u000D}{\\u4E01\\u4E02}]"), exp5);\r
+            expectToPattern(*s, u"[a-z{\\u000A\\u000D}{\\u4E01\\u4E02}]", exp5);\r
 \r
             // j2189\r
             s->clear();\r
@@ -205,7 +206,7 @@ void UnicodeSetTest::TestToPattern() {
  \r
     // JB#3400: For 2 character ranges prefer [ab] to [a-b]\r
     UnicodeSet s;\r
-    s.add((UChar)97, (UChar)98); // 'a', 'b'\r
+    s.add(u'a', u'b');\r
     expectToPattern(s, "[ab]", NULL);\r
 }\r
     \r
@@ -276,7 +277,7 @@ UnicodeSetTest::TestPatterns(void) {
     // Throw in a test of complement\r
     set.complement();\r
     UnicodeString exp;\r
-    exp.append((UChar)0x0000).append("aeeoouu").append((UChar)(0x007a+1)).append((UChar)0xFFFF);\r
+    exp.append((UChar)0x0000).append("aeeoouu").append((UChar)(u'z'+1)).append(u'\uFFFF');\r
     expectPairs(set, exp);\r
 }\r
 \r
@@ -324,14 +325,14 @@ UnicodeSetTest::TestCloneEqualHash(void) {
     // set1 and set2 used to be built with the obsolete constructor taking\r
     // UCharCategory values; replaced with pattern constructors\r
     // markus 20030502\r
-    UnicodeSet *set1=new UnicodeSet(UNICODE_STRING_SIMPLE("\\p{Lowercase Letter}"), status); //  :Ll: Letter, lowercase\r
-    UnicodeSet *set1a=new UnicodeSet(UNICODE_STRING_SIMPLE("[:Ll:]"), status); //  Letter, lowercase\r
+    UnicodeSet *set1=new UnicodeSet(u"\\p{Lowercase Letter}", status); //  :Ll: Letter, lowercase\r
+    UnicodeSet *set1a=new UnicodeSet(u"[:Ll:]", status); //  Letter, lowercase\r
     if (U_FAILURE(status)){\r
         dataerrln((UnicodeString)"FAIL: Can't construst set with category->Ll" + " - " + UnicodeString(u_errorName(status)));\r
         return;\r
     }\r
-    UnicodeSet *set2=new UnicodeSet(UNICODE_STRING_SIMPLE("\\p{Decimal Number}"), status);   //Number, Decimal digit\r
-    UnicodeSet *set2a=new UnicodeSet(UNICODE_STRING_SIMPLE("[:Nd:]"), status);   //Number, Decimal digit\r
+    UnicodeSet *set2=new UnicodeSet(u"\\p{Decimal Number}", status);   //Number, Decimal digit\r
+    UnicodeSet *set2a=new UnicodeSet(u"[:Nd:]", status);   //Number, Decimal digit\r
     if (U_FAILURE(status)){\r
         errln((UnicodeString)"FAIL: Can't construct set with category->Nd");\r
         return;\r
@@ -652,7 +653,7 @@ void UnicodeSetTest::TestAPI() {
         errln("FAIL: UnicodeSetIterator::getString");\r
     }\r
 \r
-    set.add((UChar32)0x61, (UChar32)0x7A);\r
+    set.add(u'a', u'z');\r
     set.complementAll("alan");\r
     exp.applyPattern("[{ab}b-kmo-z]", status);\r
     if (U_FAILURE(status)) { errln("FAIL"); return; }\r
@@ -667,16 +668,16 @@ void UnicodeSetTest::TestAPI() {
     if (!set.containsNone(exp)) { errln("FAIL: containsNone(UnicodeSet)"); }\r
     if (set.containsSome(exp)) { errln("FAIL: containsSome(UnicodeSet)"); }\r
 \r
-    if (set.containsNone((UChar32)0x61, (UChar32)0x7A)) {\r
+    if (set.containsNone(u'a', u'z')) {\r
         errln("FAIL: containsNone(UChar32, UChar32)");\r
     }\r
-    if (!set.containsSome((UChar32)0x61, (UChar32)0x7A)) {\r
+    if (!set.containsSome(u'a', u'z')) {\r
         errln("FAIL: containsSome(UChar32, UChar32)");\r
     }\r
-    if (!set.containsNone((UChar32)0x41, (UChar32)0x5A)) {\r
+    if (!set.containsNone(u'A', u'Z')) {\r
         errln("FAIL: containsNone(UChar32, UChar32)");\r
     }\r
-    if (set.containsSome((UChar32)0x41, (UChar32)0x5A)) {\r
+    if (set.containsSome(u'A', u'Z')) {\r
         errln("FAIL: containsSome(UChar32, UChar32)");\r
     }\r
 \r
@@ -690,15 +691,46 @@ void UnicodeSetTest::TestAPI() {
     if (U_FAILURE(status)) { errln("FAIL"); return; }\r
     if (set != exp) { errln("FAIL: retainAll(\"star\")"); return; }\r
 \r
-    set.retain((UChar32)0x73);\r
+    set.retain(u's');\r
     exp.applyPattern("[s]", status);\r
     if (U_FAILURE(status)) { errln("FAIL"); return; }\r
     if (set != exp) { errln("FAIL: retain('s')"); return; }\r
 \r
+    // ICU 2.6 coverage tests\r
+    // public final UnicodeSet retain(String s);\r
+    // public final UnicodeSet remove(int c);\r
+    // public final UnicodeSet remove(String s);\r
+    // public int hashCode();\r
+    set.applyPattern(u"[a-z{ab}{cd}]", status);\r
+    if (U_FAILURE(status)) { errln("FAIL"); return; }\r
+    set.retain(u"cd");\r
+    exp.applyPattern(u"[{cd}]", status);\r
+    if (U_FAILURE(status)) { errln("FAIL"); return; }\r
+    if (set != exp) { errln("FAIL: (with cd).retain(\"cd\")"); return; }\r
+\r
+    set.applyPattern(u"[a-z{ab}{yz}]", status);\r
+    if (U_FAILURE(status)) { errln("FAIL"); return; }\r
+    set.retain(u"cd");\r
+    exp.clear();\r
+    if (set != exp) { errln("FAIL: (without cd).retain(\"cd\")"); return; }\r
+\r
+    set.applyPattern(u"[a-z{ab}{cd}]", status);\r
+    if (U_FAILURE(status)) { errln("FAIL"); return; }\r
+    set.remove(u'c');\r
+    exp.applyPattern(u"[abd-z{ab}{cd}]", status);\r
+    if (set != exp) { errln("FAIL: remove('c')"); return; }\r
+\r
+    set.remove(u"cd");\r
+    exp.applyPattern(u"[abd-z{ab}]", status);\r
+    if (U_FAILURE(status)) { errln("FAIL"); return; }\r
+    if (set != exp) { errln("FAIL: remove(\"cd\")"); return; }\r
+\r
+    set.applyPattern("[s]", status);\r
+    if (U_FAILURE(status)) { errln("FAIL"); return; }\r
     uint16_t buf[32];\r
     int32_t slen = set.serialize(buf, UPRV_LENGTHOF(buf), status);\r
     if (U_FAILURE(status)) { errln("FAIL: serialize"); return; }\r
-    if (slen != 3 || buf[0] != 2 || buf[1] != 0x73 || buf[2] != 0x74) {\r
+    if (slen != 3 || buf[0] != 2 || buf[1] != u's' || buf[2] != u't') {\r
         errln("FAIL: serialize");\r
         return;\r
     }\r
@@ -716,7 +748,7 @@ void UnicodeSetTest::TestAPI() {
     TEST_ASSERT((void *)constSetx == (void *)constUSet);\r
 \r
     // span(UnicodeString) and spanBack(UnicodeString) convenience methods\r
-    UnicodeString longString=UNICODE_STRING_SIMPLE("aaaaaaaaaabbbbbbbbbbcccccccccc");\r
+    UnicodeString longString=u"aaaaaaaaaabbbbbbbbbbcccccccccc";\r
     UnicodeSet ac(0x61, 0x63);\r
     ac.remove(0x62).freeze();\r
     if( ac.span(longString, -5, USET_SPAN_CONTAINED)!=10 ||\r
@@ -754,7 +786,7 @@ void UnicodeSetTest::TestIteration() {
     \r
     // 6 code points, 3 ranges, 2 strings, 8 total elements\r
     //   Iteration will access them in sorted order -  a, b, c, y, z, U0001abcd, "str1", "str2"\r
-    UnicodeSet set(UNICODE_STRING_SIMPLE("[zabyc\\U0001abcd{str1}{str2}]"), ec);\r
+    UnicodeSet set(u"[zabyc\\U0001abcd{str1}{str2}]", ec);\r
     TEST_ASSERT_SUCCESS(ec);\r
     UnicodeSetIterator it(set);\r
 \r
@@ -871,12 +903,12 @@ void UnicodeSetTest::TestStrings() {
  * Test the [:Latin:] syntax.\r
  */\r
 void UnicodeSetTest::TestScriptSet() {\r
-    expectContainment(UNICODE_STRING_SIMPLE("[:Latin:]"), "aA", CharsToUnicodeString("\\u0391\\u03B1"));\r
+    expectContainment(u"[:Latin:]", "aA", CharsToUnicodeString("\\u0391\\u03B1"));\r
 \r
-    expectContainment(UNICODE_STRING_SIMPLE("[:Greek:]"), CharsToUnicodeString("\\u0391\\u03B1"), "aA");\r
+    expectContainment(u"[:Greek:]", CharsToUnicodeString("\\u0391\\u03B1"), "aA");\r
     \r
     /* Jitterbug 1423 */\r
-    expectContainment(UNICODE_STRING_SIMPLE("[[:Common:][:Inherited:]]"), CharsToUnicodeString("\\U00003099\\U0001D169\\u0000"), "aA");\r
+    expectContainment(u"[[:Common:][:Inherited:]]", CharsToUnicodeString("\\U00003099\\U0001D169\\u0000"), "aA");\r
 \r
 }\r
 \r
@@ -1079,56 +1111,56 @@ void UnicodeSetTest::TestPosixClasses() {
     {\r
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:alpha:]", status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("\\p{Alphabetic}"), status);\r
+        UnicodeSet s2(u"\\p{Alphabetic}", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
     {\r
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:lower:]", status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("\\p{lowercase}"), status);\r
+        UnicodeSet s2(u"\\p{lowercase}", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
     {\r
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:upper:]", status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("\\p{Uppercase}"), status);\r
+        UnicodeSet s2(u"\\p{Uppercase}", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
     {\r
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:punct:]", status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("\\p{gc=Punctuation}"), status);\r
+        UnicodeSet s2(u"\\p{gc=Punctuation}", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
     {\r
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:digit:]", status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("\\p{gc=DecimalNumber}"), status);\r
+        UnicodeSet s2(u"\\p{gc=DecimalNumber}", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
     {\r
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:xdigit:]", status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("[\\p{DecimalNumber}\\p{HexDigit}]"), status);\r
+        UnicodeSet s2(u"[\\p{DecimalNumber}\\p{HexDigit}]", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
     {\r
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:alnum:]", status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("[\\p{Alphabetic}\\p{DecimalNumber}]"), status);\r
+        UnicodeSet s2(u"[\\p{Alphabetic}\\p{DecimalNumber}]", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
     {\r
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:space:]", status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("\\p{Whitespace}"), status);\r
+        UnicodeSet s2(u"\\p{Whitespace}", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
@@ -1136,7 +1168,7 @@ void UnicodeSetTest::TestPosixClasses() {
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:blank:]", status);\r
         TEST_ASSERT_SUCCESS(status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("[\\p{Whitespace}-[\\u000a\\u000B\\u000c\\u000d\\u0085\\p{LineSeparator}\\p{ParagraphSeparator}]]"),\r
+        UnicodeSet s2(u"[\\p{Whitespace}-[\\u000a\\u000B\\u000c\\u000d\\u0085\\p{LineSeparator}\\p{ParagraphSeparator}]]",\r
             status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
@@ -1145,7 +1177,7 @@ void UnicodeSetTest::TestPosixClasses() {
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:cntrl:]", status);\r
         TEST_ASSERT_SUCCESS(status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("\\p{Control}"), status);\r
+        UnicodeSet s2(u"\\p{Control}", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
@@ -1153,7 +1185,7 @@ void UnicodeSetTest::TestPosixClasses() {
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:graph:]", status);\r
         TEST_ASSERT_SUCCESS(status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("[^\\p{Whitespace}\\p{Control}\\p{Surrogate}\\p{Unassigned}]"), status);\r
+        UnicodeSet s2(u"[^\\p{Whitespace}\\p{Control}\\p{Surrogate}\\p{Unassigned}]", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
@@ -1161,7 +1193,7 @@ void UnicodeSetTest::TestPosixClasses() {
         UErrorCode status = U_ZERO_ERROR;\r
         UnicodeSet s1("[:print:]", status);\r
         TEST_ASSERT_SUCCESS(status);\r
-        UnicodeSet s2(UNICODE_STRING_SIMPLE("[[:graph:][:blank:]-[\\p{Control}]]") ,status);\r
+        UnicodeSet s2(u"[[:graph:][:blank:]-[\\p{Control}]]", status);\r
         TEST_ASSERT_SUCCESS(status);\r
         TEST_ASSERT(s1==s2);\r
     }\r
@@ -1197,7 +1229,7 @@ void UnicodeSetTest::TestIndexOf() {
     if (c != -1) {\r
         errln("FAIL: charAt(<out of range>) = %X", c);\r
     }\r
-    int32_t j = set.indexOf((UChar32)0x71/*'q'*/);\r
+    int32_t j = set.indexOf(u'q');\r
     if (j != -1) {\r
         errln((UnicodeString)"FAIL: indexOf('q') = " + j);\r
     }\r
@@ -1414,7 +1446,7 @@ void UnicodeSetTest::TestEscapePattern() {
         if (U_FAILURE(ec)) {\r
             continue;\r
         }\r
-        if (set.contains((UChar)0x0644)){\r
+        if (set.contains(u'\u0644')){\r
             errln((UnicodeString)"FAIL: " + escape(pat) + " contains(U+0664)");\r
         }\r
 \r
@@ -1428,7 +1460,7 @@ void UnicodeSetTest::TestEscapePattern() {
 \r
         for (int32_t i=0; i<set.getRangeCount(); ++i) {\r
             UnicodeString str("Range ");\r
-            str.append((UChar)(0x30 + i))\r
+            str.append((UChar)(u'0' + i))\r
                 .append(": ")\r
                 .append((UChar32)set.getRangeStart(i))\r
                 .append(" - ")\r
@@ -2169,7 +2201,7 @@ void UnicodeSetTest::expectToPattern(const UnicodeSet& set,
     }\r
 }\r
 \r
-static UChar toHexString(int32_t i) { return (UChar)(i + (i < 10 ? 0x30 : (0x41 - 10))); }\r
+static UChar toHexString(int32_t i) { return (UChar)(i + (i < 10 ? u'0' : (u'A' - 10))); }\r
 \r
 void\r
 UnicodeSetTest::doAssert(UBool condition, const char *message)\r
@@ -2189,9 +2221,9 @@ UnicodeSetTest::escape(const UnicodeString& s) {
             buf += c;\r
         } else {\r
             if (c <= 0xFFFF) {\r
-                buf += (UChar)0x5c; buf += (UChar)0x75;\r
+                buf += u"\\u";\r
             } else {\r
-                buf += (UChar)0x5c; buf += (UChar)0x55;\r
+                buf += u"\\U";\r
                 buf += toHexString((c & 0xF0000000) >> 28);\r
                 buf += toHexString((c & 0x0F000000) >> 24);\r
                 buf += toHexString((c & 0x00F00000) >> 20);\r
@@ -2301,7 +2333,7 @@ void UnicodeSetTest::TestFreezable() {
         applyPattern(wsPattern, USET_IGNORE_SPACE, NULL, errorCode).\r
         applyPattern(wsPattern, pos, USET_IGNORE_SPACE, NULL, errorCode).\r
         applyIntPropertyValue(UCHAR_CANONICAL_COMBINING_CLASS, 230, errorCode).\r
-        applyPropertyAlias(UNICODE_STRING_SIMPLE("Assigned"), UnicodeString(), errorCode);\r
+        applyPropertyAlias(u"Assigned", UnicodeString(), errorCode);\r
     if(frozen!=idSet || !(frozen==idSet)) {\r
         errln("FAIL: UnicodeSet::applyXYZ() modified a frozen set");\r
     }\r
@@ -3824,7 +3856,7 @@ void UnicodeSetTest::TestStringSpan() {
         errln("FAIL: UnicodeSet(%s).containsAll(%s[:-4]) should be TRUE", pattern, string);\r
     }\r
 \r
-    string16=UNICODE_STRING_SIMPLE("byayaxya");\r
+    string16=u"byayaxya";\r
     const UChar *s16=string16.getBuffer();\r
     int32_t length16=string16.length();\r
     (void)length16;   // Suppress set but not used warning.\r
@@ -3845,7 +3877,7 @@ void UnicodeSetTest::TestStringSpan() {
         errln("FAIL: Unable to create UnicodeSet(%s) - %s", pattern, u_errorName(errorCode));\r
         return;\r
     }\r
-    string16=UNICODE_STRING_SIMPLE("acdabcdabccd");\r
+    string16=u"acdabcdabccd";\r
     s16=string16.getBuffer();\r
     length16=string16.length();\r
     if( set.span(s16, 12, USET_SPAN_CONTAINED)!=12 ||\r
@@ -3862,7 +3894,7 @@ void UnicodeSetTest::TestStringSpan() {
         errln("FAIL: Unable to create UnicodeSet(%s) - %s", pattern, u_errorName(errorCode));\r
         return;\r
     }\r
-    string16=UNICODE_STRING_SIMPLE("abbcdabcdabd");\r
+    string16=u"abbcdabcdabd";\r
     s16=string16.getBuffer();\r
     length16=string16.length();\r
     if( set.spanBack(s16, 12, USET_SPAN_CONTAINED)!=0 ||\r
@@ -3984,3 +4016,46 @@ void UnicodeSetTest::TestDeepPattern() {
     assertTrue("[a[a[a...1000s...]]] -> error", errorCode.isFailure());\r
     errorCode.reset();\r
 }\r
+\r
+void UnicodeSetTest::TestEmptyString() {\r
+    IcuTestErrorCode errorCode(*this, "TestEmptyString");\r
+    // Starting with ICU 69, the empty string is allowed in UnicodeSet. ICU-13702\r
+    UnicodeSet set(u"[{}]", errorCode);\r
+    if (!assertSuccess("set from pattern with {}", errorCode)) { return; }\r
+    assertTrue("set from pattern with {}", set.contains(u""));\r
+    assertEquals("set from pattern with {}: size", 1, set.size());\r
+    assertFalse("set from pattern with {}: isEmpty", set.isEmpty());\r
+\r
+    // Remove, add back, ...\r
+    assertFalse("remove empty string", set.remove(u"").contains(u""));\r
+    assertEquals("remove empty string: size", 0, set.size());\r
+    assertTrue("remove empty string: isEmpty", set.isEmpty());\r
+    assertTrue("add empty string", set.add(u"").contains(u""));\r
+    // missing API -- assertTrue("retain empty string", set.retain(u"").contains(u""));\r
+    assertFalse("complement-remove empty string", set.complement(u"").contains(u""));\r
+    assertTrue("complement-add empty string", set.complement(u"").contains(u""));\r
+\r
+    assertFalse("clear", set.clear().contains(u""));\r
+    assertTrue("add empty string 2", set.add(u"").contains(u""));\r
+    assertFalse("removeAllStrings", set.removeAllStrings().contains(u""));\r
+    assertTrue("add empty string 3", set.add(u"").contains(u""));\r
+    // Note that this leaves the set containing exactly the empty string.\r
+\r
+    // strings() access and iteration\r
+    // no C++ equivalent for Java strings() -- assertTrue("strings()", set.strings().contains(u""));\r
+    UnicodeSetIterator sit(set);\r
+    assertTrue("set iterator.next()", sit.next());\r
+    assertTrue("set iterator has empty string", sit.isString() && sit.getString().isEmpty());\r
+\r
+    // The empty string is ignored in matching.\r
+    set.add(u'a').add(u'c');\r
+    assertEquals("span", 1, set.span(u"abc", 3, USET_SPAN_SIMPLE));\r
+    assertEquals("spanBack", 2, set.spanBack(u"abc", 3, USET_SPAN_SIMPLE));\r
+    assertTrue("containsNone", set.containsNone(u"def"));\r
+    assertFalse("containsSome", set.containsSome(u"def"));\r
+    set.freeze();\r
+    assertEquals("frozen span", 1, set.span(u"abc", 3, USET_SPAN_SIMPLE));\r
+    assertEquals("frozen spanBack", 2, set.spanBack(u"abc", 3, USET_SPAN_SIMPLE));\r
+    assertTrue("frozen containsNone", set.containsNone(u"def"));\r
+    assertFalse("frozen containsSome", set.containsSome(u"def"));\r
+}\r
index 21b0e49..870c0b8 100644 (file)
@@ -94,6 +94,7 @@ private:
     void TestIntOverflow();\r
     void TestUnusedCcc();\r
     void TestDeepPattern();\r
+    void TestEmptyString();\r
 \r
 private:\r
 \r
index 677fecd..8553430 100644 (file)
@@ -394,7 +394,7 @@ void PortableFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) co
 \r
 le_bool PortableFontInstance::getGlyphPoint(LEGlyphID /*glyph*/, le_int32 /*pointNumber*/, LEPoint &/*point*/) const\r
 {\r
-    return FALSE;\r
+    return false;\r
 }\r
 \r
 le_int32 PortableFontInstance::getUnitsPerEM() const\r
index 326aa67..8f2f872 100644 (file)
@@ -135,6 +135,6 @@ float SimpleFontInstance::getScaleFactorY() const
 \r
 le_bool SimpleFontInstance::getGlyphPoint(LEGlyphID /*glyph*/, le_int32 /*pointNumber*/, LEPoint &/*point*/) const\r
 {\r
-    return FALSE;\r
+    return false;\r
 }\r
 \r
index acdf986..754871d 100644 (file)
@@ -125,45 +125,45 @@ static void U_CALLCONV ParamTest(void)
     DELETE_ARRAY(glyphs);\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = le_layoutChars(engine, NULL, 0, 0, 0, FALSE, 0.0, 0.0, &status);\r
+    glyphCount = le_layoutChars(engine, NULL, 0, 0, 0, false, 0.0, 0.0, &status);\r
 \r
     if (status != LE_ILLEGAL_ARGUMENT_ERROR) {\r
-        log_err("Calling layoutChars(NULL, 0, 0, 0, FALSE, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
+        log_err("Calling layoutChars(NULL, 0, 0, 0, false, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
     }\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = le_layoutChars(engine, chars, -1, 6, 20, TRUE, 0.0, 0.0, &status);\r
+    glyphCount = le_layoutChars(engine, chars, -1, 6, 20, true, 0.0, 0.0, &status);\r
 \r
     if (status != LE_ILLEGAL_ARGUMENT_ERROR) {\r
-        log_err("Calling layoutChars(chars, -1, 6, 20, TRUE, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
+        log_err("Calling layoutChars(chars, -1, 6, 20, true, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
     }\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = le_layoutChars(engine, chars, 8, -1, 20, TRUE, 0.0, 0.0, &status);\r
+    glyphCount = le_layoutChars(engine, chars, 8, -1, 20, true, 0.0, 0.0, &status);\r
 \r
     if (status != LE_ILLEGAL_ARGUMENT_ERROR) {\r
-        log_err("Calling layoutChars(chars, 8, -1, 20, TRUE, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
+        log_err("Calling layoutChars(chars, 8, -1, 20, true, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
     }\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = le_layoutChars(engine, chars, 8, 6, -1, TRUE, 0.0, 0.0, &status);\r
+    glyphCount = le_layoutChars(engine, chars, 8, 6, -1, true, 0.0, 0.0, &status);\r
 \r
     if (status != LE_ILLEGAL_ARGUMENT_ERROR) {\r
-        log_err("Calling layoutChars((chars, 8, 6, -1, TRUE, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
+        log_err("Calling layoutChars((chars, 8, 6, -1, true, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
     }\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = le_layoutChars(engine, chars, 8, 6, 10, TRUE, 0.0, 0.0, &status);\r
+    glyphCount = le_layoutChars(engine, chars, 8, 6, 10, true, 0.0, 0.0, &status);\r
 \r
     if (status != LE_ILLEGAL_ARGUMENT_ERROR) {\r
-        log_err("Calling layoutChars(chars, 8, 6, 10, TRUE, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
+        log_err("Calling layoutChars(chars, 8, 6, 10, true, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
     }\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = le_layoutChars(engine, chars, 8, 6, 20, TRUE, 0.0, 0.0, &status);\r
+    glyphCount = le_layoutChars(engine, chars, 8, 6, 20, true, 0.0, 0.0, &status);\r
 \r
     if (LE_FAILURE(status)) {\r
-        log_err("Calling layoutChars(chars, 8, 6, 20, TRUE, 0.0, 0.0, status) failed.\n");\r
+        log_err("Calling layoutChars(chars, 8, 6, 20, true, 0.0, 0.0, status) failed.\n");\r
         goto bail;\r
     }\r
 \r
@@ -230,10 +230,10 @@ static void U_CALLCONV AccessTest(void)
         goto bail;\r
     }\r
 \r
-    glyphCount = le_layoutChars(engine, chars, 8, 6, 20, TRUE, 0.0, 0.0, &status);\r
+    glyphCount = le_layoutChars(engine, chars, 8, 6, 20, true, 0.0, 0.0, &status);\r
 \r
     if (LE_FAILURE(status) || glyphCount != 6) {\r
-        log_err("layoutChars(chars, 8, 6, 20, TRUE, 0.0, 0.0, status) failed.\n");\r
+        log_err("layoutChars(chars, 8, 6, 20, true, 0.0, 0.0, status) failed.\n");\r
         goto bail;\r
     }\r
 \r
@@ -293,14 +293,14 @@ static le_bool compareResults(const char *testID, TestResult *expected, TestResu
     if (actual->glyphCount != expected->glyphCount) {\r
         log_err("Test %s: incorrect glyph count: exptected %d, got %d\n",\r
             testID, expected->glyphCount, actual->glyphCount);\r
-        return FALSE;\r
+        return false;\r
     }\r
 \r
     for (i = 0; i < actual->glyphCount; i += 1) {\r
         if (actual->glyphs[i] != expected->glyphs[i]) {\r
             log_err("Test %s: incorrect id for glyph %d: expected %4X, got %4X\n",\r
                 testID, i, expected->glyphs[i], actual->glyphs[i]);\r
-            return FALSE;\r
+            return false;\r
         }\r
     }\r
 \r
@@ -308,7 +308,7 @@ static le_bool compareResults(const char *testID, TestResult *expected, TestResu
         if (actual->indices[i] != expected->indices[i]) {\r
             log_err("Test %s: incorrect index for glyph %d: expected %8X, got %8X\n",\r
                 testID, i, expected->indices[i], actual->indices[i]);\r
-            return FALSE;\r
+            return false;\r
         }\r
     }\r
 \r
@@ -319,7 +319,7 @@ static le_bool compareResults(const char *testID, TestResult *expected, TestResu
         if (xError > 0.0001) {\r
             log_err("Test %s: incorrect x position for glyph %d: expected %f, got %f\n",\r
                 testID, i, expected->positions[i * 2], actual->positions[i * 2]);\r
-            return FALSE;\r
+            return false;\r
         }\r
 \r
         if (yError < 0) {\r
@@ -329,11 +329,11 @@ static le_bool compareResults(const char *testID, TestResult *expected, TestResu
         if (yError > 0.0001) {\r
             log_err("Test %s: incorrect y position for glyph %d: expected %f, got %f\n",\r
                 testID, i, expected->positions[i * 2 + 1], actual->positions[i * 2 + 1]);\r
-            return FALSE;\r
+            return false;\r
         }\r
     }\r
 \r
-    return TRUE;\r
+    return true;\r
 }\r
 \r
 static void checkFontVersion(le_font *font, const char *testVersionString,\r
@@ -652,7 +652,7 @@ static void U_CALLCONV GlyphToCharTest(void)
     fontRuns = pl_openEmptyFontRuns(0);\r
     pl_addFontRun(fontRuns, font, charCount);\r
 \r
-    paragraph = pl_create(chars, charCount, fontRuns, NULL, NULL, NULL, 0, FALSE, &status);\r
+    paragraph = pl_create(chars, charCount, fontRuns, NULL, NULL, NULL, 0, false, &status);\r
 \r
     pl_closeFontRuns(fontRuns);\r
 \r
index d3dcf2f..2434721 100644 (file)
@@ -21,6 +21,6 @@ Global
                {798E3AE4-A984-43FF-8928-EACFF43F56AE}.Release|x64.Build.0 = Release|x64\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
+               HideSolutionNode = false\r
        EndGlobalSection\r
 EndGlobal\r
index 5fe1667..4929488 100644 (file)
@@ -58,7 +58,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
     le_uint16 i;\r
     le_uint16 nSubtables = SWAPW(cmap->numberSubtables);\r
     const CMAPEncodingSubtable *subtable = NULL;\r
-    le_bool found = FALSE;\r
+    le_bool found = false;\r
     le_uint16 foundPlatformID = 0xFFFF;\r
     le_uint16 foundPlatformSpecificID = 0xFFFF;\r
     le_uint32 foundOffset = 0;\r
@@ -76,7 +76,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
                 foundOffset = SWAPL(esh->encodingOffset);\r
                 foundPlatformID = platformID;\r
                 foundPlatformSpecificID = platformSpecificID;\r
-                found = TRUE;\r
+                found = true;\r
                 foundTable = i;\r
                 break;\r
 \r
@@ -106,7 +106,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
             foundPlatformID = platformID;\r
             foundPlatformSpecificID = platformSpecificID;\r
             foundTable = i;\r
-            found = TRUE;\r
+            found = true;\r
             break;\r
 \r
           default: printf("Error: table %d (psid %d) is unknown. Skipping.\n", i, platformSpecificID); break;\r
index e68d920..b1eba4c 100644 (file)
@@ -283,7 +283,7 @@ int main(int argc, char *argv[])
                 } else if (tag.compare(test_text) == 0) {\r
                     char *utf8 = NULL;\r
 \r
-                    text = element->getText(TRUE);\r
+                    text = element->getText(true);\r
                     charCount = text.length();\r
 \r
                     utf8 = getUTF8String(&text);\r
index b47909c..c23216f 100644 (file)
@@ -20,6 +20,6 @@ Global
                {DA322426-C37C-4909-A99D-16B05E7FA498}.Release|x64.Build.0 = Release|x64\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
+               HideSolutionNode = false\r
        EndGlobalSection\r
 EndGlobal\r
index 374d6a2..29f771d 100644 (file)
@@ -146,10 +146,10 @@ static void U_CALLCONV ParamTest(void)
     DELETE_ARRAY(glyphs);\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = engine->layoutChars(NULL, 0, 0, 0, FALSE, 0.0, 0.0, status);\r
+    glyphCount = engine->layoutChars(NULL, 0, 0, 0, false, 0.0, 0.0, status);\r
 \r
     if (status != LE_ILLEGAL_ARGUMENT_ERROR) {\r
-        log_err("Calling layoutChars(NULL, 0, 0, 0, FALSE, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
+        log_err("Calling layoutChars(NULL, 0, 0, 0, false, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
     }\r
 \r
     LEUnicode chars[] = {\r
@@ -159,40 +159,40 @@ static void U_CALLCONV ParamTest(void)
     };\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = engine->layoutChars(chars, -1, 6, 20, TRUE, 0.0, 0.0, status);\r
+    glyphCount = engine->layoutChars(chars, -1, 6, 20, true, 0.0, 0.0, status);\r
 \r
     if (status != LE_ILLEGAL_ARGUMENT_ERROR) {\r
-        log_err("Calling layoutChars(chars, -1, 6, 20, TRUE, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
+        log_err("Calling layoutChars(chars, -1, 6, 20, true, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
     }\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = engine->layoutChars(chars, 8, -1, 20, TRUE, 0.0, 0.0, status);\r
+    glyphCount = engine->layoutChars(chars, 8, -1, 20, true, 0.0, 0.0, status);\r
 \r
     if (status != LE_ILLEGAL_ARGUMENT_ERROR) {\r
-        log_err("Calling layoutChars(chars, 8, -1, 20, TRUE, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
+        log_err("Calling layoutChars(chars, 8, -1, 20, true, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
     }\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = engine->layoutChars(chars, 8, 6, -1, TRUE, 0.0, 0.0, status);\r
+    glyphCount = engine->layoutChars(chars, 8, 6, -1, true, 0.0, 0.0, status);\r
 \r
     if (status != LE_ILLEGAL_ARGUMENT_ERROR) {\r
-        log_err("Calling layoutChars((chars, 8, 6, -1, TRUE, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
+        log_err("Calling layoutChars((chars, 8, 6, -1, true, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
     }\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = engine->layoutChars(chars, 8, 6, 10, TRUE, 0.0, 0.0, status);\r
+    glyphCount = engine->layoutChars(chars, 8, 6, 10, true, 0.0, 0.0, status);\r
 \r
     if (status != LE_ILLEGAL_ARGUMENT_ERROR) {\r
-        log_err("Calling layoutChars(chars, 8, 6, 10, TRUE, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
+        log_err("Calling layoutChars(chars, 8, 6, 10, true, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");\r
     }\r
 \r
     float x = 0.0, y = 0.0;\r
 \r
     status = LE_NO_ERROR;\r
-    glyphCount = engine->layoutChars(chars, 8, 6, 20, TRUE, 0.0, 0.0, status);\r
+    glyphCount = engine->layoutChars(chars, 8, 6, 20, true, 0.0, 0.0, status);\r
 \r
     if (LE_FAILURE(status)) {\r
-        log_err("Calling layoutChars(chars, 8, 6, 20, TRUE, 0.0, 0.0, status) failed.\n");\r
+        log_err("Calling layoutChars(chars, 8, 6, 20, true, 0.0, 0.0, status) failed.\n");\r
         goto bail;\r
     }\r
 \r
@@ -258,10 +258,10 @@ static void U_CALLCONV AccessTest(void)
         goto bail;\r
     }\r
 \r
-    glyphCount = engine->layoutChars(chars, 8, 6, 20, TRUE, 0.0, 0.0, status);\r
+    glyphCount = engine->layoutChars(chars, 8, 6, 20, true, 0.0, 0.0, status);\r
 \r
     if (LE_FAILURE(status) || glyphCount != 6) {\r
-        log_err("layoutChars(chars, 8, 6, 20, TRUE, 0.0, 0.0, status) failed.\n");\r
+        log_err("layoutChars(chars, 8, 6, 20, true, 0.0, 0.0, status) failed.\n");\r
         goto bail;\r
     }\r
 \r
@@ -333,7 +333,7 @@ le_bool compareResults(const char *testID, TestResult *expected, TestResult *act
     if (actual->glyphCount != expected->glyphCount) {\r
         log_err("Test %s: incorrect glyph count: exptected %d, got %d\n",\r
             testID, expected->glyphCount, actual->glyphCount);\r
-        return FALSE;\r
+        return false;\r
     }\r
 \r
     le_int32 i;\r
@@ -342,7 +342,7 @@ le_bool compareResults(const char *testID, TestResult *expected, TestResult *act
         if (actual->glyphs[i] != expected->glyphs[i]) {\r
             log_err("Test %s: incorrect id for glyph %d: expected %4X, got %4X\n",\r
                 testID, i, expected->glyphs[i], actual->glyphs[i]);\r
-            return FALSE;\r
+            return false;\r
         }\r
     }\r
 \r
@@ -350,7 +350,7 @@ le_bool compareResults(const char *testID, TestResult *expected, TestResult *act
         if (actual->indices[i] != expected->indices[i]) {\r
             log_err("Test %s: incorrect index for glyph %d: expected %8X, got %8X\n",\r
                 testID, i, expected->indices[i], actual->indices[i]);\r
-            return FALSE;\r
+            return false;\r
         }\r
     }\r
 \r
@@ -360,7 +360,7 @@ le_bool compareResults(const char *testID, TestResult *expected, TestResult *act
         if (xError > 0.0001) {\r
             log_err("Test %s: incorrect x position for glyph %d: expected %f, got %f\n",\r
                 testID, i, expected->positions[i * 2], actual->positions[i * 2]);\r
-            return FALSE;\r
+            return false;\r
         }\r
 \r
         double yError = uprv_fabs(actual->positions[i * 2 + 1] - expected->positions[i * 2 + 1]);\r
@@ -372,11 +372,11 @@ le_bool compareResults(const char *testID, TestResult *expected, TestResult *act
         if (yError > 0.0001) {\r
             log_err("Test %s: incorrect y position for glyph %d: expected %f, got %f\n",\r
                 testID, i, expected->positions[i * 2 + 1], actual->positions[i * 2 + 1]);\r
-            return FALSE;\r
+            return false;\r
         }\r
     }\r
 \r
-    return TRUE;\r
+    return true;\r
 }\r
 \r
 static void checkFontVersion(PortableFontInstance *fontInstance, const char *testVersionString,\r
@@ -652,14 +652,14 @@ static void U_CALLCONV DataDrivenTest(void)
                         goto free_c_strings;\r
                     }\r
                 } else if (tag.compare(test_text) == 0) {\r
-                    text = element->getText(TRUE);\r
+                    text = element->getText(true);\r
                     charCount = text.length();\r
                 } else if (tag.compare(result_glyphs) == 0) {\r
-                    glyphs = element->getText(TRUE);\r
+                    glyphs = element->getText(true);\r
                 } else if (tag.compare(result_indices) == 0) {\r
-                    indices = element->getText(TRUE);\r
+                    indices = element->getText(true);\r
                 } else if (tag.compare(result_positions) == 0) {\r
-                    positions = element->getText(TRUE);\r
+                    positions = element->getText(true);\r
                 } else {\r
                     // an unknown tag...\r
                     char *cTag = getCString(&tag);\r
@@ -885,7 +885,7 @@ static void U_CALLCONV GlyphToCharTest(void)
 \r
     fontRuns.add(font, charCount);\r
 \r
-    paragraphLayout = new ParagraphLayout(chars, charCount, &fontRuns, NULL, NULL, NULL, 0, FALSE, status);\r
+    paragraphLayout = new ParagraphLayout(chars, charCount, &fontRuns, NULL, NULL, NULL, 0, false, status);\r
 \r
     if (LE_FAILURE(status)) {\r
         goto close_font;\r
index 363c062..27545ef 100644 (file)
@@ -35,6 +35,6 @@ Global
                {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.Build.0 = Release|x64\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
+               HideSolutionNode = false\r
        EndGlobalSection\r
 EndGlobal\r
index 8bab9d5..aa23215 100644 (file)
@@ -208,14 +208,14 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
                     fontCksum = getCString(element->getAttribute(cksum_attr));\r
 \r
                 } else if (tag.compare(test_text) == 0) {\r
-                    text = element->getText(TRUE);\r
+                    text = element->getText(true);\r
                     charCount = text.length();\r
                 } else if (tag.compare(result_glyphs) == 0) {\r
-                    glyphs = element->getText(TRUE);\r
+                    glyphs = element->getText(true);\r
                 } else if (tag.compare(result_indices) == 0) {\r
-                    indices = element->getText(TRUE);\r
+                    indices = element->getText(true);\r
                 } else if (tag.compare(result_positions) == 0) {\r
-                    positions = element->getText(TRUE);\r
+                    positions = element->getText(true);\r
                 } else {\r
                     // an unknown tag...\r
                     char *cTag = getCString(&tag);\r
index 1483eb4..4f031a1 100755 (executable)
@@ -53,7 +53,7 @@ my $dataFiles = {
         "TestNames_SerbianSH.txt",\r
         "TestNames_SerbianSR.txt",\r
         "TestNames_Thai.txt",\r
-        "Testnames_Russian.txt",\r
+        "TestNames_Russian.txt",\r
         "th18057.txt",\r
         "thesis.txt",\r
         "vfear11a.txt",\r
index 48b2ed3..822f92c 100755 (executable)
@@ -55,7 +55,7 @@ my $dataFiles = {
         "TestNames_SerbianSH.txt",\r
         "TestNames_SerbianSR.txt",\r
         "TestNames_Thai.txt",\r
-        "Testnames_Russian.txt",\r
+        "TestNames_Russian.txt",\r
         "th18057.txt",\r
         "thesis.txt",\r
         "vfear11a.txt",\r
index f6ce5e4..0646ff2 100644 (file)
@@ -190,8 +190,6 @@ sub setupOutput {
   @headers = split(/ /, $headers);\r
   my ($t, $rest);\r
   ($t, $rest) = split(/\.\w+/, $0);\r
-  $t =~ /^.*\W(\w+)$/;\r
-  $t = $1;\r
   if($outType eq 'HTML') {\r
     $html = $date;\r
     $html =~ s/://g; # ':' illegal\r
index 3ddce47..d94eb2f 100755 (executable)
@@ -72,7 +72,7 @@ my $dataFiles = {
         "TestNames_SerbianSH.txt",\r
         "TestNames_SerbianSR.txt",\r
         "TestNames_Thai.txt",\r
-        "Testnames_Russian.txt",\r
+        "TestNames_Russian.txt",\r
     ],\r
     "th",\r
     [\r
index 30a207c..2cad0b0 100755 (executable)
@@ -68,7 +68,7 @@ my $dataFiles = {
         "TestNames_SerbianSH.txt",\r
         "TestNames_SerbianSR.txt",\r
         "TestNames_Thai.txt",\r
-        "Testnames_Russian.txt",\r
+        "TestNames_Russian.txt",\r
         "th18057.txt",\r
     ]\r
 };\r
index 4bdcf4d..34c1b48 100755 (executable)
@@ -54,7 +54,7 @@ my $dataFiles = {
         "TestNames_SerbianSH.txt",\r
         "TestNames_SerbianSR.txt",\r
         "TestNames_Thai.txt",\r
-        "Testnames_Russian.txt",\r
+        "TestNames_Russian.txt",\r
         "th18057.txt",\r
         "thesis.txt",\r
         "vfear11a.txt",\r
index 6a4ff70..775a686 100644 (file)
@@ -1,5 +1,5 @@
 # Test data for unit preferences\r
-#  Copyright © 1991-2020 Unicode, Inc.\r
+#  Copyright © 1991-2021 Unicode, Inc.\r
 #  For terms of use, see http://www.unicode.org/copyright.html\r
 #  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.\r
 #  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)\r
@@ -63,6 +63,10 @@ concentration;       blood-glucose;  AG;     662435483600000000000000;       6.624354836E23; item
 concentration; blood-glucose;  AG;     602214076000000000000000;       6.02214076E23;  item-per-cubic-meter;   1;      1.0;    millimole-per-liter\r
 concentration; blood-glucose;  AG;     541992668400000000000000;       5.419926684E23; item-per-cubic-meter;   9 / 10; 0.9;    millimole-per-liter\r
 \r
+concentration; blood-glucose;  001;    66243548360000000000000000000 / 1801557;        3.67701651182838E22;    item-per-cubic-meter;   11 / 10;        1.1;    milligram-ofglucose-per-deciliter\r
+concentration; blood-glucose;  001;    60221407600000000000000000000 / 1801557;        3.342742283480345E22;   item-per-cubic-meter;   1;      1.0;    milligram-ofglucose-per-deciliter\r
+concentration; blood-glucose;  001;    6022140760000000000000000000 / 200173;  3.008468055132311E22;   item-per-cubic-meter;   9 / 10; 0.9;    milligram-ofglucose-per-deciliter\r
+\r
 concentration; default;        001;    11 / 10;        1.1;    item-per-cubic-meter;   11 / 10;        1.1;    item-per-cubic-meter\r
 concentration; default;        001;    1;      1.0;    item-per-cubic-meter;   1;      1.0;    item-per-cubic-meter\r
 concentration; default;        001;    9 / 10; 0.9;    item-per-cubic-meter;   9 / 10; 0.9;    item-per-cubic-meter\r
@@ -79,21 +83,13 @@ consumption;        vehicle-fuel;   BR;     11 / 10000000;  1.1E-6; cubic-meter-per-meter;  11
 consumption;   vehicle-fuel;   BR;     1 / 1000000;    1.0E-6; cubic-meter-per-meter;  1;      1.0;    liter-per-kilometer\r
 consumption;   vehicle-fuel;   BR;     9 / 10000000;   9.0E-7; cubic-meter-per-meter;  9 / 10; 0.9;    liter-per-kilometer\r
 \r
-consumption-inverse;   default;        001;    110000000;      1.1E8;  meter-per-cubic-meter;  11 / 10;        1.1;    kilometer-per-centiliter\r
-consumption-inverse;   default;        001;    100000000;      1.0E8;  meter-per-cubic-meter;  1;      1.0;    kilometer-per-centiliter\r
-consumption-inverse;   default;        001;    90000000;       9.0E7;  meter-per-cubic-meter;  9 / 10; 0.9;    kilometer-per-centiliter\r
-\r
-consumption-inverse;   vehicle-fuel;   001;    110000000;      1.1E8;  meter-per-cubic-meter;  11 / 10;        1.1;    kilometer-per-centiliter\r
-consumption-inverse;   vehicle-fuel;   001;    100000000;      1.0E8;  meter-per-cubic-meter;  1;      1.0;    kilometer-per-centiliter\r
-consumption-inverse;   vehicle-fuel;   001;    90000000;       9.0E7;  meter-per-cubic-meter;  9 / 10; 0.9;    kilometer-per-centiliter\r
+consumption;   vehicle-fuel;   US;     112903 / 52800000000;   2.1383143939394E-6;     cubic-meter-per-meter;  11 / 10;        1.1;    mile-per-gallon\r
+consumption;   vehicle-fuel;   US;     112903 / 48000000000;   2.3521458333333E-6;     cubic-meter-per-meter;  1;      1.0;    mile-per-gallon\r
+consumption;   vehicle-fuel;   US;     112903 / 43200000000;   2.6134953703704E-6;     cubic-meter-per-meter;  9 / 10; 0.9;    mile-per-gallon\r
 \r
-consumption-inverse;   vehicle-fuel;   US;     52800000000 / 112903;   467658.0781732992;      meter-per-cubic-meter;  11 / 10;        1.1;    mile-per-gallon\r
-consumption-inverse;   vehicle-fuel;   US;     48000000000 / 112903;   425143.707430272;       meter-per-cubic-meter;  1;      1.0;    mile-per-gallon\r
-consumption-inverse;   vehicle-fuel;   US;     43200000000 / 112903;   382629.3366872448;      meter-per-cubic-meter;  9 / 10; 0.9;    mile-per-gallon\r
-\r
-consumption-inverse;   vehicle-fuel;   CA;     177027840000 / 454609;  389406.8089281118;      meter-per-cubic-meter;  11 / 10;        1.1;    mile-per-gallon-imperial\r
-consumption-inverse;   vehicle-fuel;   CA;     160934400000 / 454609;  354006.1899346471;      meter-per-cubic-meter;  1;      1.0;    mile-per-gallon-imperial\r
-consumption-inverse;   vehicle-fuel;   CA;     144840960000 / 454609;  318605.5709411824;      meter-per-cubic-meter;  9 / 10; 0.9;    mile-per-gallon-imperial\r
+consumption;   vehicle-fuel;   CA;     454609 / 177027840000;  2.5680085121075E-6;     cubic-meter-per-meter;  11 / 10;        1.1;    mile-per-gallon-imperial\r
+consumption;   vehicle-fuel;   CA;     454609 / 160934400000;  2.8248093633182E-6;     cubic-meter-per-meter;  1;      1.0;    mile-per-gallon-imperial\r
+consumption;   vehicle-fuel;   CA;     454609 / 144840960000;  3.1386770703536E-6;     cubic-meter-per-meter;  9 / 10; 0.9;    mile-per-gallon-imperial\r
 \r
 duration;      default;        001;    95040;  95040.0;        second; 11 / 10;        1.1;    day\r
 duration;      default;        001;    86400;  86400.0;        second; 1;      1.0;    day\r
@@ -188,6 +184,8 @@ length;     road;   001;    900;    900.0;  meter;  9 / 10; 0.9;    kilometer
 length;        road;   001;    800;    800.0;  meter;  800;    800.0;  meter\r
 length;        road;   001;    300;    300.0;  meter;  300;    300.0;  meter\r
 length;        road;   001;    2999 / 10;      299.9;  meter;  2999 / 10;      299.9;  meter\r
+length;        road;   001;    10;     10.0;   meter;  10;     10.0;   meter\r
+length;        road;   001;    99 / 10;        9.9;    meter;  99 / 10;        9.9;    meter\r
 length;        road;   001;    1;      1.0;    meter;  1;      1.0;    meter\r
 length;        road;   001;    9 / 10; 0.9;    meter;  9 / 10; 0.9;    meter\r
 \r
@@ -196,6 +194,8 @@ length;     road;   US;     100584 / 125;   804.672;        meter;  1 / 2;  0.5;    mile
 length;        road;   US;     402336 / 625;   643.7376;       meter;  2112;   2112.0; foot\r
 length;        road;   US;     762 / 25;       30.48;  meter;  100;    100.0;  foot\r
 length;        road;   US;     380619 / 12500; 30.44952;       meter;  999 / 10;       99.9;   foot\r
+length;        road;   US;     381 / 125;      3.048;  meter;  10;     10.0;   foot\r
+length;        road;   US;     37719 / 12500;  3.01752;        meter;  99 / 10;        9.9;    foot\r
 length;        road;   US;     381 / 1250;     0.3048; meter;  1;      1.0;    foot\r
 length;        road;   US;     3429 / 12500;   0.27432;        meter;  9 / 10; 0.9;    foot\r
 \r
@@ -204,6 +204,8 @@ length;     road;   GB;     100584 / 125;   804.672;        meter;  1 / 2;  0.5;    mile
 length;        road;   GB;     402336 / 625;   643.7376;       meter;  704;    704.0;  yard\r
 length;        road;   GB;     2286 / 25;      91.44;  meter;  100;    100.0;  yard\r
 length;        road;   GB;     1141857 / 12500;        91.34856;       meter;  999 / 10;       99.9;   yard\r
+length;        road;   GB;     1143 / 125;     9.144;  meter;  10;     10.0;   yard\r
+length;        road;   GB;     113157 / 12500; 9.05256;        meter;  99 / 10;        9.9;    yard\r
 length;        road;   GB;     1143 / 1250;    0.9144; meter;  1;      1.0;    yard\r
 length;        road;   GB;     10287 / 12500;  0.82296;        meter;  9 / 10; 0.9;    yard\r
 \r
@@ -214,6 +216,8 @@ length;     road;   SE;     1000;   1000.0; meter;  1;      1.0;    kilometer
 length;        road;   SE;     900;    900.0;  meter;  900;    900.0;  meter\r
 length;        road;   SE;     300;    300.0;  meter;  300;    300.0;  meter\r
 length;        road;   SE;     2999 / 10;      299.9;  meter;  2999 / 10;      299.9;  meter\r
+length;        road;   SE;     10;     10.0;   meter;  10;     10.0;   meter\r
+length;        road;   SE;     99 / 10;        9.9;    meter;  99 / 10;        9.9;    meter\r
 length;        road;   SE;     1;      1.0;    meter;  1;      1.0;    meter\r
 length;        road;   SE;     9 / 10; 0.9;    meter;  9 / 10; 0.9;    meter\r
 \r
@@ -233,9 +237,9 @@ length;     vehicle;        001;    11 / 10;        1.1;    meter;  11 / 10;        1.1;    meter
 length;        vehicle;        001;    1;      1.0;    meter;  1;      1.0;    meter\r
 length;        vehicle;        001;    9 / 10; 0.9;    meter;  9 / 10; 0.9;    meter\r
 \r
-length;        vehicle;        MX;     11 / 10;        1.1;    meter;  1;      meter;  10;     10.0;   centimeter\r
-length;        vehicle;        MX;     1;      1.0;    meter;  1;      meter;  0;      0.0;    centimeter\r
-length;        vehicle;        MX;     9 / 10; 0.9;    meter;  0;      meter;  90;     90.0;   centimeter\r
+length;        vehicle;        MX;     11 / 10;        1.1;    meter;  11 / 10;        1.1;    meter\r
+length;        vehicle;        MX;     1;      1.0;    meter;  1;      1.0;    meter\r
+length;        vehicle;        MX;     9 / 10; 0.9;    meter;  9 / 10; 0.9;    meter\r
 \r
 length;        visiblty;       001;    200;    200.0;  meter;  1 / 5;  0.2;    kilometer\r
 length;        visiblty;       001;    100;    100.0;  meter;  1 / 10; 0.1;    kilometer\r
@@ -279,9 +283,9 @@ mass;       person; 001;    9 / 10; 0.9;    kilogram;       900;    900.0;  gram
 mass;  person; 001;    1 / 1000;       0.001;  kilogram;       1;      1.0;    gram\r
 mass;  person; 001;    9 / 10000;      9.0E-4; kilogram;       9 / 10; 0.9;    gram\r
 \r
-mass;  person; DZ;     11 / 10;        1.1;    kilogram;       1;      kilogram;       100;    100.0;  gram\r
-mass;  person; DZ;     1;      1.0;    kilogram;       1;      kilogram;       0;      0.0;    gram\r
-mass;  person; DZ;     9 / 10; 0.9;    kilogram;       0;      kilogram;       900;    900.0;  gram\r
+mass;  person; DZ;     11 / 10;        1.1;    kilogram;       11 / 10;        1.1;    kilogram\r
+mass;  person; DZ;     1;      1.0;    kilogram;       1;      1.0;    kilogram\r
+mass;  person; DZ;     9 / 10; 0.9;    kilogram;       900;    900.0;  gram\r
 \r
 mass;  person; US;     498951607 / 1000000000; 0.498951607;    kilogram;       11 / 10;        1.1;    pound\r
 mass;  person; US;     45359237 / 100000000;   0.45359237;     kilogram;       1;      1.0;    pound\r
@@ -297,10 +301,6 @@ mass;      person; HK;     498951607 / 1000000000; 0.498951607;    kilogram;       1;      pound;  8 / 5
 mass;  person; HK;     45359237 / 100000000;   0.45359237;     kilogram;       1;      pound;  0;      0.0;    ounce\r
 mass;  person; HK;     408233133 / 1000000000; 0.408233133;    kilogram;       0;      pound;  72 / 5; 14.4;   ounce\r
 \r
-mass-density;  blood-glucose;  001;    11 / 1000;      0.011;  kilogram-per-cubic-meter;       11 / 10;        1.1;    milligram-per-deciliter\r
-mass-density;  blood-glucose;  001;    1 / 100;        0.01;   kilogram-per-cubic-meter;       1;      1.0;    milligram-per-deciliter\r
-mass-density;  blood-glucose;  001;    9 / 1000;       0.009;  kilogram-per-cubic-meter;       9 / 10; 0.9;    milligram-per-deciliter\r
-\r
 mass-density;  default;        001;    11 / 10;        1.1;    kilogram-per-cubic-meter;       11 / 10;        1.1;    kilogram-per-cubic-meter\r
 mass-density;  default;        001;    1;      1.0;    kilogram-per-cubic-meter;       1;      1.0;    kilogram-per-cubic-meter\r
 mass-density;  default;        001;    9 / 10; 0.9;    kilogram-per-cubic-meter;       9 / 10; 0.9;    kilogram-per-cubic-meter\r
@@ -451,4 +451,4 @@ year-duration;      person-age;     001;    12 / 5; 2.4;    year;   2;      year-person;    24 / 5; 4.8;
 year-duration; person-age;     001;    1;      1.0;    year;   1;      year-person;    0;      0.0;    month-person\r
 year-duration; person-age;     001;    9 / 10; 0.9;    year;   54 / 5; 10.8;   month-person\r
 year-duration; person-age;     001;    1 / 12; 0.08333333333333333;    year;   1;      1.0;    month-person\r
-year-duration; person-age;     001;    3 / 40; 0.075;  year;   9 / 10; 0.9;    month-person\r
+year-duration; person-age;     001;    3 / 40; 0.075;  year;   9 / 10; 0.9;    month-person
\ No newline at end of file
index a911cb8..548c35c 100644 (file)
@@ -1,5 +1,5 @@
 # Test data for unit conversions\r
-#  Copyright © 1991-2020 Unicode, Inc.\r
+#  Copyright © 1991-2021 Unicode, Inc.\r
 #  For terms of use, see http://www.unicode.org/copyright.html\r
 #  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.\r
 #  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)\r
@@ -31,7 +31,9 @@ area  ;       acre    ;       square-meter    ;       4,046.8564224 * x       ;       4046856.0
 area   ;       hectare ;       square-meter    ;       10,000 * x      ;       1.0E7\r
 area   ;       square-kilometer        ;       square-meter    ;       1,000,000 * x   ;       1.0E9\r
 area   ;       square-mile     ;       square-meter    ;       2,589,988.110336 * x    ;       2.589988E9\r
+concentration  ;       milligram-ofglucose-per-deciliter       ;       kilogram-item-per-kilogram-cubic-meter  ;       60,221,407,600,000,000,000,000,000,000/1,801,557 * x    ;       3.342742E25\r
 concentration  ;       millimole-per-liter     ;       item-per-cubic-meter    ;       602,214,076,000,000,000,000,000 * x     ;       6.022141E26\r
+concentration-mass     ;       ofglucose       ;       item-per-kilogram       ;       6,022,140,760,000,000,000,000,000,000,000/1,801,557 * x ;       3.342742E27\r
 consumption    ;       liter-per-100-kilometer ;       cubic-meter-per-meter   ;       0.00000001 * x  ;       1.0E-5\r
 consumption    ;       liter-per-kilometer     ;       cubic-meter-per-meter   ;       0.000001 * x    ;       0.001\r
 consumption-inverse    ;       mile-per-gallon-imperial        ;       meter-per-cubic-meter   ;       160,934,400,000/454,609 * x     ;       3.540062E8\r
@@ -121,7 +123,6 @@ mass        ;       ton     ;       kilogram        ;       907.18474 * x   ;       907184.7
 mass   ;       metric-ton      ;       kilogram        ;       1,000 * x       ;       1000000.0\r
 mass   ;       earth-mass      ;       kilogram        ;       5,972,200,000,000,000,000,000,000 * x   ;       5.9722E27\r
 mass   ;       solar-mass      ;       kilogram        ;       1,988,470,000,000,000,000,000,000,000,000 * x   ;       1.98847E33\r
-mass-density   ;       milligram-per-deciliter ;       kilogram-per-cubic-meter        ;       0.01 * x        ;       10.0\r
 portion        ;       permillion      ;       portion ;       0.000001 * x    ;       0.001\r
 portion        ;       permyriad       ;       portion ;       0.0001 * x      ;       0.1\r
 portion        ;       permille        ;       portion ;       0.001 * x       ;       1.0\r
index dc3ce38..a300b1a 100644 (file)
@@ -275,11 +275,11 @@ nld       ;       nl
 nno    ;       nn\r
 nns    ;       nbr\r
 nnx    ;       ngv\r
-no     ;       nb\r
+no     ;       no\r
 no_bokmal      ;       nb\r
 no_nynorsk     ;       nn\r
 nob    ;       nb\r
-nor    ;       nb\r
+nor    ;       no\r
 npi    ;       ne\r
 nts    ;       pij\r
 nya    ;       ny\r
@@ -1462,10 +1462,10 @@ nns_Adlm_AC_fonipa      ;       nbr_Adlm_AC_fonipa
 nnx_Adlm_AC_fonipa     ;       ngv_Adlm_AC_fonipa\r
 no_Adlm_AC_bokmal_fonipa       ;       nb_Adlm_AC_fonipa\r
 no_Adlm_AC_bokmal_fonipa_nynorsk       ;       nb_Adlm_AC_fonipa\r
-no_Adlm_AC_fonipa      ;       nb_Adlm_AC_fonipa\r
+no_Adlm_AC_fonipa      ;       no_Adlm_AC_fonipa\r
 no_Adlm_AC_fonipa_nynorsk      ;       nn_Adlm_AC_fonipa\r
 nob_Adlm_AC_fonipa     ;       nb_Adlm_AC_fonipa\r
-nor_Adlm_AC_fonipa     ;       nb_Adlm_AC_fonipa\r
+nor_Adlm_AC_fonipa     ;       no_Adlm_AC_fonipa\r
 npi_Adlm_AC_fonipa     ;       ne_Adlm_AC_fonipa\r
 nts_Adlm_AC_fonipa     ;       pij_Adlm_AC_fonipa\r
 nya_Adlm_AC_fonipa     ;       ny_Adlm_AC_fonipa\r
index 159a41a..6d1a03e 100644 (file)
@@ -270,14 +270,14 @@ und-TW >> zh-Hant # und-TW should be closer to zh-Hant than to zh
 \r
 @supported=en-Hant-TW, und-TW\r
 zh-Hant >> und-TW # zh-Hant should be closer to und-TW than to en-Hant-TW\r
-zh >> und-TW # zh should be closer to und-TW than to en-Hant-TW\r
+zh >> en-Hant-TW # no match so get first\r
 \r
 @favor=script\r
 @supported=zh, zh-Hant\r
 und-TW >> zh-Hant\r
 @supported=en-Hant-TW, und-TW\r
 zh-Hant >> und-TW\r
-zh >> und-TW\r
+zh >> en-Hant-TW # no match so get first\r
 \r
 ** test: testMatchLegacyCode\r
 \r
@@ -344,8 +344,8 @@ de-CH, fr >> de
 # to be an acceptable match. The regional difference is considered almost insignificant.\r
 \r
 @supported=fr, zh-Hans-CN, en-US\r
-zh-TW >> zh-Hans-CN\r
-zh-Hant >> zh-Hans-CN\r
+zh-TW >> fr # no match so get first\r
+zh-Hant >> fr # no match so get first\r
 \r
 # For geopolitical reasons, you might want to avoid a zh-Hant -> zh-Hans match.\r
 # In this case, if zh-TW, zh-HK or a tag starting with zh-Hant is requested, you can\r
@@ -358,8 +358,8 @@ zh-Hant-CN, en >> en-US
 zh-Hans, en >> zh-Hans-CN\r
 \r
 @favor=script\r
-zh-TW >> zh-Hans-CN\r
-zh-Hant >> zh-Hans-CN\r
+zh-TW >> fr # no match so get first\r
+zh-Hant >> fr # no match so get first\r
 zh-TW, en >> en-US\r
 zh-Hant-CN, en >> en-US\r
 zh-Hans, en >> zh-Hans-CN\r
@@ -1077,8 +1077,8 @@ ar-PSCRACK >> ar-PSCRACK
 # enough to be an acceptable match. The regional difference is considered\r
 # almost insignificant.\r
 @supported=fr, zh-Hans-CN, en-US\r
-zh-TW >> zh-Hans-CN\r
-zh-Hant >> zh-Hans-CN\r
+zh-TW >> fr # no match so get first\r
+zh-Hant >> fr # no match so get first\r
 \r
 # For geopolitical reasons, you might want to avoid a zh-Hant -> zh-Hans\r
 # match. In this case, if zh-TW, zh-HK or a tag starting with zh-Hant is\r
@@ -1129,7 +1129,7 @@ fr >> fr
 @default=und\r
 es-001 >> es\r
 und >> und\r
-ca >> und\r
+ca >> es\r
 gl-ES >> es\r
 es >> es\r
 es-MX >> es-MX\r
@@ -1215,7 +1215,7 @@ es-VE >> es-MX
 @default=und\r
 es-001 >> es\r
 und >> und\r
-ca >> und\r
+ca >> es\r
 gl-ES >> es\r
 es >> es\r
 es-419 >> es-419\r
@@ -1538,8 +1538,8 @@ de, zh >> fr
 \r
 ** test: best match for traditional Chinese\r
 @supported=fr, zh-Hans-CN, en-US\r
-zh-TW >> zh-Hans-CN\r
-zh-Hant >> zh-Hans-CN\r
+zh-TW >> fr # no match so get first\r
+zh-Hant >> fr # no match so get first\r
 zh-TW, en >> en-US\r
 zh-Hant-CN, en >> en-US\r
 zh-Hans, en >> zh-Hans-CN\r
@@ -1646,14 +1646,14 @@ en >> it
 und-FR >> fr\r
 und-CN >> zh\r
 und-Hans >> zh\r
-und-Hant >> zh\r
+und-Hant >> it # no match so get first\r
 und-Latn >> it\r
 \r
 @favor=script\r
 und-FR >> fr\r
 und-CN >> zh\r
 und-Hans >> zh\r
-und-Hant >> zh\r
+und-Hant >> it # no match so get first\r
 und-Latn >> it\r
 \r
 ** test: match on maximized tag\r
@@ -1918,7 +1918,7 @@ en >> und
 @supported=en, uk\r
 ru >> und\r
 @supported=zh-TW, en\r
-zh-CN >> zh-TW\r
+zh-CN >> und # no match\r
 @supported=ja\r
 ru >> und\r
 \r
@@ -1948,7 +1948,7 @@ en >> iw-Latn
 @supported=en, uk\r
 ru >> uk\r
 @supported=zh-TW, en\r
-zh-CN >> zh-TW\r
+zh-CN >> und # no match\r
 @supported=ja\r
 ru >> und\r
 \r
index 786bd7e..5c670db 100644 (file)
@@ -3504,7 +3504,7 @@ measure-unit/length-furlong unit-width-full-name rounding-mode-floor
 percent unit-width-narrow integer-width/##00\r
   es-MX\r
     00 %\r
-    1827.3645 %\r
+    1,827.3645 %\r
     -00.22222 %\r
   zh-TW\r
     00%\r
@@ -3518,7 +3518,7 @@ percent unit-width-narrow integer-width/##00
 percent unit-width-full-name integer-width/##00\r
   es-MX\r
     00 por ciento\r
-    1827.3645 por ciento\r
+    1,827.3645 por ciento\r
     -00.22222 por ciento\r
   zh-TW\r
     00%\r
@@ -3532,7 +3532,7 @@ percent unit-width-full-name integer-width/##00
 currency/EUR unit-width-narrow integer-width/##00\r
   es-MX\r
     €00.00\r
-    €1827.36\r
+    €1,827.36\r
     -€00.22\r
   zh-TW\r
     €00.00\r
@@ -3546,7 +3546,7 @@ currency/EUR unit-width-narrow integer-width/##00
 currency/EUR unit-width-full-name integer-width/##00\r
   es-MX\r
     00.00 euros\r
-    1827.36 euros\r
+    1,827.36 euros\r
     -00.22 euros\r
   zh-TW\r
     00.00 歐元\r
@@ -3560,7 +3560,7 @@ currency/EUR unit-width-full-name integer-width/##00
 measure-unit/length-furlong unit-width-narrow integer-width/##00\r
   es-MX\r
     00 fur\r
-    1827.3645 fur\r
+    1,827.3645 fur\r
     -00.22222 fur\r
   zh-TW\r
     00化朗\r
@@ -3574,7 +3574,7 @@ measure-unit/length-furlong unit-width-narrow integer-width/##00
 measure-unit/length-furlong unit-width-full-name integer-width/##00\r
   es-MX\r
     00 furlongs\r
-    1827.3645 furlongs\r
+    1,827.3645 furlongs\r
     -00.22222 furlongs\r
   zh-TW\r
     00 化朗\r
@@ -4176,7 +4176,7 @@ measure-unit/length-furlong @@ rounding-mode-floor
 percent precision-integer integer-width/##00\r
   es-MX\r
     00 %\r
-    1827 %\r
+    1,827 %\r
     -00 %\r
   zh-TW\r
     00%\r
@@ -4190,7 +4190,7 @@ percent precision-integer integer-width/##00
 percent .000 integer-width/##00\r
   es-MX\r
     00.000 %\r
-    1827.364 %\r
+    1,827.364 %\r
     -00.222 %\r
   zh-TW\r
     00.000%\r
@@ -4204,7 +4204,7 @@ percent .000 integer-width/##00
 percent .##/@@@+ integer-width/##00\r
   es-MX\r
     00 %\r
-    1827.36 %\r
+    1,827.36 %\r
     -00.222 %\r
   zh-TW\r
     00%\r
@@ -4218,7 +4218,7 @@ percent .##/@@@+ integer-width/##00
 percent @@ integer-width/##00\r
   es-MX\r
     00.0 %\r
-    2000 %\r
+    2,000 %\r
     -00.22 %\r
   zh-TW\r
     00.0%\r
@@ -4232,7 +4232,7 @@ percent @@ integer-width/##00
 currency/EUR precision-integer integer-width/##00\r
   es-MX\r
     EUR 00\r
-    EUR 1827\r
+    EUR 1,827\r
     -EUR 00\r
   zh-TW\r
     €00\r
@@ -4246,7 +4246,7 @@ currency/EUR precision-integer integer-width/##00
 currency/EUR .000 integer-width/##00\r
   es-MX\r
     EUR 00.000\r
-    EUR 1827.364\r
+    EUR 1,827.364\r
     -EUR 00.222\r
   zh-TW\r
     €00.000\r
@@ -4260,7 +4260,7 @@ currency/EUR .000 integer-width/##00
 currency/EUR .##/@@@+ integer-width/##00\r
   es-MX\r
     EUR 00\r
-    EUR 1827.36\r
+    EUR 1,827.36\r
     -EUR 00.222\r
   zh-TW\r
     €00\r
@@ -4274,7 +4274,7 @@ currency/EUR .##/@@@+ integer-width/##00
 currency/EUR @@ integer-width/##00\r
   es-MX\r
     EUR 00.0\r
-    EUR 2000\r
+    EUR 2,000\r
     -EUR 00.22\r
   zh-TW\r
     €00.0\r
@@ -4288,7 +4288,7 @@ currency/EUR @@ integer-width/##00
 measure-unit/length-furlong precision-integer integer-width/##00\r
   es-MX\r
     00 fur\r
-    1827 fur\r
+    1,827 fur\r
     -00 fur\r
   zh-TW\r
     00 化朗\r
@@ -4302,7 +4302,7 @@ measure-unit/length-furlong precision-integer integer-width/##00
 measure-unit/length-furlong .000 integer-width/##00\r
   es-MX\r
     00.000 fur\r
-    1827.364 fur\r
+    1,827.364 fur\r
     -00.222 fur\r
   zh-TW\r
     00.000 化朗\r
@@ -4316,7 +4316,7 @@ measure-unit/length-furlong .000 integer-width/##00
 measure-unit/length-furlong .##/@@@+ integer-width/##00\r
   es-MX\r
     00 fur\r
-    1827.36 fur\r
+    1,827.36 fur\r
     -00.222 fur\r
   zh-TW\r
     00 化朗\r
@@ -4330,7 +4330,7 @@ measure-unit/length-furlong .##/@@@+ integer-width/##00
 measure-unit/length-furlong @@ integer-width/##00\r
   es-MX\r
     00.0 fur\r
-    2000 fur\r
+    2,000 fur\r
     -00.22 fur\r
   zh-TW\r
     00.0 化朗\r
@@ -5184,7 +5184,7 @@ measure-unit/length-furlong @@ decimal-always
 percent rounding-mode-floor integer-width/##00\r
   es-MX\r
     00 %\r
-    1827.3645 %\r
+    1,827.3645 %\r
     -00.22222 %\r
   zh-TW\r
     00%\r
@@ -5198,7 +5198,7 @@ percent rounding-mode-floor integer-width/##00
 currency/EUR rounding-mode-floor integer-width/##00\r
   es-MX\r
     EUR 00.00\r
-    EUR 1827.36\r
+    EUR 1,827.36\r
     -EUR 00.23\r
   zh-TW\r
     €00.00\r
@@ -5212,7 +5212,7 @@ currency/EUR rounding-mode-floor integer-width/##00
 measure-unit/length-furlong rounding-mode-floor integer-width/##00\r
   es-MX\r
     00 fur\r
-    1827.3645 fur\r
+    1,827.3645 fur\r
     -00.22222 fur\r
   zh-TW\r
     00 化朗\r
@@ -5436,7 +5436,7 @@ measure-unit/length-furlong rounding-mode-floor decimal-always
 percent integer-width/##00 scale/0.5\r
   es-MX\r
     00 %\r
-    5913.68225 %\r
+    5,913.68225 %\r
     -00.11111 %\r
   zh-TW\r
     00%\r
@@ -5450,7 +5450,7 @@ percent integer-width/##00 scale/0.5
 currency/EUR integer-width/##00 scale/0.5\r
   es-MX\r
     EUR 00.00\r
-    EUR 5913.68\r
+    EUR 5,913.68\r
     -EUR 00.11\r
   zh-TW\r
     €00.00\r
@@ -5464,7 +5464,7 @@ currency/EUR integer-width/##00 scale/0.5
 measure-unit/length-furlong integer-width/##00 scale/0.5\r
   es-MX\r
     00 fur\r
-    5913.68225 fur\r
+    5,913.68225 fur\r
     -00.11111 fur\r
   zh-TW\r
     00 化朗\r
@@ -5520,7 +5520,7 @@ measure-unit/length-furlong integer-width/##00 group-on-aligned
 percent integer-width/##00 latin\r
   es-MX\r
     00 %\r
-    1827.3645 %\r
+    1,827.3645 %\r
     -00.22222 %\r
   zh-TW\r
     00%\r
@@ -5534,7 +5534,7 @@ percent integer-width/##00 latin
 currency/EUR integer-width/##00 latin\r
   es-MX\r
     EUR 00.00\r
-    EUR 1827.36\r
+    EUR 1,827.36\r
     -EUR 00.22\r
   zh-TW\r
     €00.00\r
@@ -5548,7 +5548,7 @@ currency/EUR integer-width/##00 latin
 measure-unit/length-furlong integer-width/##00 latin\r
   es-MX\r
     00 fur\r
-    1827.3645 fur\r
+    1,827.3645 fur\r
     -00.22222 fur\r
   zh-TW\r
     00 化朗\r
@@ -5562,7 +5562,7 @@ measure-unit/length-furlong integer-width/##00 latin
 percent integer-width/##00 sign-accounting-except-zero\r
   es-MX\r
     00 %\r
-    +1827.3645 %\r
+    +1,827.3645 %\r
     -00.22222 %\r
   zh-TW\r
     00%\r
@@ -5576,7 +5576,7 @@ percent integer-width/##00 sign-accounting-except-zero
 currency/EUR integer-width/##00 sign-accounting-except-zero\r
   es-MX\r
     EUR 00.00\r
-    +EUR 1827.36\r
+    +EUR 1,827.36\r
     -EUR 00.22\r
   zh-TW\r
     €00.00\r
@@ -5590,7 +5590,7 @@ currency/EUR integer-width/##00 sign-accounting-except-zero
 measure-unit/length-furlong integer-width/##00 sign-accounting-except-zero\r
   es-MX\r
     00 fur\r
-    +1827.3645 fur\r
+    +1,827.3645 fur\r
     -00.22222 fur\r
   zh-TW\r
     00 化朗\r
@@ -5604,7 +5604,7 @@ measure-unit/length-furlong integer-width/##00 sign-accounting-except-zero
 percent integer-width/##00 decimal-always\r
   es-MX\r
     00. %\r
-    1827.3645 %\r
+    1,827.3645 %\r
     -00.22222 %\r
   zh-TW\r
     00.%\r
@@ -5618,7 +5618,7 @@ percent integer-width/##00 decimal-always
 currency/EUR integer-width/##00 decimal-always\r
   es-MX\r
     EUR 00.00\r
-    EUR 1827.36\r
+    EUR 1,827.36\r
     -EUR 00.22\r
   zh-TW\r
     €00.00\r
@@ -5632,7 +5632,7 @@ currency/EUR integer-width/##00 decimal-always
 measure-unit/length-furlong integer-width/##00 decimal-always\r
   es-MX\r
     00. fur\r
-    1827.3645 fur\r
+    1,827.3645 fur\r
     -00.22222 fur\r
   zh-TW\r
     00. 化朗\r
@@ -6178,7 +6178,7 @@ unit-width-full-name @@ rounding-mode-floor
 unit-width-narrow precision-integer integer-width/##00\r
   es-MX\r
     00\r
-    1827\r
+    1,827\r
     -00\r
   zh-TW\r
     00\r
@@ -6192,7 +6192,7 @@ unit-width-narrow precision-integer integer-width/##00
 unit-width-narrow .000 integer-width/##00\r
   es-MX\r
     00.000\r
-    1827.364\r
+    1,827.364\r
     -00.222\r
   zh-TW\r
     00.000\r
@@ -6206,7 +6206,7 @@ unit-width-narrow .000 integer-width/##00
 unit-width-narrow .##/@@@+ integer-width/##00\r
   es-MX\r
     00\r
-    1827.36\r
+    1,827.36\r
     -00.222\r
   zh-TW\r
     00\r
@@ -6220,7 +6220,7 @@ unit-width-narrow .##/@@@+ integer-width/##00
 unit-width-narrow @@ integer-width/##00\r
   es-MX\r
     00.0\r
-    2000\r
+    2,000\r
     -00.22\r
   zh-TW\r
     00.0\r
@@ -6234,7 +6234,7 @@ unit-width-narrow @@ integer-width/##00
 unit-width-full-name precision-integer integer-width/##00\r
   es-MX\r
     00\r
-    1827\r
+    1,827\r
     -00\r
   zh-TW\r
     00\r
@@ -6248,7 +6248,7 @@ unit-width-full-name precision-integer integer-width/##00
 unit-width-full-name .000 integer-width/##00\r
   es-MX\r
     00.000\r
-    1827.364\r
+    1,827.364\r
     -00.222\r
   zh-TW\r
     00.000\r
@@ -6262,7 +6262,7 @@ unit-width-full-name .000 integer-width/##00
 unit-width-full-name .##/@@@+ integer-width/##00\r
   es-MX\r
     00\r
-    1827.36\r
+    1,827.36\r
     -00.222\r
   zh-TW\r
     00\r
@@ -6276,7 +6276,7 @@ unit-width-full-name .##/@@@+ integer-width/##00
 unit-width-full-name @@ integer-width/##00\r
   es-MX\r
     00.0\r
-    2000\r
+    2,000\r
     -00.22\r
   zh-TW\r
     00.0\r
@@ -6850,7 +6850,7 @@ unit-width-full-name @@ decimal-always
 unit-width-narrow rounding-mode-floor integer-width/##00\r
   es-MX\r
     00\r
-    1827.3645\r
+    1,827.3645\r
     -00.22222\r
   zh-TW\r
     00\r
@@ -6864,7 +6864,7 @@ unit-width-narrow rounding-mode-floor integer-width/##00
 unit-width-full-name rounding-mode-floor integer-width/##00\r
   es-MX\r
     00\r
-    1827.3645\r
+    1,827.3645\r
     -00.22222\r
   zh-TW\r
     00\r
@@ -7018,7 +7018,7 @@ unit-width-full-name rounding-mode-floor decimal-always
 unit-width-narrow integer-width/##00 scale/0.5\r
   es-MX\r
     00\r
-    5913.68225\r
+    5,913.68225\r
     -00.11111\r
   zh-TW\r
     00\r
@@ -7032,7 +7032,7 @@ unit-width-narrow integer-width/##00 scale/0.5
 unit-width-full-name integer-width/##00 scale/0.5\r
   es-MX\r
     00\r
-    5913.68225\r
+    5,913.68225\r
     -00.11111\r
   zh-TW\r
     00\r
@@ -7074,7 +7074,7 @@ unit-width-full-name integer-width/##00 group-on-aligned
 unit-width-narrow integer-width/##00 latin\r
   es-MX\r
     00\r
-    1827.3645\r
+    1,827.3645\r
     -00.22222\r
   zh-TW\r
     00\r
@@ -7088,7 +7088,7 @@ unit-width-narrow integer-width/##00 latin
 unit-width-full-name integer-width/##00 latin\r
   es-MX\r
     00\r
-    1827.3645\r
+    1,827.3645\r
     -00.22222\r
   zh-TW\r
     00\r
@@ -7102,7 +7102,7 @@ unit-width-full-name integer-width/##00 latin
 unit-width-narrow integer-width/##00 sign-accounting-except-zero\r
   es-MX\r
     00\r
-    +1827.3645\r
+    +1,827.3645\r
     -00.22222\r
   zh-TW\r
     00\r
@@ -7116,7 +7116,7 @@ unit-width-narrow integer-width/##00 sign-accounting-except-zero
 unit-width-full-name integer-width/##00 sign-accounting-except-zero\r
   es-MX\r
     00\r
-    +1827.3645\r
+    +1,827.3645\r
     -00.22222\r
   zh-TW\r
     00\r
@@ -7130,7 +7130,7 @@ unit-width-full-name integer-width/##00 sign-accounting-except-zero
 unit-width-narrow integer-width/##00 decimal-always\r
   es-MX\r
     00.\r
-    1827.3645\r
+    1,827.3645\r
     -00.22222\r
   zh-TW\r
     00.\r
@@ -7144,7 +7144,7 @@ unit-width-narrow integer-width/##00 decimal-always
 unit-width-full-name integer-width/##00 decimal-always\r
   es-MX\r
     00.\r
-    1827.3645\r
+    1,827.3645\r
     -00.22222\r
   zh-TW\r
     00.\r
@@ -7438,7 +7438,7 @@ unit-width-full-name sign-accounting-except-zero decimal-always
 precision-integer rounding-mode-floor integer-width/##00\r
   es-MX\r
     00\r
-    1827\r
+    1,827\r
     -01\r
   zh-TW\r
     00\r
@@ -7452,7 +7452,7 @@ precision-integer rounding-mode-floor integer-width/##00
 .000 rounding-mode-floor integer-width/##00\r
   es-MX\r
     00.000\r
-    1827.364\r
+    1,827.364\r
     -00.223\r
   zh-TW\r
     00.000\r
@@ -7466,7 +7466,7 @@ precision-integer rounding-mode-floor integer-width/##00
 .##/@@@+ rounding-mode-floor integer-width/##00\r
   es-MX\r
     00\r
-    1827.36\r
+    1,827.36\r
     -00.223\r
   zh-TW\r
     00\r
@@ -7480,7 +7480,7 @@ precision-integer rounding-mode-floor integer-width/##00
 @@ rounding-mode-floor integer-width/##00\r
   es-MX\r
     00.0\r
-    1000\r
+    1,000\r
     -00.23\r
   zh-TW\r
     00.0\r
@@ -7774,7 +7774,7 @@ precision-integer rounding-mode-floor decimal-always
 precision-integer integer-width/##00 scale/0.5\r
   es-MX\r
     00\r
-    5914\r
+    5,914\r
     -00\r
   zh-TW\r
     00\r
@@ -7788,7 +7788,7 @@ precision-integer integer-width/##00 scale/0.5
 .000 integer-width/##00 scale/0.5\r
   es-MX\r
     00.000\r
-    5913.682\r
+    5,913.682\r
     -00.111\r
   zh-TW\r
     00.000\r
@@ -7802,7 +7802,7 @@ precision-integer integer-width/##00 scale/0.5
 .##/@@@+ integer-width/##00 scale/0.5\r
   es-MX\r
     00\r
-    5913.68\r
+    5,913.68\r
     -00.111\r
   zh-TW\r
     00\r
@@ -7816,7 +7816,7 @@ precision-integer integer-width/##00 scale/0.5
 @@ integer-width/##00 scale/0.5\r
   es-MX\r
     00.0\r
-    6000\r
+    6,000\r
     -00.11\r
   zh-TW\r
     00.0\r
@@ -7886,7 +7886,7 @@ precision-integer integer-width/##00 group-on-aligned
 precision-integer integer-width/##00 latin\r
   es-MX\r
     00\r
-    1827\r
+    1,827\r
     -00\r
   zh-TW\r
     00\r
@@ -7900,7 +7900,7 @@ precision-integer integer-width/##00 latin
 .000 integer-width/##00 latin\r
   es-MX\r
     00.000\r
-    1827.364\r
+    1,827.364\r
     -00.222\r
   zh-TW\r
     00.000\r
@@ -7914,7 +7914,7 @@ precision-integer integer-width/##00 latin
 .##/@@@+ integer-width/##00 latin\r
   es-MX\r
     00\r
-    1827.36\r
+    1,827.36\r
     -00.222\r
   zh-TW\r
     00\r
@@ -7928,7 +7928,7 @@ precision-integer integer-width/##00 latin
 @@ integer-width/##00 latin\r
   es-MX\r
     00.0\r
-    2000\r
+    2,000\r
     -00.22\r
   zh-TW\r
     00.0\r
@@ -7942,7 +7942,7 @@ precision-integer integer-width/##00 latin
 precision-integer integer-width/##00 sign-accounting-except-zero\r
   es-MX\r
     00\r
-    +1827\r
+    +1,827\r
     00\r
   zh-TW\r
     00\r
@@ -7956,7 +7956,7 @@ precision-integer integer-width/##00 sign-accounting-except-zero
 .000 integer-width/##00 sign-accounting-except-zero\r
   es-MX\r
     00.000\r
-    +1827.364\r
+    +1,827.364\r
     -00.222\r
   zh-TW\r
     00.000\r
@@ -7970,7 +7970,7 @@ precision-integer integer-width/##00 sign-accounting-except-zero
 .##/@@@+ integer-width/##00 sign-accounting-except-zero\r
   es-MX\r
     00\r
-    +1827.36\r
+    +1,827.36\r
     -00.222\r
   zh-TW\r
     00\r
@@ -7984,7 +7984,7 @@ precision-integer integer-width/##00 sign-accounting-except-zero
 @@ integer-width/##00 sign-accounting-except-zero\r
   es-MX\r
     00.0\r
-    +2000\r
+    +2,000\r
     -00.22\r
   zh-TW\r
     00.0\r
@@ -7998,7 +7998,7 @@ precision-integer integer-width/##00 sign-accounting-except-zero
 precision-integer integer-width/##00 decimal-always\r
   es-MX\r
     00.\r
-    1827.\r
+    1,827.\r
     -00.\r
   zh-TW\r
     00.\r
@@ -8012,7 +8012,7 @@ precision-integer integer-width/##00 decimal-always
 .000 integer-width/##00 decimal-always\r
   es-MX\r
     00.000\r
-    1827.364\r
+    1,827.364\r
     -00.222\r
   zh-TW\r
     00.000\r
@@ -8026,7 +8026,7 @@ precision-integer integer-width/##00 decimal-always
 .##/@@@+ integer-width/##00 decimal-always\r
   es-MX\r
     00.\r
-    1827.36\r
+    1,827.36\r
     -00.222\r
   zh-TW\r
     00.\r
@@ -8040,7 +8040,7 @@ precision-integer integer-width/##00 decimal-always
 @@ integer-width/##00 decimal-always\r
   es-MX\r
     00.0\r
-    2000.\r
+    2,000.\r
     -00.22\r
   zh-TW\r
     00.0\r
@@ -8614,7 +8614,7 @@ precision-integer sign-accounting-except-zero decimal-always
 rounding-mode-floor integer-width/##00 scale/0.5\r
   es-MX\r
     00\r
-    5913.68225\r
+    5,913.68225\r
     -00.11111\r
   zh-TW\r
     00\r
@@ -8642,7 +8642,7 @@ rounding-mode-floor integer-width/##00 group-on-aligned
 rounding-mode-floor integer-width/##00 latin\r
   es-MX\r
     00\r
-    1827.3645\r
+    1,827.3645\r
     -00.22222\r
   zh-TW\r
     00\r
@@ -8656,7 +8656,7 @@ rounding-mode-floor integer-width/##00 latin
 rounding-mode-floor integer-width/##00 sign-accounting-except-zero\r
   es-MX\r
     00\r
-    +1827.3645\r
+    +1,827.3645\r
     -00.22222\r
   zh-TW\r
     00\r
@@ -8670,7 +8670,7 @@ rounding-mode-floor integer-width/##00 sign-accounting-except-zero
 rounding-mode-floor integer-width/##00 decimal-always\r
   es-MX\r
     00.\r
-    1827.3645\r
+    1,827.3645\r
     -00.22222\r
   zh-TW\r
     00.\r
@@ -8838,7 +8838,7 @@ integer-width/##00 scale/0.5 group-on-aligned
 integer-width/##00 scale/0.5 latin\r
   es-MX\r
     00\r
-    5913.68225\r
+    5,913.68225\r
     -00.11111\r
   zh-TW\r
     00\r
@@ -8852,7 +8852,7 @@ integer-width/##00 scale/0.5 latin
 integer-width/##00 scale/0.5 sign-accounting-except-zero\r
   es-MX\r
     00\r
-    +5913.68225\r
+    +5,913.68225\r
     -00.11111\r
   zh-TW\r
     00\r
@@ -8866,7 +8866,7 @@ integer-width/##00 scale/0.5 sign-accounting-except-zero
 integer-width/##00 scale/0.5 decimal-always\r
   es-MX\r
     00.\r
-    5913.68225\r
+    5,913.68225\r
     -00.11111\r
   zh-TW\r
     00.\r
@@ -8922,7 +8922,7 @@ integer-width/##00 group-on-aligned decimal-always
 integer-width/##00 latin sign-accounting-except-zero\r
   es-MX\r
     00\r
-    +1827.3645\r
+    +1,827.3645\r
     -00.22222\r
   zh-TW\r
     00\r
@@ -8936,7 +8936,7 @@ integer-width/##00 latin sign-accounting-except-zero
 integer-width/##00 latin decimal-always\r
   es-MX\r
     00.\r
-    1827.3645\r
+    1,827.3645\r
     -00.22222\r
   zh-TW\r
     00.\r
@@ -8950,7 +8950,7 @@ integer-width/##00 latin decimal-always
 integer-width/##00 sign-accounting-except-zero decimal-always\r
   es-MX\r
     00.\r
-    +1827.3645\r
+    +1,827.3645\r
     -00.22222\r
   zh-TW\r
     00.\r
index e82642e..ba4e1ed 100644 (file)
 <data>\\r
 •Doctor with a D. •As in, Ph.D., you know.•</data>\r
 \r
+# ICU-21459 logic error.\r
+<locale en@ss=standard>\r
+<sent>\r
+<data>•on. •But after a day in the arena sun, the metal feels hot enough to blister my hands.•</data>\r
+\r
 # same as root (unless some exceptions are added!)\r
 <locale tfg@ss=standard>\r
 <sent>\r
index fcc19b3..62d6060 100644 (file)
 #\r
 "(?w)\b"                     v2     "äää<0></0> äää"\r
 \r
+# Bug ICU-21492 Assertion failure with nested look-around expressions.\r
+#\r
+"(?<=(?:(?<=(?:(?<=(?:(?<=)){2})){3})){4}"   E  "<0></0>"  # orig failure from bug report, w mismatched parens.\r
+"(?:(?<=(?:(?<=)){2}))"            "<0></0>"               # Simplified case, with a valid pattern.\r
+\r
 #  Random debugging, Temporary\r
 #\r
 \r
index c2fa5cc..7191b4e 100644 (file)
@@ -13,8 +13,8 @@
 root\r
 {\r
     Version { 44.0 }\r
-    ExpectCLDRVersionAtLeast { 38.1 } // 'base' cldr version. Allow up to version =.=.* of this\r
-    CurrentCLDRVersion { 38.1 } // Current CLDR version as of the test update. Warn if not an exact match.\r
+    ExpectCLDRVersionAtLeast { 39.0 } // 'base' cldr version. Allow up to version =.=.* of this\r
+    CurrentCLDRVersion { 39.0 } // Current CLDR version as of the test update. Warn if not an exact match.\r
 \r
     ShortLanguage { xxx }\r
 \r
index 6c485fa..39cb8a8 100644 (file)
@@ -6,11 +6,10 @@
 // * Corporation and others.  All Rights Reserved.\r
 // *\r
 // ***************************************************************************\r
-// This is a pristine locale structure.\r
+// This is a pristine locale structure. It is manually maintained.\r
 // This is used to validate all keys and general structure is correct.\r
 // Since ICU doesn't follow the traditional fallback model where all keys fallback to root,\r
 // root can't be used to validate the structure.\r
-// This file was generated from en.txt, and all ".*" were replaced with "".\r
 structLocale:table(nofallback){\r
     %%Parent{""}\r
     BreakDictionaryData:bin {00}\r
@@ -107,11 +106,13 @@ structLocale:table(nofallback){
         CY{""}\r
         CZ{""}\r
         DE{""}\r
+        DG{""}\r
         DJ{""}\r
         DK{""}\r
         DM{""}\r
         DO{""}\r
         DZ{""}\r
+        EA{""}\r
         EC{""}\r
         EE{""}\r
         EG{""}\r
@@ -150,6 +151,7 @@ structLocale:table(nofallback){
         HR{""}\r
         HT{""}\r
         HU{""}\r
+        IC{""}\r
         ID{""}\r
         IE{""}\r
         IL{""}\r
@@ -296,6 +298,7 @@ structLocale:table(nofallback){
         VU{""}\r
         WF{""}\r
         WS{""}\r
+        XK{""}\r
         YE{""}\r
         YT{""}\r
         ZA{""}\r
@@ -5806,7 +5809,6 @@ structLocale:table(nofallback){
         mn{""}\r
         mnc{""}\r
         mni{""}\r
-        mo{""}\r
         moh{""}\r
         mos{""}\r
         mr{""}\r
@@ -5964,7 +5966,6 @@ structLocale:table(nofallback){
         sv{""}\r
         sw{""}\r
         swb{""}\r
-        swc{""}\r
         syc{""}\r
         syr{""}\r
         szl{""}\r
@@ -5983,7 +5984,6 @@ structLocale:table(nofallback){
         tk{""}\r
         tkl{""}\r
         tkr{""}\r
-        tl{""}\r
         tlh{""}\r
         tli{""}\r
         tly{""}\r
@@ -14367,6 +14367,22 @@ structLocale:table(nofallback){
             }\r
         }\r
         minimalPairs{\r
+            case{\r
+                accusative{""}\r
+                dative{""}\r
+                genitive{""}\r
+                instrumental{""}\r
+                locative{""}\r
+                nominative{""}\r
+                vocative{""}\r
+            }\r
+            gender {\r
+                common{""}\r
+                feminine{""}\r
+                inanimate{""}\r
+                masculine{""}\r
+                neuter{""}\r
+            }\r
             ordinal{\r
                 zero{""}\r
                 one{""}\r
index c3cb625..8d48ddd 100644 (file)
@@ -53,7 +53,7 @@
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\..\$(IcuBinOutputDir)\icutest68d.exe</OutputFile>\r
+      <OutputFile>..\..\..\$(IcuBinOutputDir)\icutest69d.exe</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\..\$(IcuLibOutputDir)\icutestd.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>.\..\..\..\$(IcuLibOutputDir)\icutestd.lib</ImportLibrary>\r
       <AdditionalDependencies>icuucd.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
@@ -66,7 +66,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\..\$(IcuBinOutputDir)\icutest68.exe</OutputFile>\r
+      <OutputFile>..\..\..\$(IcuBinOutputDir)\icutest69.exe</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\..\$(IcuLibOutputDir)\icutest.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>.\..\..\..\$(IcuLibOutputDir)\icutest.lib</ImportLibrary>\r
       <AdditionalDependencies>icuuc.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
index 3acd8d6..f142238 100644 (file)
@@ -265,7 +265,7 @@ UBool UPerfTest::run(){
         return runTest();\r
     }\r
     UBool res=FALSE;\r
-    // Test only the specified fucntion\r
+    // Test only the specified function\r
     for (int i = 1; i < _remainingArgc; ++i) {\r
         if (_argv[i][0] != '-') {\r
             char* name = (char*) _argv[i];\r
index 212dcae..0df8d39 100644 (file)
@@ -45,7 +45,7 @@
 \r
 /* STRING_STORE_SIZE + TAG_STORE_SIZE <= ((2^16 - 1) * 2)\r
  That is the maximum size for the string stores combined\r
- because the strings are index at 16-bit boundries by a\r
+ because the strings are indexed at 16-bit boundaries by a\r
  16-bit index, and there is only one section for the \r
  strings.\r
  */\r
index 4f63bb9..6f777d8 100644 (file)
@@ -92,17 +92,18 @@ int32_t ExtraData::writeNoNoMapping(UChar32 c, const Norm &norm,
                                     Hashtable &previousMappings) {\r
     UnicodeString newMapping;\r
     int32_t offset=writeMapping(c, norm, newMapping);\r
-    int32_t previousOffset=previousMappings.geti(newMapping);\r
-    if(previousOffset!=0) {\r
+    UBool found=false;\r
+    int32_t previousOffset=previousMappings.getiAndFound(newMapping, found);\r
+    if(found) {\r
         // Duplicate, point to the identical mapping that has already been stored.\r
-        offset=previousOffset-1;\r
+        offset=previousOffset;\r
     } else {\r
         // Append this new mapping and\r
         // enter it into the hashtable, avoiding value 0 which is "not found".\r
         offset=dataString.length()+offset;\r
         dataString.append(newMapping);\r
-        IcuToolErrorCode errorCode("gennorm2/writeExtraData()/Hashtable.puti()");\r
-        previousMappings.puti(newMapping, offset+1, errorCode);\r
+        IcuToolErrorCode errorCode("gennorm2/writeExtraData()/Hashtable.putiAllowZero()");\r
+        previousMappings.putiAllowZero(newMapping, offset, errorCode);\r
     }\r
     return offset;\r
 }\r
index 4e7e39d..e18b772 100644 (file)
@@ -1191,7 +1191,7 @@ realParseTable(ParseState* state, TableResource *table, char *tag, uint32_t star
 \r
         if (token == TOK_CLOSE_BRACE)\r
         {\r
-            if (!readToken) {\r
+            if (!readToken && isVerbose()) {\r
                 warning(startline, "Encountered empty table");\r
             }\r
             return table;\r
index a0ec2b1..4f4380e 100644 (file)
@@ -78,7 +78,7 @@ trim(UChar *src, int32_t srcLen, UErrorCode *status){
 U_CFUNC int32_t \r
 removeCmtText(UChar* source, int32_t srcLen, UErrorCode* status){\r
     srcLen = trim(source, srcLen, status);\r
-    UnicodeString patString("^\\s*?\\*\\s*?");  // remove pattern like " * " at the begining of the line\r
+    UnicodeString patString("^\\s*?\\*\\s*?");  // remove pattern like " * " at the beginning of the line\r
     srcLen = removeText(source, srcLen, patString, UREGEX_MULTILINE, UnicodeString(), status);\r
     return removeText(source, srcLen, UnicodeString("[ \\r\\n]+"), 0, UnicodeString(" "), status);// remove new lines;\r
 }\r
index f9574e3..d230501 100644 (file)
@@ -340,7 +340,8 @@ IntResource::~IntResource() {}
 IntVectorResource::IntVectorResource(SRBRoot *bundle, const char *tag,\r
                   const UString* comment, UErrorCode &errorCode)\r
         : SResource(bundle, tag, URES_INT_VECTOR, comment, errorCode),\r
-          fCount(0), fArray(new uint32_t[RESLIST_MAX_INT_VECTOR]) {\r
+          fCount(0), fSize(RESLIST_INT_VECTOR_INIT_SIZE),\r
+          fArray(new uint32_t[fSize]) {\r
     if (fArray == NULL) {\r
         errorCode = U_MEMORY_ALLOCATION_ERROR;\r
         return;\r
@@ -352,6 +353,17 @@ IntVectorResource::~IntVectorResource() {
 }\r
 \r
 void IntVectorResource::add(int32_t value, UErrorCode &errorCode) {\r
+    if (fCount == fSize) {\r
+        uint32_t* tmp = new uint32_t[2 * fSize];\r
+        if (tmp == nullptr) {\r
+            errorCode = U_MEMORY_ALLOCATION_ERROR;\r
+            return;\r
+        }\r
+        uprv_memcpy(tmp, fArray, fSize * sizeof(uint32_t));\r
+        delete[] fArray;\r
+        fArray = tmp;\r
+        fSize *= 2;\r
+    }\r
     if (U_SUCCESS(errorCode)) {\r
         fArray[fCount++] = value;\r
     }\r
index 6b5b59e..77f7cef 100644 (file)
@@ -21,7 +21,7 @@
 #define RESLIST_H\r
 \r
 #define KEY_SPACE_SIZE 65536\r
-#define RESLIST_MAX_INT_VECTOR 2048\r
+#define RESLIST_INT_VECTOR_INIT_SIZE 2048\r
 \r
 #include <functional>\r
 \r
@@ -405,7 +405,8 @@ public:
     virtual void handleWrite(UNewDataMemory *mem, uint32_t *byteOffset);\r
 \r
     // TODO: UVector32\r
-    uint32_t fCount;\r
+    size_t fCount;\r
+    size_t fSize;\r
     uint32_t *fArray;\r
 };\r
 \r
index 3754b1b..e109902 100644 (file)
@@ -20,6 +20,14 @@ This is prerequisite for the icu layoutex (Paragraph Layout) project, which is s
     cd icu4c/source\r
     svn export https://github.com/behdad/icu-le-hb/trunk/src layout\r
 \r
+(As an alternative to the above handling of layout engine header files, you can do the following:\r
+1. In the Makefile in this directory, temporarily delete $(LEX) from the list of objects for LIBS\r
+   before running make install-header\r
+2. After running make install-header, restore the deleted $(LEX) in the Makefile\r
+3. Then when comparing the old urename.h to the newly generated one, copy all of the lines beginning\r
+   "#define pl_" from the old version to the new one.\r
+ - Peter E)\r
+\r
 - Regenerate urename.h\r
 \r
     cd icu4c/source/tools/genren\r
index 2c2ebce..6af3bdd 100644 (file)
@@ -74,7 +74,7 @@
       <TypeLibraryName>.\..\..\..\lib\icutu.tlb</TypeLibraryName>\r
     </Midl>\r
     <Link>\r
-      <OutputFile>..\..\..\bin\icutu68.dll</OutputFile>\r
+      <OutputFile>..\..\..\bin\icutu69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\..\lib\icutu.pdb</ProgramDatabaseFile>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
@@ -86,7 +86,7 @@
       <TypeLibraryName>.\..\..\..\lib\icutud.tlb</TypeLibraryName>\r
     </Midl>\r
     <Link>\r
-      <OutputFile>..\..\..\bin\icutu68d.dll</OutputFile>\r
+      <OutputFile>..\..\..\bin\icutu69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\..\lib\icutud.pdb</ProgramDatabaseFile>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
       <WholeProgramOptimization>true</WholeProgramOptimization>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\..\bin64\icutu68.dll</OutputFile>\r
+      <OutputFile>..\..\..\bin64\icutu69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\..\lib64\icutu.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\..\lib64\icutu.lib</ImportLibrary>\r
     </Link>\r
       <TypeLibraryName>.\..\..\..\lib64\icutud.tlb</TypeLibraryName>\r
     </Midl>\r
     <Link>\r
-      <OutputFile>..\..\..\bin64\icutu68d.dll</OutputFile>\r
+      <OutputFile>..\..\..\bin64\icutu69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\..\lib64\icutud.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\..\lib64\icutud.lib</ImportLibrary>\r
     </Link>\r
       <TypeLibraryName>..\..\..\libARM\icutu.tlb</TypeLibraryName>\r
     </Midl>\r
     <Link>\r
-      <OutputFile>..\..\..\binARM\icutu68.dll</OutputFile>\r
+      <OutputFile>..\..\..\binARM\icutu69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\..\libARM\icutu.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\..\libARM\icutu.lib</ImportLibrary>\r
     </Link>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\..\binARM\icutu68d.dll</OutputFile>\r
+      <OutputFile>..\..\..\binARM\icutu69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\..\libARM\icutud.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\..\libARM\icutud.lib</ImportLibrary>\r
     </Link>\r
       <TypeLibraryName>.\..\..\..\libARM64\icutu.tlb</TypeLibraryName>\r
     </Midl>\r
     <Link>\r
-      <OutputFile>..\..\..\binARM64\icutu68.dll</OutputFile>\r
+      <OutputFile>..\..\..\binARM64\icutu69.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\..\libARM64\icutu.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\..\libARM64\icutu.lib</ImportLibrary>\r
     </Link>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>..\..\..\binARM64\icutu68d.dll</OutputFile>\r
+      <OutputFile>..\..\..\binARM64\icutu69d.dll</OutputFile>\r
       <ProgramDatabaseFile>.\..\..\..\libARM64\icutud.pdb</ProgramDatabaseFile>\r
       <ImportLibrary>..\..\..\libARM64\icutud.lib</ImportLibrary>\r
     </Link>\r
index 626e01c..f783b3f 100644 (file)
@@ -531,14 +531,14 @@ ucbuf_open(const char* fileName,const char** cp,UBool showWarning, UBool buffere
 \r
 \r
 /* TODO: this method will fail if at the\r
- * begining of buffer and the uchar to unget\r
+ * beginning of buffer and the uchar to unget\r
  * is from the previous buffer. Need to implement\r
  * system to take care of that situation.\r
  */\r
 U_CAPI void U_EXPORT2\r
 ucbuf_ungetc(int32_t c,UCHARBUF* buf){\r
     /* decrement currentPos pointer\r
-     * if not at the begining of buffer\r
+     * if not at the beginning of buffer\r
      */\r
     if(buf->currentPos!=buf->buffer){\r
         if(*(buf->currentPos-1)==c){\r
@@ -736,7 +736,7 @@ ucbuf_readline(UCHARBUF* buf,int32_t* len,UErrorCode* err){
                 }\r
             }\r
             /*\r
-             * Accoding to TR 13 readLine functions must interpret\r
+             * According to TR 13 readLine functions must interpret\r
              * CR, CR+LF, LF, NEL, PS, LS or FF as line seperators\r
              */\r
             /* Windows CR LF */\r
index f0ce45e..9f554fc 100644 (file)
@@ -49,7 +49,7 @@ struct  ULine {
  * Opens the UCHARBUF with the given file stream and code page for conversion\r
  * @param fileName  Name of the file to open.\r
  * @param codepage  The encoding of the file stream to convert to Unicode.\r
- *                  If *codepoge is NULL on input the API will try to autodetect\r
+ *                  If *codepage is NULL on input the API will try to autodetect\r
  *                  popular Unicode encodings\r
  * @param showWarning Flag to print out warnings to STDOUT\r
  * @param buffered  If TRUE performs a buffered read of the input file. If FALSE reads\r
index 8a943da..6d0ef14 100644 (file)
@@ -79,7 +79,7 @@ UXMLParser::UXMLParser(UErrorCode &status) :
       //       or      "<!DOCTYPE foo [internal dtd]>\r
       //    TODO:  we don't actually parse the DOCTYPE or internal subsets.\r
       //           Some internal dtd subsets could confuse this simple-minded\r
-      //           attempt at skipping over them, specifically, occcurences\r
+      //           attempt at skipping over them, specifically, occurrences\r
       //           of closeing square brackets.  These could appear in comments, \r
       //           or in parameter entity declarations, for example.\r
       mXMLDoctype(UnicodeString(\r
@@ -243,7 +243,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
                 UnicodeString attValue = mAttrValue.group(2, errorCode);\r
 \r
                 // Trim the quotes from the att value.  These are left over from the original regex\r
-                //   that parsed the attribue, which couldn't conveniently strip them.\r
+                //   that parsed the attribute, which couldn't conveniently strip them.\r
                 attValue.remove(0,1);                    // one char from the beginning\r
                 attValue.truncate(attValue.length()-1);  // and one from the end.\r
 \r
@@ -498,7 +498,7 @@ UXMLParser::createElement(RegexMatcher  &mEl, UErrorCode &status) {
         UnicodeString attValue = mAttrValue.group(2, status);\r
 \r
         // Trim the quotes from the att value.  These are left over from the original regex\r
-        //   that parsed the attribue, which couldn't conveniently strip them.\r
+        //   that parsed the attribute, which couldn't conveniently strip them.\r
         attValue.remove(0,1);                    // one char from the beginning\r
         attValue.truncate(attValue.length()-1);  // and one from the end.\r
         \r
@@ -658,7 +658,7 @@ UXMLParser::intern(const UnicodeString &s, UErrorCode &errorCode) {
         return (const UnicodeString *)he->key.pointer;\r
     } else {\r
         // add this new name and return its hashed key pointer\r
-        fNames.puti(s, 0, errorCode);\r
+        fNames.puti(s, 1, errorCode);\r
         he=fNames.find(s);\r
         return (const UnicodeString *)he->key.pointer;\r
     }\r
index d7b8b3f..65e26c7 100644 (file)
@@ -40,7 +40,7 @@ typedef unsigned char ICUZoneinfoVersion;
 #define ICU_TZ_RESOURCE_OLD "zoneinfo"\r
 #define ICU_TZ_RESOURCE "zoneinfo64"\r
 \r
-/* File containinng custom zone-region mapping. */\r
+/* File containing custom zone-region mapping. */\r
 #define ICU_REGIONS "icuregions"\r
 \r
 #endif\r
index 1d5b4fe..4ac7431 100644 (file)
@@ -2564,7 +2564,7 @@ outzone(const struct zone * const zpfirst, const int zonecount)
                                         * because the previous type is valid until the first\r
                                         * transition defined by the final rule.  Otherwise\r
                                         * we may see unexpected offset shift at the\r
-                                        * begining of the year when the final rule takes\r
+                                        * beginning of the year when the final rule takes\r
                                         * effect.\r
                                         *\r
                                         * Note: This may results some 64bit second transitions\r